{"version":3,"sources":["./src/app/score.service.ts","./src/app/admin-future-dates-calendar/admin-future-dates-calendar.component.html","./src/app/admin-future-dates-calendar/admin-future-dates-calendar.component.ts","./src/app/grid.service.ts","./src/app/password.service.ts","./src/app/myspace/myspace.component.html","./src/app/myspace/myspace.component.ts","./src/app/score/score.component.ts","./src/app/score/score.component.html","./src/app/table-design-grid/table-design-grid.component.html","./src/app/table-design-grid/table-design-grid.component.ts","./src/app/high-score-input/high-score-input.component.ts","./src/app/high-score-input/high-score-input.component.html","./src/app/home/home.component.ts","./src/app/home/home.component.html","./src/app/customer-reservations/customer-reservations.component.ts","./src/app/customer-reservations/customer-reservations.component.html","./src/environments/environment.ts","./src/app/menu.service.ts","./src/app/admin-reservation-grid/admin-reservation-grid.component.html","./src/app/admin-reservation-grid/admin-reservation-grid.component.ts","./src/app/high-score.service.ts","./src/app/reservation-failed/reservation-failed.component.ts","./src/app/reservation-failed/reservation-failed.component.html","./src/app/menu-buttons/menu-buttons.component.ts","./src/app/menu-buttons/menu-buttons.component.html","./src/app/beverage/beverage.component.ts","./src/app/beverage/beverage.component.html","./src/app/brevo.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/menu/menu.component.html","./src/app/menu/menu.component.ts","./src/app/admin/admin.component.html","./src/app/admin/admin.component.ts","./src/app/new-event-input/new-event-input.component.ts","./src/app/new-event-input/new-event-input.component.html","./src/app/app.module.ts","./src/app/game-over/game-over.component.ts","./src/app/game-over/game-over.component.html","./src/app/table-reservation-grid/table-reservation-grid.component.html","./src/app/table-reservation-grid/table-reservation-grid.component.ts","./src/app/menu-cards/menu-cards.component.ts","./src/app/menu-cards/menu-cards.component.html","./src/app/page-state.service.ts","./src/app/url.service.ts","./src/app/frog-game/frog-game.component.html","./src/app/frog-game/frog-game.component.ts","./src/app/reservation.service.ts","./src/app/our-story-book/our-story-book.component.ts","./src/app/our-story-book/our-story-book.component.html","./src/app/future-dates-calendar/future-dates-calendar.component.ts","./src/app/future-dates-calendar/future-dates-calendar.component.html","./src/app/future-events.service.ts","./src/app/auth.guard.ts","./src/app/high-scores/high-scores.component.ts","./src/app/high-scores/high-scores.component.html","./src/app/myspice-nav-bar/myspice-nav-bar.component.html","./src/app/myspice-nav-bar/myspice-nav-bar.component.ts","./src/app/app-routing.module.ts","./src/app/login/login.component.ts","./src/app/login/login.component.html","./src/app/start-game/start-game.component.ts","./src/app/start-game/start-game.component.html","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScoreService {\n\n score: number;\n\n constructor() { }\n}\n","
\n

{{ event.name }}

\n
\n {{ date.date }}\n

\n
\n
\n \n
\n
\n
\n

{{ reservation.customerName }}

\n Email: {{ reservation.customerEmail }}\n
\n
\n
\n
\n
","import { Component, HostListener, OnInit } from '@angular/core';\nimport { FutureEventsService } from '../future-events.service';\nimport { ReservationService } from '../reservation.service';\n\n@Component({\n selector: 'app-admin-future-dates-calendar',\n templateUrl: './admin-future-dates-calendar.component.html',\n styleUrls: ['./admin-future-dates-calendar.component.css']\n})\nexport class AdminFutureDatesCalendarComponent implements OnInit {\n events: any[];\n reservations: any[];\n dateId: number;\n squares: any[];\n openReservation: boolean;\n openReservationDateId: number;\n gridStyle: any;\n reservationsStyle: any;\n\n constructor(private eventsService: FutureEventsService, private reservationService: ReservationService) { }\n\n openReservations(dateId: number) {\n this.dateId = dateId;\n this.openReservation = false;\n this.eventsService.getFutureDateById(dateId).subscribe((data: any) => {\n this.squares = data.squares;\n this.openReservation = true;\n });\n this.reservationService.getReservationsByDate(dateId).subscribe((data: any) => {\n this.reservations = data;\n })\n }\n\n setGridStyle() {\n this.gridStyle.float = \"left\";\n this.gridStyle.width = \"50%\";\n }\n\n setReservationsStyle() {\n let aspectRatio = window.innerWidth/window.innerHeight;\n this.reservationsStyle.textAlign = \"left\";\n this.reservationsStyle.fontSize = window.innerHeight * 1/80 + \"px\";\n if (aspectRatio < 0.75) {\n this.reservationsStyle.fontSize = window.innerWidth * 1/60 + \"px\";\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setReservationsStyle();\n }\n\n ngOnInit(): void {\n this.events = [];\n this.reservations = [];\n this.gridStyle = {};\n this.reservationsStyle = {};\n this.openReservation = false;\n\n this.eventsService.getFutureEvents().subscribe((data: any[]) => {\n this.events = this.eventsService.sortFutureDates(data);\n });\n\n this.setReservationsStyle();\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GridService {\n numRows = 10;\n numCols = 9;\n\n constructor() { }\n}\n","import { Injectable } from '@angular/core';\nimport * as bcrypt from 'bcryptjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PasswordService {\n private sR = 10;\n public isAuthenticated = false;\n\n hashPassword(password:string): Promise {\n return bcrypt.hash(password, this.sR);\n }\n\n comparePasswords(plainPassword: string, hashedPassword: string): Promise {\n return bcrypt.compare(plainPassword, hashedPassword);\n }\n\n constructor() { }\n}\n","\n
\n \"Dancing\n \"Dancing\n \"Dancing\n \"Dancing\n \"Dancing\n \"Dancing\n
\n
\n
\n
\n
\n

{{ profileName }}

\n \"Profile\n

Mood: hungry

\n
\n
\n

She/Rimp

\n

30 years old

\n

Philadelphia

\n

United States

\n
\n
\n \n
\n

Contact {{ profileName }}

\n

Email: BossHog@ScampiPhilly.com

\n

Instagram: @Scampi_Philly

\n

Funsite: lizlaugh.love

\n

Address: 617 S Third Street, Philadelphia, PA 19147

\n
\n
\n\t
\n
\n

{{ profileName }} is {{ profileName }}

\n
\n \n
\n

{{ profileName }}'s Blurbs:

\n

About Me:

\n

Owner and head chef of Couch Cafe.
Running on caffeine and the bit.

I got two shrimps inside me...
and they won't stop COOKIN'

\n

Who I'd Like to Meet:

\n

Matty Matheson

\n
\n\n
\n
\n

{{ profileName }}'s Top Friends:

\n
\n
\n
\n \"{{\n

{{ friend.name }}

\n
\n
\n
\n
\n
\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-myspace',\n templateUrl: './myspace.component.html',\n styleUrls: ['./myspace.component.css']\n})\nexport class MyspaceComponent implements OnInit {\n profileName: string = \"Ol' Liz\";\n\n friends = [\n { name: 'Scena', image: '/assets/TopFriends_Scena.PNG' },\n { name: 'Ryan', image: '/assets/TopFriends_Ryan.PNG' },\n { name: 'Seth', image: '/assets/TopFriends_Seth.PNG' },\n { name: 'Dearest Media', image: '/assets/TopFriends_DM.PNG' },\n ]\n\n constructor() { }\n\n ngOnInit(): void {\n document.getElementById('copyLink').addEventListener('click', function(event) {\n // Prevent default link behavior\n event.preventDefault();\n \n // Get the text to copy\n var textToCopy = this.textContent || this.innerText;\n \n // Create a temporary textarea element\n var textarea = document.createElement('textarea');\n textarea.value = textToCopy;\n \n // Make sure the textarea is not displayed\n textarea.style.position = 'fixed';\n textarea.style.left = '-9999px';\n \n // Append the textarea to the document\n document.body.appendChild(textarea);\n \n // Select and copy the text\n textarea.select();\n document.execCommand('copy');\n \n // Remove the textarea from the document\n document.body.removeChild(textarea);\n \n // Optionally, provide some feedback to the user\n alert('Text copied to clipboard: ' + textToCopy);\n });\n }\n\n}\n","import { Component, OnInit, HostListener, NgZone, ChangeDetectorRef } from '@angular/core';\nimport { PageStateService } from '../page-state.service';\nimport { ScoreService } from '../score.service';\nimport { windowToggle } from 'rxjs/operators';\n\n@Component({\n selector: 'app-score',\n templateUrl: './score.component.html',\n styleUrls: ['./score.component.css']\n})\nexport class ScoreComponent implements OnInit {\n\n scoreStyle: any;\n\n constructor(public score: ScoreService, private state: PageStateService, private ngZone: NgZone, private cdr: ChangeDetectorRef) { }\n\n setScoreStyle() {\n var textShadow = window.innerWidth * 0.65/512;\n this.scoreStyle.left = window.innerWidth * 210/512 + \"px\";\n this.scoreStyle.top = window.innerWidth * 225/512 + \"px\";\n this.scoreStyle.fontSize = window.innerWidth * 9/512 + \"px\";\n\n if (window.innerWidth/window.innerHeight < 0.65) {\n let isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || (navigator.userAgent.includes(\"Macintosh\") && navigator.maxTouchPoints > 1);\n\n if (isMobile) {\n this.scoreStyle.left = window.innerWidth * 185/306 + \"px\";\n this.scoreStyle.top = window.innerWidth * 370/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.scoreStyle.fontSize = window.innerWidth * 10/306 + \"px\";\n textShadow = window.innerWidth * 0.65/306;\n }\n } else if (window.innerWidth/window.innerHeight < 0.95) {\n this.scoreStyle.left = window.innerWidth * 65/512 + \"px\";\n this.scoreStyle.top = window.innerWidth * 357/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.scoreStyle.fontSize = window.innerWidth * 10/306 + \"px\";\n textShadow = window.innerWidth * 0.65/306;\n\n } else if (window.innerWidth/window.innerHeight < 1.12) {\n this.scoreStyle.left = window.innerWidth * 90/512 + \"px\";\n this.scoreStyle.top = window.innerHeight * 225/320 + \"px\";\n this.scoreStyle.fontSize = window.innerHeight * 9/320 + \"px\";\n textShadow = window.innerHeight * 0.65/320;\n } else if (window.innerWidth/window.innerHeight < 1.44) {\n this.scoreStyle.left = window.innerWidth * 175/512 - this.state.getLeftCutoff() + \"px\";\n this.scoreStyle.top = window.innerHeight * 225/320 + \"px\";\n this.scoreStyle.fontSize = window.innerHeight * 9/320 + \"px\";\n textShadow = window.innerHeight * 0.65/320;\n } else if (this.state.isNarrow()) {\n this.scoreStyle.left = window.innerHeight * 210/320 - this.state.getLeftCutoff() + \"px\";\n this.scoreStyle.top = window.innerHeight * 225/320 + \"px\";\n this.scoreStyle.fontSize = window.innerHeight * 9/320 + \"px\";\n textShadow = window.innerHeight * 0.65/320;\n }\n\n\n this.scoreStyle.textShadow = '-' + textShadow + 'px -' + textShadow + 'px 0 #000, ' + textShadow + 'px -' + textShadow + 'px 0 #000, -' + textShadow + 'px ' + textShadow + 'px 0 #000, ' + textShadow + 'px ' + textShadow + 'px 0 #000';\n }\n\n getScore() {\n this.cdr.detectChanges();\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.getScore()));\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setScoreStyle();\n }\n\n ngOnInit(): void {\n this.scoreStyle = {};\n\n this.setScoreStyle();\n this.getScore();\n }\n\n}\n","
\n","\n
\n
\n \n \n \n \n \n
\n
\n \n
\n \n
\n

\n
\n Number of Chairs: {{ chairCount }}\n
\n
\n
\n","import { Component, ElementRef, HostListener, Input, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { GridService } from '../grid.service';\n\nenum ButtonType {\n Empty,\n Table,\n ChairAvailable,\n ChairReserved,\n Disabled\n}\n\n@Component({\n selector: 'app-table-design-grid',\n templateUrl: './table-design-grid.component.html',\n styleUrls: ['./table-design-grid.component.css']\n})\nexport class TableDesignGridComponent implements OnInit {\n @Input() grid: ButtonType[][] = [];\n numRows: number;\n numCols: number;\n chairCount = 0;\n selectedOption: ButtonType = ButtonType.Empty;\n gridContainerStyle: any;\n gridStyle: any;\n buttonStyle: any;\n optionStyle: any;\n optionButtonStyle: any;\n @Input() date: Date;\n\n constructor(private gridService: GridService) { \n this.numRows = this.gridService.numRows;\n this.numCols = this.gridService.numCols;\n this.gridContainerStyle = {};\n this.gridStyle = {};\n this.buttonStyle = {};\n this.optionStyle = {};\n this.optionButtonStyle = {};\n }\n\n ngOnInit(): void {\n this.initializeGrid();\n }\n\n initializeGrid() {\n this.getGridContainerStyles();\n this.getGridStyles();\n this.getButtonStyles();\n this.getOptionStyles();\n this.getOptionButtonStyles();\n if (this.grid.length === 0) {\n for (let i = 0; i < this.numRows; i++) {\n this.grid[i] = [];\n for (let j = 0; j < this.numCols; j++) {\n if (i > 1 || j < 2) {\n this.grid[i][j] = ButtonType.Empty;\n } else {\n this.grid[i][j] = ButtonType.Disabled;\n }\n }\n }\n } \n }\n\n onButtonClick(row: number, col: number) {\n if (this.selectedOption === ButtonType.ChairReserved || this.selectedOption === ButtonType.ChairAvailable) {\n this.chairCount++;\n }\n if (this.grid[row][col] === ButtonType.ChairReserved || this.grid[row][col] === ButtonType.ChairAvailable) {\n this.chairCount--;\n }\n if (this.grid[row][col] !== ButtonType.Disabled) {\n this.grid[row][col] = this.selectedOption;\n }\n \n }\n\n selectOption(selection: number) {\n switch (selection) {\n case 1:\n this.selectedOption = ButtonType.Empty;\n break;\n case 2:\n this.selectedOption = ButtonType.Table;\n break;\n case 3:\n this.selectedOption = ButtonType.ChairReserved;\n break;\n case 4:\n this.selectedOption = ButtonType.ChairAvailable;\n break;\n default:\n this.selectedOption = ButtonType.Empty;\n }\n }\n\n isOptionSelected(button: number) {\n switch (button) {\n case 1:\n return this.selectedOption === ButtonType.Empty;\n case 2:\n return this.selectedOption === ButtonType.Table;\n case 3:\n return this.selectedOption === ButtonType.ChairReserved;\n case 4:\n return this.selectedOption === ButtonType.ChairAvailable;\n default:\n return false;\n }\n }\n\n getButtonClass(button: ButtonType): string {\n switch (button) {\n case ButtonType.Empty:\n return 'empty';\n case ButtonType.Table:\n return 'table';\n case ButtonType.ChairAvailable:\n case ButtonType.ChairReserved:\n return 'chair';\n case ButtonType.Disabled:\n return 'disabled';\n default:\n return '';\n }\n }\n\n getButtonText(button: ButtonType): string {\n // switch (button) {\n // case ButtonType.Empty:\n // return 'E';\n // case ButtonType.Table:\n // return 'T';\n // case ButtonType.Chair:\n // return 'C';\n // default:\n // return '';\n // }\n return '';\n }\n\n getGridContainerStyles() {\n this.gridContainerStyle.width = window.innerWidth * 262/512 + \"px\";\n this.gridContainerStyle.height = window.innerWidth * 202/512 + \"px\";\n this.gridContainerStyle.left = window.innerWidth * 30/512 + \"px\";\n }\n\n getGridStyles() {\n this.gridStyle.width = window.innerWidth * 180/512 + \"px\";\n this.gridStyle.left = window.innerWidth * 81/512 + \"px\";\n this.gridStyle.top = window.innerWidth * 1/512 + \"px\";\n }\n\n getButtonStyles() {\n this.buttonStyle.width = window.innerWidth * 20/512 + \"px\";\n this.buttonStyle.height = window.innerWidth * 20/512 + \"px\";\n }\n\n getButtonImage(row: number, col: number) {\n let buttonStyleImage = this.buttonStyle;\n if (this.grid[row][col] === ButtonType.ChairAvailable) {\n if (row > 0 && this.grid[row - 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Up.PNG)`;\n } else if (row < this.numRows - 1 && this.grid[row + 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Down.PNG)`;\n } else if (col > 0 && this.grid[row][col - 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Left.PNG)`;\n } else if (col < this.numCols - 1 && this.grid[row][col + 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Right.PNG)`;\n } else { \n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Left.PNG)`;\n }\n } else if (this.grid[row][col] === ButtonType.ChairReserved) {\n if (row > 0 && this.grid[row - 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Up.PNG)`;\n } else if (row < this.numRows - 1 && this.grid[row + 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Down.PNG)`;\n } else if (col > 0 && this.grid[row][col - 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Left.PNG)`;\n } else if (col < this.numCols - 1 && this.grid[row][col + 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Right.PNG)`;\n } else { \n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Left.PNG)`;\n }\n } else if (this.grid[row][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/Table.PNG)`;\n } else if (this.grid[row][col] === ButtonType.Empty) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/EmptySquare.PNG)`;\n } else if (this.grid[row][col] === ButtonType.Disabled) {\n buttonStyleImage.backgroundImage = \"none\";\n }\n \n return buttonStyleImage;\n }\n\n getOptionStyles() {\n this.optionStyle.left = window.innerWidth * 135/512 + \"px\";\n this.optionStyle.top = window.innerWidth * 5/512 + \"px\";\n this.optionStyle.width = window.innerWidth * 124/512 + \"px\";\n }\n \n getOptionButtonStyles () {\n this.optionButtonStyle.height = window.innerWidth * 20/512 + \"px\";\n this.optionButtonStyle.width = this.optionButtonStyle.height;\n this.optionButtonStyle.marginRight = window.innerWidth * 11/512 + \"px\";\n }\n\n public getGrid() {\n return this.grid;\n }\n\n public displayInputGrid(grid: any[][]) {\n this.grid = grid;\n }\n\n public resetGrid() {\n this.grid = [];\n this.initializeGrid();\n }\n\n public setDate(date: any) {\n this.date = date;\n }\n\n public getGridJsonObject(): any {\n const date = {\n date: this.date,\n soldOut: false,\n squares: []\n }\n let square;\n for (let i = 0; i < this.numRows; i++){\n for (let j = 0; j < this.numCols; j++) {\n switch (this.grid[i][j]) {\n case ButtonType.Table:\n square = {\n row: i,\n column: j,\n type: 'T',\n reserved: false\n };\n date.squares.push(square);\n break;\n case ButtonType.ChairAvailable:\n square = {\n row: i,\n column: j,\n type: 'O',\n reserved: false\n };\n date.squares.push(square);\n break;\n case ButtonType.ChairReserved:\n square = {\n row: i,\n column: j,\n type: 'C',\n reserved: true\n };\n date.squares.push(square);\n break;\n default:\n break;\n }\n }\n }\n return date;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.initializeGrid();\n }\n\n}\n","import { HashLocationStrategy } from '@angular/common';\nimport { debugOutputAstAsTypeScript } from '@angular/compiler';\nimport { Component, OnInit, HostListener, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { HighScoreService } from '../high-score.service';\nimport { PageStateService } from '../page-state.service';\nimport { ScoreService } from '../score.service';\n\n@Component({\n selector: 'app-high-score-input',\n templateUrl: './high-score-input.component.html',\n styleUrls: ['./high-score-input.component.css']\n})\nexport class HighScoreInputComponent implements OnInit {\n\n @Output() notifyParent: EventEmitter = new EventEmitter();\n\n inputHeight: number;\n inputWidth: number;\n inputTop: number;\n inputLeft: number;\n lineHeight: number;\n fontSize: string;\n textShadow: number;\n\n caretStyle: any;\n\n constructor(private highScoreService: HighScoreService, private scoreService: ScoreService, private state: PageStateService, private cdr: ChangeDetectorRef) { }\n\n setInputDivSize() {\n this.inputHeight = window.innerWidth * 16/512;\n this.inputWidth = window.innerWidth * 40/512;\n this.inputLeft = window.innerWidth * 285/512;\n this.inputTop = window.innerWidth * 172/512;\n this.lineHeight = window.innerWidth * 15/512;\n this.fontSize = window.innerWidth * 8/512 + \"px\"; \n this.textShadow = window.innerWidth * 0.75/512;\n \n // caret style\n this.caretStyle.width = window.innerWidth * 1.5/512 + \"px\";\n this.caretStyle.height = window.innerWidth * 10/512 + \"px\";\n this.caretStyle.left = window.innerWidth * 130/512 + \"px\";\n\n if (window.innerWidth/window.innerHeight < 0.95) {\n this.inputHeight = window.innerWidth * 16/306 ;\n this.inputWidth = window.innerWidth * 40/306 ;\n this.inputLeft = window.innerWidth * 50/306 ; \n // this.inputTop = window.innerWidth * 170/306 ;\n this.inputTop = window.innerWidth * 300/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff();\n this.lineHeight = window.innerWidth * 15/306 ;\n this.fontSize = window.innerWidth * 9 /306 + \"px\"; \n \n // caret style\n this.caretStyle.width = window.innerWidth * 1.5/306 + \"px\";\n this.caretStyle.height = window.innerWidth * 10/306 + \"px\";\n this.caretStyle.left = window.innerWidth * 145/306 + \"px\";\n // this.textShadow = window.innerHeight * 0.75/320;\n\n } else if (this.state.isNarrow()) {\n this.inputHeight = window.innerHeight * 16/320;\n this.inputWidth = window.innerHeight * 40/320;\n this.inputLeft = window.innerHeight * 165/320 - this.state.getLeftCutoff();\n this.inputTop = window.innerHeight * 170/320;\n this.lineHeight = window.innerHeight * 15/320;\n this.fontSize = window.innerHeight * 9 /320 + \"px\";\n\n // caret style\n this.caretStyle.width = window.innerHeight * 1.5/320 + \"px\";\n this.caretStyle.height = window.innerHeight * 10/320 + \"px\";\n this.caretStyle.left = window.innerHeight * 145/320 + \"px\";\n // this.textShadow = window.innerHeight * 0.75/320;\n }\n\n // console.log(this.caretStyle.left);\n\n //this.caretStyle.top = this.inputTop + \"px\";\n }\n\n submitScore(event) {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const score = {\n name: input.value,\n score: this.scoreService.score\n };\n\n this.highScoreService.postHighScore(score).subscribe(() => {\n this.highScoreService.setHighScores();\n this.notifyParent.emit();\n });\n }\n\n inputBackspace(event) {\n const input = event.target as HTMLInputElement;\n\n if (input.value.length > 1 && input.value.length < 5) {\n this.caretStyle.left = parseFloat(this.caretStyle.left) - 2.10*parseInt(this.fontSize,10) + \"px\";\n this.cdr.detectChanges();\n } else if (input.value.length > 0) {\n this.caretStyle.left = parseFloat(this.caretStyle.left) - 1.05*parseInt(this.fontSize,10) + \"px\";\n this.cdr.detectChanges();\n }\n }\n\n onClick(event: MouseEvent) {\n // this.notifyParent.emit(); \n const nameInput = document.getElementById(\"name\");\n nameInput.focus();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setInputDivSize();\n }\n\n ngOnInit(): void {\n this.caretStyle = {};\n this.caretStyle.position = \"absolute\";\n\n this.setInputDivSize();\n\n const nameInput = document.getElementById(\"name\");\n\n nameInput.addEventListener(\"input\", (event) => {\n const input = event.target as HTMLInputElement;\n const maxLength = 4;\n const currentValue = input.value;\n const currentLength = currentValue.length;\n const lastCharacter = currentValue.charAt(currentLength - 1);\n \n if (currentLength > maxLength) {\n // remove the last character from the input\n input.value = currentValue.substring(0, currentLength - 2);\n input.value += lastCharacter;\n } else if (lastCharacter === \" \") {\n // remove spaces from the end of the input\n input.value = currentValue.trim();\n } else if (lastCharacter.match(/^[a-zA-Z0-9]$/)){\n this.caretStyle.left = parseFloat(this.caretStyle.left) + 1.05*parseInt(this.fontSize,10) + \"px\";\n this.cdr.detectChanges();\n } else {\n input.value = currentValue.substring(0, currentLength - 1);\n }\n });\n\n nameInput.focus();\n }\n\n}\n","
\n \n \n
\n
\n Press ENTER to Submit\n
\n","import { Component, OnInit, ChangeDetectorRef, HostListener, Renderer2 } from '@angular/core';\nimport { PageStateService, PageState } from '../page-state.service'\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.css']\n})\nexport class HomeComponent implements OnInit {\n counterStyle: any;\n counterTopStyle: any;\n backgroundImage: string;\n backgroundPosition: string;\n\n public PageState = PageState;\n\n constructor(public state: PageStateService, private cdr: ChangeDetectorRef, private renderer: Renderer2){}\n\n chooseBackgroundImage() {\n let aspectRatio = window.innerWidth/window.innerHeight;\n if (this.state.currentState === PageState.ABOUT) { \n this.backgroundImage = `url(\"assets/AboutUsBackground.PNG\")`;\n } else if (aspectRatio < 0.95) {\n this.counterStyle.visibility = \"visible\";\n this.counterTopStyle.visibility = \"visible\";\n this.backgroundImage = `url(\"assets/kitchen/NewKitchenBase.PNG\")`;\n this.counterStyle.backgroundImage = `url(\"assets/kitchen/KitchenCounter.PNG\")`;\n this.counterStyle.backgroundSize = window.innerWidth*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px auto\";\n this.counterTopStyle.backgroundImage = `url(\"assets/kitchen/CounterTop.PNG\")`;\n this.counterTopStyle.width = window.innerWidth * 299/306 + \"px\";\n this.counterTopStyle.height = window.innerWidth * 56/306 + \"px\";\n this.counterTopStyle.top = window.innerWidth * 276/306*(1 + 0.22*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.counterTopStyle.left = window.innerWidth * 3/306 + \"px\";\n // this.backgroundPosition = \"center \" + -100*(1 - (window.innerHeight*window.innerWidth/306 - 306)/356)/662 * window.innerHeight;\n if ((window.innerHeight/window.innerWidth*306 - 306)/356 < 1) {\n this.backgroundPosition = \"center \" + -this.state.getTopCutoff() + \"px\";\n this.counterStyle.backgroundPosition = \"center \" + -this.state.getCounterTopCutoff() + \"px\";\n } else {\n this.backgroundPosition = \"top\";\n this.counterStyle.backgroundSize = window.innerHeight*1.2*306/662 + \"px auto\";\n this.counterStyle.backgroundPosition = \"center \" + window.innerHeight*-0.45*126/662 + \"px\";\n }\n } else {\n this.counterStyle.visibility = \"hidden\";\n this.counterTopStyle.visibility = \"hidden\";\n if (aspectRatio < 1.44) {\n this.backgroundImage = `url(\"assets/kitchen/Kitchen_24_Narrow.PNG\")`\n } else {\n this.backgroundImage = `url(\"assets/kitchen/Kitchen_24.PNG\")`;\n }\n // this.backgroundImage = `url(\"assets/kitchen/Kitchen_24.PNG\")`;\n \n if (this.state.isNarrow()) {\n this.backgroundPosition = -this.state.getLeftCutoff() + \"px top\";\n } else {\n this.backgroundPosition = \"top\";\n }\n \n }\n this.cdr.detectChanges();\n }\n\n getTextShadow() {\n // const body = this.renderer.selectRootElement('body');\n // var shadowSize = window.innerWidth * 2/512;\n // if (window.innerWidth/window.innerHeight < 0.95) {\n // shadowSize = window.innerWidth * 2/306;\n // } else if (this.state.isNarrow()) {\n // shadowSize = window.innerHeight * 2/320;\n // }\n // console.log(shadowSize);\n // this.renderer.setStyle(body, 'text-shadow', `-${shadowSize}px -${shadowSize}px 0 #fff, ${shadowSize}px -${shadowSize}px 0 #fff, -${shadowSize}px ${shadowSize}px 0 #fff, ${shadowSize}px ${shadowSize}px 0 #fff`);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.chooseBackgroundImage();\n this.getTextShadow();\n }\n\n ngOnInit() {\n this.counterStyle = {};\n this.counterTopStyle = {};\n this.chooseBackgroundImage();\n this.state.getCurrentStateObservable().subscribe(state => {\n this.chooseBackgroundImage();\n this.cdr.detectChanges();\n });\n }\n\n}\n","
\n \n \n \n \n \n \n \n \n
\n
\n","import { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FutureEventsService } from '../future-events.service';\nimport { ReservationService } from '../reservation.service';\nimport { TableReservationGridComponent } from '../table-reservation-grid/table-reservation-grid.component';\nimport { catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\n@Component({\n selector: 'app-customer-reservations',\n templateUrl: './customer-reservations.component.html',\n styleUrls: ['./customer-reservations.component.css']\n})\nexport class CustomerReservationsComponent implements OnInit {\n dateId: number;\n eventInfo: any;\n eventDate: any;\n reservationForm: FormGroup;\n gridStyle: any;\n formStyle: any;\n inputStyle: any;\n buttonStyle: any;\n selectedSeats: any[];\n seatCount: number;\n seatReserved: boolean;\n reservationFailed: boolean;\n\n @ViewChild(TableReservationGridComponent) tableDesignGridComponent: TableReservationGridComponent;\n\n constructor(private route: ActivatedRoute, private eventsService: FutureEventsService, private formBuilder: FormBuilder, private reservationService: ReservationService, private router: Router) {\n this.seatReserved = false;\n this.reservationFailed = false;\n }\n\n saveReservation() {\n if (this.reservationForm.valid && this.selectedSeats && this.selectedSeats.length > 0) {\n const reservationFormData = this.reservationForm.value;\n let reservation = {\n customerName: reservationFormData.customerName,\n customerEmail: reservationFormData.customerEmail,\n seats: this.selectedSeats,\n paid: false,\n date: {\n id: this.eventDate.id,\n date: this.eventDate.date,\n soldOut: this.eventDate.soldOut\n }\n };\n // console.log(reservation);\n this.reservationService.submitReservation(reservation).pipe(\n catchError((error) => {\n // Handle errors here\n console.error('Error during reservation:', error);\n return of('Reservation failed');\n })\n ).subscribe((response) => {\n if (response === 'Reservation failed') {\n this.reservationFailed = true;\n this.getEventData();\n setTimeout(() => {\n this.tableDesignGridComponent.initializeGrid();\n }, 2000);\n } else {\n this.seatReserved = true;\n }\n });\n } else {\n console.log(\"form invalid\");\n this.reservationFailed = true;\n }\n }\n\n goHome() {\n this.router.navigate(['/']);\n }\n\n setGridStyle() {\n var aspectRatio = window.innerWidth / window.innerHeight;\n this.gridStyle.position = \"fixed\";\n this.gridStyle.height = window.innerHeight * 101/512 + \"px\";\n this.gridStyle.width = window.innerWidth * 131/512 + \"px\";\n this.gridStyle.left = window.innerWidth * 20/512 + \"px\";\n this.gridStyle.top = window.innerHeight/2 - window.innerWidth * 101/512 + \"px\";\n if (aspectRatio < 0.84) {\n this.gridStyle.left = window.innerWidth * 45/512 + \"px\";\n this.gridStyle.top = window.innerWidth * 35/512 + \"px\";\n }\n }\n\n setFormStyle() {\n var aspectRatio = window.innerWidth / window.innerHeight;\n this.formStyle.position = \"fixed\";\n this.formStyle.textAlign = \"left\";\n this.formStyle.fontSize = window.innerWidth * 4/512 + \"px\";\n this.formStyle.lineHeight = window.innerWidth * 6.8/512 + \"px\";\n this.formStyle.height = window.innerHeight * 3/4 + \"px\";\n this.formStyle.width = window.innerWidth * 175/512 + \"px\";\n this.formStyle.left = window.innerWidth * 305/512 + \"px\";\n this.formStyle.top = window.innerHeight/2 - window.innerWidth * 101/512 + \"px\";\n if (aspectRatio < 0.84) {\n this.formStyle.left = window.innerWidth * 45/512 + \"px\";\n this.formStyle.width = 8/5 * window.innerWidth * 262/512 + \"px\";\n this.formStyle.fontSize = 7/5 * window.innerHeight * 4/512 + \"px\";\n this.formStyle.lineHeight = 7/5 * window.innerHeight * 6.3/512 + \"px\";\n this.formStyle.top = 7/5 * window.innerWidth * 202/512 + window.innerWidth * 45/512 + \"px\";\n }\n }\n\n setInputStyle() {\n let aspectRatio = window.innerWidth/window.innerHeight;\n this.inputStyle.padding = window.innerWidth * 2/512 + \"px\";\n this.inputStyle.width = window.innerWidth * 100/512 + \"px\";\n this.inputStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n this.inputStyle.fontSize = window.innerWidth * 3/512 + \"px\";\n if (aspectRatio < 0.84) {\n this.inputStyle.padding = window.innerHeight * 2/512 + \"px\";\n this.inputStyle.width = window.innerHeight * 100/512 + \"px\";\n this.inputStyle.borderWidth = window.innerHeight * 1/512 + \"px\";\n this.inputStyle.fontSize = window.innerHeight * 5/512 + \"px\";\n }\n }\n\n setButtonStyle() {\n let aspectRatio = window.innerWidth/window.innerHeight;\n this.buttonStyle.fontSize = window.innerWidth * 3/512 + \"px\";\n // this.buttonStyle.height = window.innerWidth * 7/512 + \"px\";\n this.buttonStyle.padding = window.innerWidth * 1.5/512 + \"px\";\n this.buttonStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n if (aspectRatio < 0.84) {\n this.buttonStyle.fontSize = window.innerHeight * 3/306 + \"px\";\n // this.buttonStyle.height = window.innerWidth * 7/306 + \"px\";\n this.buttonStyle.padding = window.innerHeight * 1.5/306 + \"px\";\n this.buttonStyle.borderWidth = window.innerHeight * 1/306 + \"px\";\n }\n }\n\n setStyles() {\n this.setGridStyle();\n this.setFormStyle();\n this.setInputStyle();\n this.setButtonStyle();\n }\n\n getSeatCount() {\n this.selectedSeats = this.tableDesignGridComponent.getSelectedSeats();\n this.seatCount = this.selectedSeats.length;\n }\n\n getEventData() {\n this.eventsService.getFutureDateById(this.dateId).subscribe((data: any) => {\n this.eventDate = data;\n this.eventInfo = {\n name: data.event.name,\n price: data.event.price,\n date: this.eventsService.formatDateWithoutTimeZone(data.date),\n squares: data.squares\n };\n });\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n this.getSeatCount();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setStyles();\n }\n\n ngOnInit(): void {\n this.reservationForm = this.formBuilder.group({\n customerName: [null, Validators.required],\n customerEmail: [null, Validators.required],\n seats: this.formBuilder.array([])\n });\n\n this.gridStyle = {};\n this.formStyle = {};\n this.inputStyle = {};\n this.buttonStyle = {};\n\n this.route.params.subscribe(params => {\n this.dateId = params['dateId'];\n });\n\n this.getEventData();\n this.setStyles();\n this.getSeatCount();\n }\n\n}\n","\n
\n \n
\n \n
\n
\n
\n
\n

Reservation for {{ eventInfo.name }}

\n

{{ eventInfo.date }}

\n House Rules:

\n 1. No reservations will be held until Venmo payment is received with a couch emoji to @elizabeth-grothe

\n 2. Any cancellations must be made 48 hours in advance for a refund. If you and your party are more than 30 minutes late, your reservation may be terminated.

\n 3. Remember that this is not a restaurant, it is a dinner party at my home. Come with an open mind and be ready for a good time!\n

\n \n \n

\n \n \n

\n Seats Selected: {{ seatCount ? seatCount : 0 }}\n

\n Total: ${{ seatCount ? seatCount * eventInfo.price : 0 }} (${{ eventInfo.price }} per seat)\n

\n ...\n \n
\n
\n
\n
\n Congratulations! Your reservation has been confirmed pending payment.

\n \n
\n\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MenuService {\n\n private pastMenus: string[] = [\"assets/menus/Menu_3.PNG\", \"assets/menus/Menu_4.PNG\", \"assets/menus/Menu_5.PNG\", \"assets/menus/Menu_1.PNG\", \"assets/menus/Menu_2.PNG\", \"assets/menus/Menu_6.PNG\", \"assets/menus/Menu_7.PNG\", \"assets/menus/Menu_8.PNG\",\"assets/menus/Menu_9.PNG\",\"assets/menus/Menu_10.PNG\",\"assets/menus/Menu_11.PNG\",\"assets/menus/Menu_12.PNG\",\"assets/menus/Bologna.PNG\",\"assets/menus/SevenFishes.PNG\",\"assets/menus/Roma.PNG\",\"assets/menus/Firenze.PNG\"];\n\n constructor() { }\n\n getPastMenus() {\n return this.pastMenus;\n }\n}\n","
\n \n
\n \n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { GridService } from '../grid.service';\n\nenum ButtonType {\n Empty,\n Table,\n AvailableChair,\n SelectedChair,\n PendingChair,\n ReservedChair\n}\n\n@Component({\n selector: 'app-admin-reservation-grid',\n templateUrl: './admin-reservation-grid.component.html',\n styleUrls: ['./admin-reservation-grid.component.css']\n})\nexport class AdminReservationGridComponent implements OnInit {\n @Input() squares: any[];\n grid: any[][] = [];\n numRows: number;\n numCols: number;\n selectedSeat: any;\n\n constructor(private gridService: GridService) { \n this.numRows = this.gridService.numRows;\n this.numCols = this.gridService.numCols;\n }\n\n initializeGrid() {\n for (let i = 0; i < this.numRows; i++) {\n this.grid[i] = [];\n for (let j = 0; j < this.numCols; j++) {\n this.grid[i][j] = {\n type: ButtonType.Empty\n }\n }\n }\n for (let i = 0; i < this.squares.length; i++) {\n switch (this.squares[i].type) {\n case 'O':\n this.grid[this.squares[i].row][this.squares[i].column].type = ButtonType.AvailableChair;\n break;\n case 'T':\n this.grid[this.squares[i].row][this.squares[i].column].type = ButtonType.Table;\n break;\n case 'C':\n this.grid[this.squares[i].row][this.squares[i].column] = {\n type: ButtonType.ReservedChair,\n reservation:this.squares[i].reservation\n };\n break;\n case 'P':\n this.grid[this.squares[i].row][this.squares[i].column] = {\n type: ButtonType.PendingChair,\n reservation:this.squares[i].reservation\n };\n break;\n }\n }\n }\n\n getButtonClass(button: ButtonType): string {\n switch (button) {\n case ButtonType.Empty:\n return 'empty';\n case ButtonType.Table:\n return 'table';\n case ButtonType.AvailableChair:\n return 'chair-available';\n case ButtonType.PendingChair:\n return 'chair-pending';\n case ButtonType.SelectedChair:\n return 'chair-selected';\n case ButtonType.ReservedChair:\n return 'chair-reserved';\n default:\n return '';\n }\n }\n\n getButtonText(button: any): string {\n switch (button.type) {\n case ButtonType.PendingChair:\n case ButtonType.SelectedChair:\n case ButtonType.ReservedChair:\n return 'R';\n default:\n return '';\n }\n }\n\n getButtonClickable(i: number, j: number): boolean {\n return (this.grid[i][j].type === ButtonType.AvailableChair || this.grid[i][j].type === ButtonType.SelectedChair);\n }\n\n onButtonClick(i: number, j: number) {\n\n }\n\n ngOnInit(): void {\n this.initializeGrid();\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { HighScoresComponent } from './high-scores/high-scores.component';\nimport { UrlService } from './url.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HighScoreService {\n baseUrl: string;\n endpoint: string;\n\n private highScoreComponent: HighScoresComponent;\n\n constructor(private http: HttpClient, private urlService: UrlService) { \n this.baseUrl = this.urlService.getBaseUrl();\n this.endpoint = \"/CouchCafe/api/highscores\";\n }\n\n registerHighScoresComponent(component: HighScoresComponent) {\n this.highScoreComponent = component;\n }\n\n public getHighScores() {\n // const headers = new HttpHeaders({\n // 'Content-Type': 'application/json',\n // 'Access-Control-Allow-Origin': '*'\n // });\n // return this.http.get(this.baseUrl + this.endpoint, { headers });\n return this.http.get(this.baseUrl + this.endpoint, { });\n }\n\n public setHighScores() {\n this.highScoreComponent.setHighScoreText();\n }\n\n public postHighScore(highScore: any) {\n return this.http.post(this.baseUrl + this.endpoint, highScore, {});\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'app-reservation-failed',\n templateUrl: './reservation-failed.component.html',\n styleUrls: ['./reservation-failed.component.css'],\n animations: [\n trigger('fadeAnimation', [\n transition(':enter', [\n style({ opacity: 0 }),\n animate('1s ease-in-out', style({ opacity: 1 })),\n ]),\n transition(':leave', [\n animate('1s ease-in-out', style({ opacity: 0 })),\n ]),\n ]),\n ]\n})\nexport class ReservationFailedComponent implements OnInit {\n @Input() isVisible: boolean = true;\n @Output() isVisibleChange = new EventEmitter();\n errorStyle: any;\n\n constructor() { }\n\n setErrorStyle() {\n this.errorStyle.width = window.innerWidth * 150/512 + \"px\";\n // this.errorStyle.height = window.innerWidth * 20/512 + \"px\";\n this.errorStyle.padding = window.innerWidth * 8/512 + \"px\";\n this.errorStyle.fontSize = window.innerWidth * 4/512 + \"px\";\n this.errorStyle.lineHeight = window.innerWidth * 8/512 + \"px\";\n this.errorStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n }\n\n ngOnInit(): void {\n this.errorStyle = {};\n this.setErrorStyle();\n\n setTimeout(() => {\n this.isVisible = false;\n this.isVisibleChange.emit(this.isVisible);\n }, 5000);\n }\n\n}\n","
There was an error completing your reservation. Please enter all fields, select your seats and try again!
>\n","import { Component, OnInit, HostListener, NgZone, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {PageStateService, PageState } from '../page-state.service'\n\n@Component({\n selector: 'app-menu-buttons',\n templateUrl: './menu-buttons.component.html',\n styleUrls: ['./menu-buttons.component.css']\n})\nexport class MenuButtonsComponent implements OnInit {\n\n public PageState = PageState;\n\n futureDatesStyle: any;\n pastMenusStyle: any;\n aboutUsStyle: any;\n myspiceStyle: any;\n backgroundStyle: any;\n\n backgroundChecked: boolean;\n\n kitchenFutureMouseOver: string[] = ['assets/kitchen/FutureDates_2.PNG', 'assets/kitchen/FutureDates_3.PNG', 'assets/kitchen/FutureDates_4.PNG'];\n kitchenFutureMouseOverImgs: any[] = [];\n kitchenFutureMouseOut: string[] = ['assets/kitchen/FutureDates.PNG', 'assets/kitchen/FutureDates_6.PNG', 'assets/kitchen/FutureDates_7.PNG'];\n kitchenFutureMouseOutImgs: any[] = [];\n kitchenFutureClicked: string = 'assets/kitchen/FutureDates_clicked.PNG';\n kitchenPastMouseOver: string[] = [\"assets/kitchen/PastMenus_2.PNG\", \"assets/kitchen/PastMenus_3.PNG\"];\n kitchenPastMouseOverImgs: any[] = [];\n kitchenPastMouseOut: string[] = [\"assets/kitchen/PastMenus.PNG\", \"assets/kitchen/PastMenus_5.PNG\"];\n kitchenPastMouseOutImgs: any[] = [];\n kitchenStoryMouseOver: string[] = [\"assets/kitchen/OurStory_2.PNG\", \"assets/kitchen/OurStory_3.PNG\", \"assets/kitchen/OurStory_4.PNG\"];\n kitchenStoryMouseOverImgs: any[] = [];\n kitchenStoryMouseOut: string[] = [\"assets/kitchen/OurStory.PNG\", \"assets/kitchen/OurStory_6.PNG\", \"assets/kitchen/OurStory_7.PNG\"];\n kitchenStoryMouseOutImgs: any[] = [];\n kitchenMyspiceMouseOver: string[] = [\"assets/kitchen/myspice_1.PNG\", \"assets/kitchen/myspice_2.PNG\", \"assets/kitchen/myspice_3.PNG\", \"assets/kitchen/myspice_4.PNG\", \"assets/kitchen/myspice_5.PNG\", \"assets/kitchen/myspice_6.PNG\"];\n kitchenMyspiceMouseOverImgs: any[] = [];\n kitchenMyspiceMouseOut: string[] = [\"assets/kitchen/myspice.PNG\", \"assets/kitchen/myspice_mo_1.PNG\", \"assets/kitchen/myspice_mo_2.PNG\", \"assets/kitchen/myspice_mo_3.PNG\", \"assets/kitchen/myspice_mo_4.PNG\", \"assets/kitchen/myspice_mo_5.PNG\"];\n kitchenMyspiceMouseOutImgs: any[] = [];\n kitchenMyspiceClicked: string = 'assets/kitchen/myspice_clicked.PNG';\n\n isFutureMouseOverRunning: boolean = false;\n isFutureMouseOutRunning: boolean = false;\n isFutureHovered: boolean = false;\n isPastMouseOverRunning: boolean = false;\n isPastMouseOutRunning: boolean = false;\n isPastHovered: boolean = false;\n isMyspiceMouseOverRunning: boolean = false;\n isMyspiceMouseOutRunning: boolean = false;\n isMyspiceHovered: boolean = false;\n\n currentStoryMouseOverImage: number;\n currentStoryMouseOutImage: number;\n currentMenuMouseOverImage: number;\n currentMenuMouseOutImage: number;\n currentDateMouseOverImage: number;\n currentDateMouseOutImage: number;\n currentMyspiceMouseOverImage: number;\n currentMyspiceMouseOutImage: number;\n\n isMobile: boolean;\n\n constructor(private ngZone: NgZone, private cdr: ChangeDetectorRef, private state: PageStateService, private router: Router) { }\n\n setButtonSizes() {\n this.backgroundStyle.height = window.innerHeight + \"px\";\n this.backgroundStyle.width = window.innerWidth + \"px\";\n var aspectRatio = window.innerWidth / window.innerHeight;\n var narrow = aspectRatio < 512/320;\n let leftCutoff = this.state.getLeftCutoff();\n if (narrow) {\n this.futureDatesStyle.width = window.innerHeight * 53/320 + \"px\";\n this.futureDatesStyle.height = window.innerHeight * 96/320 + \"px\";\n this.futureDatesStyle.left = window.innerHeight * 63/320 - leftCutoff + \"px\";\n this.futureDatesStyle.top = window.innerHeight * 34/320 + \"px\";\n this.pastMenusStyle.width = window.innerHeight * 62/320 + \"px\";\n this.pastMenusStyle.height = window.innerHeight * 102/320 + \"px\";\n this.pastMenusStyle.left = window.innerHeight * 144/320 - leftCutoff + \"px\";\n this.pastMenusStyle.top = window.innerHeight * 57/320 + \"px\";\n this.aboutUsStyle.width = window.innerHeight * 37/320 + \"px\";\n this.aboutUsStyle.height = window.innerHeight * 89/320 + \"px\";\n this.aboutUsStyle.left = window.innerHeight * 362/320 - leftCutoff + \"px\";\n this.aboutUsStyle.top = window.innerHeight * 6/320 + \"px\";\n this.myspiceStyle.width = window.innerHeight * 96/320 + \"px\";\n this.myspiceStyle.height = window.innerHeight * 24/320 + \"px\";\n this.myspiceStyle.left = window.innerHeight * 265/320 - leftCutoff + \"px\";\n this.myspiceStyle.top = window.innerHeight * 94/320 + \"px\";\n } else {\n this.futureDatesStyle.width = window.innerWidth * 53/512 + \"px\";\n this.futureDatesStyle.height = window.innerWidth * 96/512 + \"px\";\n this.futureDatesStyle.left = window.innerWidth * 63/512 + \"px\";\n this.futureDatesStyle.top = window.innerWidth * 34/512 + \"px\";\n this.pastMenusStyle.width = window.innerWidth * 62/512 + \"px\";\n this.pastMenusStyle.height = window.innerWidth * 102/512 + \"px\";\n this.pastMenusStyle.left = window.innerWidth * 144/512 + \"px\";\n this.pastMenusStyle.top = window.innerWidth * 57/512 + \"px\";\n this.aboutUsStyle.width = window.innerWidth * 37/512 + \"px\";\n this.aboutUsStyle.height = window.innerWidth * 89/512 + \"px\";\n this.aboutUsStyle.left = window.innerWidth * 362/512 + \"px\";\n this.aboutUsStyle.top = window.innerWidth * 6/512 + \"px\";\n this.myspiceStyle.width = window.innerWidth * 96/512 + \"px\";\n this.myspiceStyle.height = window.innerWidth * 24/512 + \"px\";\n this.myspiceStyle.left = window.innerWidth * 265/512 + \"px\";\n this.myspiceStyle.top = window.innerWidth * 94/512 + \"px\";\n }\n if (aspectRatio < 1.12) {\n this.futureDatesStyle.width = window.innerWidth * 216/512 + \"px\";\n this.futureDatesStyle.height = window.innerWidth * 76/512 + \"px\";\n this.futureDatesStyle.left = window.innerWidth * 20/320 + \"px\";\n this.futureDatesStyle.top = window.innerHeight * 260/320 + \"px\";\n this.kitchenFutureMouseOver = ['assets/kitchen/FutureDatesWide_2.PNG', 'assets/kitchen/FutureDatesWide_3.PNG', 'assets/kitchen/FutureDatesWide_4.PNG'];\n this.kitchenFutureMouseOut = ['assets/kitchen/FutureDatesWide.PNG', 'assets/kitchen/FutureDatesWide_6.PNG', 'assets/kitchen/FutureDatesWide_7.PNG'];\n this.kitchenFutureClicked = 'assets/kitchen/FutureDatesWide_5.PNG';\n this.futureDatesStyle.backgroundImage = `url(assets/kitchen/FutureDatesWide.PNG)`;\n for (let i = 0; i < this.kitchenFutureMouseOver.length; i++) {\n this.kitchenFutureMouseOverImgs[i] = new Image();\n this.kitchenFutureMouseOverImgs[i].src = this.kitchenFutureMouseOver[i];\n }\n for (let i = 0; i < this.kitchenFutureMouseOut.length; i++) {\n this.kitchenFutureMouseOutImgs[i] = new Image();\n this.kitchenFutureMouseOutImgs[i].src = this.kitchenFutureMouseOut[i];\n }\n } else {\n this.kitchenFutureMouseOver = ['assets/kitchen/FutureDates_2.PNG', 'assets/kitchen/FutureDates_3.PNG', 'assets/kitchen/FutureDates_4.PNG'];\n this.kitchenFutureMouseOut = ['assets/kitchen/FutureDates.PNG', 'assets/kitchen/FutureDates_6.PNG', 'assets/kitchen/FutureDates_7.PNG'];\n this.kitchenFutureClicked = 'assets/kitchen/FutureDates_clicked.PNG';\n this.futureDatesStyle.backgroundImage = `url(assets/kitchen/FutureDates.PNG)`;\n for (let i = 0; i < this.kitchenFutureMouseOver.length; i++) {\n this.kitchenFutureMouseOverImgs[i] = new Image();\n this.kitchenFutureMouseOverImgs[i].src = this.kitchenFutureMouseOver[i];\n }\n for (let i = 0; i < this.kitchenFutureMouseOut.length; i++) {\n this.kitchenFutureMouseOutImgs[i] = new Image();\n this.kitchenFutureMouseOutImgs[i].src = this.kitchenFutureMouseOut[i];\n }\n }\n if (aspectRatio < 0.95) {\n this.futureDatesStyle.top = window.innerWidth * 390/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.pastMenusStyle.width = window.innerWidth * 62/306 + \"px\";\n this.pastMenusStyle.height = window.innerWidth * 102/306 + \"px\";\n this.pastMenusStyle.left = window.innerWidth * 28/306 + \"px\";\n this.pastMenusStyle.top = window.innerWidth * 161/306 - this.state.getTopCutoff() + \"px\";\n this.aboutUsStyle.width = window.innerWidth * 37/306 + \"px\";\n this.aboutUsStyle.height = window.innerWidth * 89/306 + \"px\";\n this.aboutUsStyle.left = window.innerWidth * 246/306 + \"px\";\n this.aboutUsStyle.top = window.innerWidth * 110/306 - this.state.getTopCutoff() + \"px\";\n this.myspiceStyle.width = window.innerWidth * 96/306 + \"px\";\n this.myspiceStyle.height = window.innerWidth * 24/306 + \"px\";\n this.myspiceStyle.left = window.innerWidth * 149/306 + \"px\";\n this.myspiceStyle.top = window.innerWidth * 198/306 - this.state.getTopCutoff() + \"px\";\n }\n if (aspectRatio < 0.65) {\n // this.futureDatesStyle.width = window.innerWidth * 216/512 + \"px\";\n // this.futureDatesStyle.height = window.innerWidth * 76/512 + \"px\";\n // this.futureDatesStyle.top = window.innerWidth * 355/306*(1 + 0.085*(306*window.innerHeight/window.innerWidth - 470)/192)*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n // this.futureDatesStyle.left = window.innerWidth/2 - parseInt(this.futureDatesStyle.width)/2 + \"px\";\n let isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || (navigator.userAgent.includes(\"Macintosh\") && navigator.maxTouchPoints > 1);\n\n if (isMobile) {\n this.futureDatesStyle.top = window.innerWidth * 450/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n }\n }\n if (aspectRatio < 306/662) {\n // this.futureDatesStyle.width = window.innerHeight * 216/512*1.5*306/662 + \"px\";\n // this.futureDatesStyle.height = window.innerHeight * 76/512*1.5*306/662 + \"px\";\n // this.futureDatesStyle.top = window.innerWidth * 355/306*(1 + 0.095*(306*window.innerHeight/window.innerWidth - 470)/192)*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n // this.futureDatesStyle.left = window.innerWidth/2 - parseInt(this.futureDatesStyle.width)/2 + \"px\";\n this.pastMenusStyle.width = window.innerHeight * 62/662 + \"px\";\n this.pastMenusStyle.height = window.innerHeight * 102/662 + \"px\";\n this.pastMenusStyle.left = window.innerHeight * 28/662 + \"px\";\n this.pastMenusStyle.top = window.innerHeight * 161/662 + \"px\";\n this.aboutUsStyle.width = window.innerHeight * 37/662 + \"px\";\n this.aboutUsStyle.height = window.innerHeight * 89/662 + \"px\";\n this.aboutUsStyle.left = window.innerHeight * 246/662 + \"px\";\n this.aboutUsStyle.top = window.innerHeight * 110/662 + \"px\";\n this.myspiceStyle.width = window.innerHeight * 96/662 + \"px\";\n this.myspiceStyle.height = window.innerHeight * 24/662 + \"px\";\n this.myspiceStyle.left = window.innerHeight * 149/662 + \"px\";\n this.myspiceStyle.top = window.innerHeight * 198/662 + \"px\";\n }\n this.futureDatesStyle.backgroundImage = `url(${this.kitchenFutureMouseOutImgs[0].src})`;\n this.cdr.detectChanges();\n }\n\n futureDatesMouseEnterWrapper() {\n this.isFutureHovered = true;\n this.isFutureMouseOverRunning = true;\n this.futureDatesMouseEnter();\n }\n\n futureDatesMouseEnter() {\n this.isFutureHovered = true;\n this.isFutureMouseOutRunning = false;\n if (this.isFutureMouseOverRunning) {\n if(this.currentDateMouseOverImage >= this.kitchenFutureMouseOver.length) {\n this.isFutureMouseOverRunning = false;\n } else {\n this.futureDatesStyle.backgroundImage = `url(${this.kitchenFutureMouseOverImgs[this.currentDateMouseOverImage].src})`;\n this.currentDateMouseOverImage++;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.futureDatesMouseEnter()));\n }, 50);\n }\n this.cdr.detectChanges();\n }\n }\n\n futureDatesMouseOutWrapper() {\n this.isFutureHovered = false;\n this.isFutureMouseOutRunning = true;\n this.futureDatesMouseOut();\n }\n\n futureDatesMouseOut() {\n this.isFutureHovered = false;\n this.isFutureMouseOverRunning = false;\n if (this.isFutureMouseOutRunning) {\n this.currentDateMouseOverImage = 0;\n if(this.currentDateMouseOutImage >= this.kitchenFutureMouseOut.length - 1) {\n this.currentDateMouseOutImage = 0;\n this.futureDatesStyle.backgroundImage = `url(${this.kitchenFutureMouseOutImgs[this.currentDateMouseOutImage].src})`;\n this.isFutureMouseOutRunning = false;\n } else {\n this.currentDateMouseOutImage++;\n this.futureDatesStyle.backgroundImage = `url(${this.kitchenFutureMouseOutImgs[this.currentDateMouseOutImage].src})`;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.futureDatesMouseOut()));\n }, 100);\n \n }\n this.cdr.detectChanges();\n }\n }\n \n futureDatesMouseDown() {\n if (window.innerWidth / window.innerHeight < 1.12) {\n // this.futureDatesStyle.backgroundImage = \n }\n this.futureDatesStyle.backgroundImage = `url(${this.kitchenFutureClicked})`;\n this.cdr.detectChanges();\n }\n\n futureDatesClick() {\n this.state.currentState = PageState.FUTURE;\n this.cdr.detectChanges();\n }\n\n pastMenusMouseEnterWrapper() {\n this.isPastHovered = true;\n this.isPastMouseOverRunning = true;\n this.pastMenusMouseEnter();\n }\n\n pastMenusMouseEnter() {\n this.isPastHovered = true;\n this.isPastMouseOutRunning = false;\n if (this.isPastMouseOverRunning) {\n if(this.currentMenuMouseOverImage >= this.kitchenPastMouseOver.length) {\n this.isPastMouseOverRunning = false;\n } else {\n this.pastMenusStyle.backgroundImage = `url(${this.kitchenPastMouseOverImgs[this.currentMenuMouseOverImage].src})`;\n this.currentMenuMouseOverImage++;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.pastMenusMouseEnter()));\n }, 50);\n }\n this.cdr.detectChanges();\n }\n }\n\n pastMenusMouseOutWrapper() {\n this.isPastHovered = false;\n this.isPastMouseOutRunning = true;\n this.pastMenusMouseOut();\n }\n\n pastMenusMouseOut() {\n this.isPastHovered = false;\n this.isPastMouseOverRunning = false;\n if (this.isPastMouseOutRunning) {\n this.currentMenuMouseOverImage = 0;\n if(this.currentMenuMouseOutImage >= this.kitchenPastMouseOut.length - 1) {\n this.currentMenuMouseOutImage = 0;\n this.pastMenusStyle.backgroundImage = `url(${this.kitchenPastMouseOutImgs[this.currentMenuMouseOutImage].src})`;\n this.isPastMouseOutRunning = false;\n } else {\n this.pastMenusStyle.backgroundImage = `url(${this.kitchenPastMouseOutImgs[this.currentMenuMouseOutImage].src})`;\n this.currentMenuMouseOutImage++;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.pastMenusMouseOut()));\n }, 100);\n }\n this.cdr.detectChanges();\n }\n }\n\n pastMenusMouseDown() {\n this.pastMenusStyle.backgroundImage = `url(assets/kitchen/PastMenus_clicked.PNG)`;\n this.cdr.detectChanges();\n }\n\n pastMenusClick() {\n this.state.currentState = PageState.PAST;\n this.cdr.detectChanges();\n }\n\n aboutUsMouseEnter() {\n if(this.currentStoryMouseOverImage >= this.kitchenStoryMouseOver.length) {\n // break\n } else {\n this.aboutUsStyle.backgroundImage = `url(${this.kitchenStoryMouseOverImgs[this.currentStoryMouseOverImage].src})`;\n this.currentStoryMouseOverImage++;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.aboutUsMouseEnter()));\n }, 50);\n }\n this.cdr.detectChanges();\n }\n\n aboutUsMouseOut() {\n this.currentStoryMouseOverImage = 0;\n if(this.currentStoryMouseOutImage >= this.kitchenStoryMouseOut.length-1) {\n this.currentStoryMouseOutImage = 0;\n this.aboutUsStyle.backgroundImage = `url(${this.kitchenStoryMouseOutImgs[this.currentStoryMouseOutImage].src})`;\n } else {\n this.currentStoryMouseOutImage++;\n this.aboutUsStyle.backgroundImage = `url(${this.kitchenStoryMouseOutImgs[this.currentStoryMouseOutImage].src})`;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.aboutUsMouseOut()));\n }, 50);\n }\n this.cdr.detectChanges();\n }\n\n aboutUsMouseDown() {\n this.aboutUsStyle.backgroundImage = `url(assets/kitchen/OurStory_clicked.PNG)`;\n this.cdr.detectChanges();\n }\n\n aboutUsClick() {\n this.state.setCurrentState(PageState.ABOUT);\n }\n\n myspiceMouseOverWrapper() {\n this.isMyspiceHovered = true;\n this.isMyspiceMouseOverRunning = true;\n this.myspiceMouseOver();\n }\n\n myspiceMouseOver() {\n this.isMyspiceMouseOutRunning = false;\n if (this.isMyspiceMouseOverRunning) {\n // this.currentMyspiceMouseOutImage = 0;\n if(this.currentMyspiceMouseOverImage >= this.kitchenMyspiceMouseOver.length) {\n this.isMyspiceMouseOverRunning = false;\n } else {\n this.myspiceStyle.backgroundImage = `url(${this.kitchenMyspiceMouseOverImgs[this.currentMyspiceMouseOverImage].src})`;\n this.currentMyspiceMouseOverImage++;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.myspiceMouseOver()));\n }, 60);\n }\n this.cdr.detectChanges();\n } \n }\n\n myspiceMouseOutWrapper() {\n this.isMyspiceHovered = false;\n this.isMyspiceMouseOutRunning = true;\n this.myspiceMouseOut();\n }\n\n myspiceMouseOut() {\n this.isMyspiceMouseOverRunning = false;\n if (this.isMyspiceMouseOutRunning) {\n this.currentMyspiceMouseOverImage = 0;\n if(this.currentMyspiceMouseOutImage >= this.kitchenMyspiceMouseOut.length-1) {\n this.currentMyspiceMouseOutImage = 0;\n this.myspiceStyle.backgroundImage = `url(${this.kitchenMyspiceMouseOutImgs[this.currentMyspiceMouseOutImage].src})`;\n this.isMyspiceMouseOutRunning = false;\n } else {\n this.currentMyspiceMouseOutImage++;\n this.myspiceStyle.backgroundImage = `url(${this.kitchenMyspiceMouseOutImgs[this.currentMyspiceMouseOutImage].src})`;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.myspiceMouseOut()));\n }, 100);\n }\n this.cdr.detectChanges();\n }\n }\n\n myspiceMouseDown() {\n this.myspiceStyle.backgroundImage = `url(assets/kitchen/myspice_clicked.PNG)`;\n this.cdr.detectChanges();\n }\n\n myspiceClick() {\n // this.state.setCurrentState(PageState.ABOUT);\n if (this.isMobile) {\n this.myspiceMouseOverWrapper();\n setTimeout(() => {\n // this.router.navigate(['myspice']);\n window.open('https://scampiphilly.com', '_blank');\n this.cdr.detectChanges();\n }, 500);\n } else {\n // this.router.navigate(['myspice']);\n window.open('https://scampiphilly.com', '_blank');\n }\n }\n\n backgroundMouseEnter() {\n if (!this.aboutUsStyle.backgroundImage.includes(\"OurStory.PNG\")) {\n this.aboutUsMouseOut();\n }\n if (!this.futureDatesStyle.backgroundImage.includes(\"FutureDates.PNG\") && !this.futureDatesStyle.backgroundImage.includes(\"FutureDatesWide.PNG\")) {\n this.isFutureMouseOutRunning = true;\n this.futureDatesMouseOut();\n }\n if (!this.pastMenusStyle.backgroundImage.includes(\"PastMenus.PNG\")) {\n this.isPastMouseOutRunning = true;\n this.pastMenusMouseOut();\n }\n if (!this.myspiceStyle.backgroundImage.includes(\"myspice.PNG\")) {\n this.isMyspiceMouseOutRunning = true;\n this.myspiceMouseOut();\n }\n }\n\n checkButtons() {\n if (!this.aboutUsStyle.backgroundImage.includes(\"OurStory.PNG\")) {\n this.aboutUsMouseOut();\n }\n if (!this.isFutureHovered && !this.futureDatesStyle.backgroundImage.includes(\"FutureDates.PNG\") && !this.futureDatesStyle.backgroundImage.includes(\"FutureDatesWide.PNG\")) {\n this.isFutureMouseOutRunning = true;\n this.futureDatesMouseOut();\n }\n if (!this.isPastHovered && !this.pastMenusStyle.backgroundImage.includes(\"PastMenus.PNG\")) {\n this.isPastMouseOutRunning = true;\n this.pastMenusMouseOut();\n }\n if (!this.isMyspiceHovered && !this.myspiceStyle.backgroundImage.includes(\"myspice.PNG\")) {\n this.isMyspiceMouseOutRunning = true;\n this.myspiceMouseOut();\n }\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.checkButtons()));\n }, 250);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setButtonSizes();\n }\n\n ngOnInit(): void {\n this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || (navigator.userAgent.includes(\"Macintosh\") && navigator.maxTouchPoints > 1);\n this.state.currentState = PageState.HOME;\n this.futureDatesStyle = {};\n this.pastMenusStyle = {};\n this.aboutUsStyle = {};\n this.myspiceStyle = {};\n this.backgroundStyle = {};\n this.backgroundStyle.left = \"0px\";\n this.backgroundChecked = true;\n this.setButtonSizes();\n\n for (let i = 0; i < this.kitchenFutureMouseOver.length; i++) {\n this.kitchenFutureMouseOverImgs[i] = new Image();\n this.kitchenFutureMouseOverImgs[i].src = this.kitchenFutureMouseOver[i];\n }\n for (let i = 0; i < this.kitchenFutureMouseOut.length; i++) {\n this.kitchenFutureMouseOutImgs[i] = new Image();\n this.kitchenFutureMouseOutImgs[i].src = this.kitchenFutureMouseOut[i];\n }\n for (let i = 0; i < this.kitchenPastMouseOver.length; i++) {\n this.kitchenPastMouseOverImgs[i] = new Image();\n this.kitchenPastMouseOverImgs[i].src = this.kitchenPastMouseOver[i];\n }\n for (let i = 0; i < this.kitchenPastMouseOut.length; i++) {\n this.kitchenPastMouseOutImgs[i] = new Image();\n this.kitchenPastMouseOutImgs[i].src = this.kitchenPastMouseOut[i];\n }\n for (let i = 0; i < this.kitchenStoryMouseOver.length; i++) {\n this.kitchenStoryMouseOverImgs[i] = new Image();\n this.kitchenStoryMouseOverImgs[i].src = this.kitchenStoryMouseOver[i];\n }\n for (let i = 0; i < this.kitchenStoryMouseOut.length; i++) {\n this.kitchenStoryMouseOutImgs[i] = new Image();\n this.kitchenStoryMouseOutImgs[i].src = this.kitchenStoryMouseOut[i];\n }\n for (let i = 0; i < this.kitchenMyspiceMouseOver.length; i++) {\n this.kitchenMyspiceMouseOverImgs[i] = new Image();\n this.kitchenMyspiceMouseOverImgs[i].src = this.kitchenMyspiceMouseOver[i];\n }\n for (let i = 0; i < this.kitchenMyspiceMouseOut.length; i++) {\n this.kitchenMyspiceMouseOutImgs[i] = new Image();\n this.kitchenMyspiceMouseOutImgs[i].src = this.kitchenMyspiceMouseOut[i];\n }\n\n this.pastMenusStyle.backgroundImage = `url(assets/kitchen/PastMenus.PNG)`;\n this.aboutUsStyle.backgroundImage = `url(assets/kitchen/OurStory.PNG)`;\n this.myspiceStyle.backgroundImage = `url(assets/kitchen/myspice.PNG)`;\n //this.futureDatesStyle.backgroundImage = `url(assets/kitchen/FutureDates.PNG)`;\n\n this.currentStoryMouseOverImage = 0;\n this.currentStoryMouseOutImage = 0;\n this.currentMenuMouseOverImage = 0;\n this.currentMenuMouseOutImage = 0;\n this.currentDateMouseOverImage = 0;\n this.currentDateMouseOutImage = 0;\n this.currentMyspiceMouseOutImage = 0;\n this.currentMyspiceMouseOverImage = 0;\n\n this.checkButtons();\n }\n\n}\n","
\n\n
\n\n\n
\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-beverage',\n templateUrl: './beverage.component.html',\n styleUrls: ['./beverage.component.css']\n})\nexport class BeverageComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n \n
\n

We are currently BYOB. For wine service, we charge a corkage fee of $20 per bottle. Thank you :)

\n
\n
\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BrevoService {\n\n private apiKey = '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';\n\n constructor(private http: HttpClient) { }\n\n subscribe(emailInput: string): Observable {\n const url = 'https://api.brevo.com/v3/contacts';\n const headers = new HttpHeaders({\n 'accept': 'application/json',\n 'content-type': 'application/json',\n 'api-key': this.apiKey\n });\n\n const body = {\n email: emailInput\n };\n \n return this.http.post(url, body, { headers });\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnInit {\n title = 'CouchCafeApp';\n\n constructor(){}\n\n ngOnInit() {\n \n }\n}\n","","\n
\n






\n
\n

Our next menu is currently under construction.

Please check out our past menus below!

\n
\n
\n
\n \"Past\n
\n
\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { MenuService } from '../menu.service';\n\n@Component({\n selector: 'app-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css']\n})\nexport class MenuComponent implements OnInit {\n\n pastMenus: string[];\n menuImages: any[] = [];\n\n constructor(private menuService: MenuService) { }\n\n ngOnInit(): void {\n this.pastMenus = this.menuService.getPastMenus().slice().reverse();;\n }\n\n}\n","
\n

Welcome Admin ;)

\n

New Event!

\n \n \n
","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-admin',\n templateUrl: './admin.component.html',\n styleUrls: ['./admin.component.css']\n})\nexport class AdminComponent implements OnInit {\n showForm: Boolean = false;\n\n switchForm() {\n this.showForm = !this.showForm;\n }\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, EventEmitter, HostListener, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators, FormControl, AbstractControl } from '@angular/forms';\nimport { FutureEventsService } from '../future-events.service';\nimport { TableDesignGridComponent } from '../table-design-grid/table-design-grid.component';\n\n\n\n@Component({\n selector: 'app-new-event-input',\n templateUrl: './new-event-input.component.html',\n styleUrls: ['./new-event-input.component.css']\n})\nexport class NewEventInputComponent implements OnInit {\n dateForm: FormGroup;\n @Output() notifyParent: EventEmitter = new EventEmitter();\n showForm: Boolean = false;\n formStyle: any;\n inputStyle: any;\n dateInputStyle: any;\n buttonStyle: any;\n usePreviousSeatingChart: boolean = false;\n newDate: boolean = true;\n dateList: any[];\n selectedDate: any;\n @ViewChild(TableDesignGridComponent) tableDesignGridComponent: TableDesignGridComponent;\n\n constructor(private formBuilder: FormBuilder, private futureEvents: FutureEventsService) { \n this.formStyle = {};\n this.inputStyle = {};\n this.buttonStyle = {};\n this.dateInputStyle = {};\n this.dateList = [];\n this.selectedDate = {};\n }\n\n ngOnInit() {\n this.dateForm = this.formBuilder.group({\n eventName: [null, Validators.required],\n eventPrice: [null, Validators.required],\n selectedDate: [null]\n });\n this.getStyles();\n }\n\n addDate() {\n const inputDate = this.dateForm.get('selectedDate').value;\n let isInDateList = false;\n if (inputDate) {\n for (let i = 0; i < this.dateList.length; i++) {\n if (inputDate === this.dateList[i].date) isInDateList = true;\n }\n if (!isInDateList) {\n this.tableDesignGridComponent.setDate(inputDate);\n this.dateList.push({\n date: inputDate,\n grid: this.tableDesignGridComponent.getGrid(),\n jsonDateObject: this.tableDesignGridComponent.getGridJsonObject()\n });\n this.selectedDate = {};\n this.tableDesignGridComponent.resetGrid();\n }\n }\n }\n\n selectDate(date: any) {\n if (this.selectedDate) {\n this.selectedDate.grid = this.tableDesignGridComponent.getGrid();\n this.selectedDate.jsonDateObject = this.tableDesignGridComponent.getGridJsonObject();\n for (let i = 0; i < this.dateList.length; i++) {\n if (this.selectedDate.date === this.dateList[i].date) {\n this.dateList[i] = this.selectedDate;\n }\n }\n }\n for (let i = 0; i < this.dateList.length; i++) {\n if (this.dateList[i].date === date) {\n this.selectedDate = this.dateList[i];\n this.tableDesignGridComponent.displayInputGrid(this.selectedDate.grid);\n }\n }\n }\n\n removeDate(date: any) {\n this.dateList = this.dateList.filter(d => d.date !== date);\n if (this.selectedDate.date === date) {\n if (this.dateList.length > 0) {\n this.selectedDate = this.dateList[0];\n } else {\n this.selectedDate = {};\n }\n }\n }\n\n // Function to add additional dates to the form\n addAdditionalDate() {\n const additionalDates = this.dateForm.get('additionalDates') as FormArray;\n additionalDates.push(this.formBuilder.control(null, Validators.required));\n }\n\n removeAdditionalDate(index: number) {\n const additionalDates = this.dateForm.get('additionalDates') as FormArray;\n additionalDates.removeAt(index);\n }\n \n getAdditionalDatesControls() {\n return (this.dateForm.get('additionalDates') as FormArray).controls;\n }\n\n castToFormControl(control: AbstractControl): FormControl {\n return control as FormControl;\n }\n\n showFormOnClick() {\n this.showForm = true;\n this.notifyParent.emit();\n }\n\n hideFormOnClick() {\n this.showForm = false;\n this.dateForm.reset();\n this.dateList = [];\n this.notifyParent.emit();\n }\n\n getStyles() {\n this.getFormStyle();\n this.getInputStyle();\n this.getDateInputStyle();\n this.getButtonStyle();\n }\n\n getFormStyle() {\n this.formStyle.position = \"absolute\";\n this.formStyle.left = window.innerWidth * 315/512 + \"px\";\n this.formStyle.width = window.innerWidth * 175/512 + \"px\";\n this.formStyle.height = window.innerWidth * 198/512 + \"px\";\n this.formStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n this.formStyle.paddingTop = window.innerWidth * 15/512 + \"px\";\n this.formStyle.fontSize = window.innerWidth * 5/512 + \"px\";\n }\n\n getInputStyle() {\n this.inputStyle.padding = window.innerWidth * 2/512 + \"px\";\n this.inputStyle.width = window.innerWidth * 75/512 + \"px\";\n this.inputStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n this.inputStyle.fontSize = window.innerWidth * 4/512 + \"px\";\n }\n\n getDateInputStyle() {\n this.dateInputStyle.padding = window.innerWidth * 2/512 + \"px\";\n this.dateInputStyle.width = window.innerWidth * 75/512 + \"px\";\n this.dateInputStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n this.dateInputStyle.fontSize = window.innerWidth * 3/512 + \"px\";\n }\n\n getButtonStyle() {\n this.buttonStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n this.buttonStyle.padding = window.innerWidth * 3/512 + \"px\";\n this.buttonStyle.fontSize = window.innerWidth * 4/512 + \"px\";\n }\n\n addFutureEvent() {\n if (this.dateForm.valid) {\n // Perform actions with the form data\n const formData = this.dateForm.value;\n\n const newEvent = {\n name: formData.eventName,\n price: formData.eventPrice,\n dates: []\n };\n\n this.dateList.forEach(d => {\n newEvent.dates.push(d.jsonDateObject);\n }); \n\n this.futureEvents.saveFutureEvent(newEvent).subscribe(() => {});\n this.showForm = false;\n this.dateForm.get('selectedDate').reset();\n this.dateList = [];\n this.notifyParent.emit();\n } else {\n console.log(\"form invalid\");\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.getStyles();\n }\n \n}\n","\n\n
\n
\n \n \n

\n \n \n

\n \n

\n\n

\n Date(s):

\n
\n \n

\n

\n \n

\n

\n
\n \n \n \n \n
\n \n \n
\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { HttpClientModule } from '@angular/common/http';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { FrogGameComponent } from './frog-game/frog-game.component';\nimport { HighScoreInputComponent } from './high-score-input/high-score-input.component';\nimport { HighScoresComponent } from './high-scores/high-scores.component';\nimport { MenuButtonsComponent } from './menu-buttons/menu-buttons.component';\nimport { MenuCardsComponent } from './menu-cards/menu-cards.component';\nimport { OurStoryBookComponent } from './our-story-book/our-story-book.component';\nimport { FutureDatesCalendarComponent } from './future-dates-calendar/future-dates-calendar.component';\nimport { GameOverComponent } from './game-over/game-over.component';\nimport { ScoreComponent } from './score/score.component';\nimport { StartGameComponent } from './start-game/start-game.component';\nimport { LoginComponent } from './login/login.component';\nimport { AdminComponent } from './admin/admin.component';\nimport { FormsModule } from '@angular/forms';\nimport { HomeComponent } from './home/home.component';\nimport { NewEventInputComponent } from './new-event-input/new-event-input.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TableDesignGridComponent } from './table-design-grid/table-design-grid.component';\nimport { DatePipe } from '@angular/common';\nimport { CustomerReservationsComponent } from './customer-reservations/customer-reservations.component';\nimport { TableReservationGridComponent } from './table-reservation-grid/table-reservation-grid.component';\nimport { ReservationFailedComponent } from './reservation-failed/reservation-failed.component';\nimport { AdminReservationGridComponent } from './admin-reservation-grid/admin-reservation-grid.component';\nimport { AdminFutureDatesCalendarComponent } from './admin-future-dates-calendar/admin-future-dates-calendar.component';\nimport { MyspaceComponent } from './myspace/myspace.component';\nimport { MyspiceNavBarComponent } from './myspice-nav-bar/myspice-nav-bar.component';\nimport { BeverageComponent } from './beverage/beverage.component';\nimport { MenuComponent } from './menu/menu.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n FrogGameComponent,\n HighScoreInputComponent,\n HighScoresComponent,\n MenuButtonsComponent,\n MenuCardsComponent,\n OurStoryBookComponent,\n FutureDatesCalendarComponent,\n GameOverComponent,\n ScoreComponent,\n StartGameComponent,\n LoginComponent,\n AdminComponent,\n HomeComponent,\n NewEventInputComponent,\n TableDesignGridComponent,\n CustomerReservationsComponent,\n TableReservationGridComponent,\n ReservationFailedComponent,\n AdminReservationGridComponent,\n AdminFutureDatesCalendarComponent,\n MyspaceComponent,\n MyspiceNavBarComponent,\n BeverageComponent,\n MenuComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule\n ],\n providers: [DatePipe],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Component, OnInit, HostListener } from '@angular/core';\nimport { PageStateService } from '../page-state.service';\nimport { ScoreService } from '../score.service';\n\n@Component({\n selector: 'app-game-over',\n templateUrl: './game-over.component.html',\n styleUrls: ['./game-over.component.css']\n})\nexport class GameOverComponent implements OnInit {\n\n gameOverStyle: any;\n scoreStyle: any;\n restartStyle: any;\n containerStyle: any;\n\n isMobile: boolean;\n\n constructor(public score: ScoreService, private state: PageStateService) { }\n\n setGameOverStyle() {\n var textShadow = window.innerWidth * 0.65/512;\n this.containerStyle.left = window.innerWidth * 165/512 + \"px\";\n this.containerStyle.top = window.innerWidth * 175/512 + \"px\";\n this.containerStyle.lineHeight = window.innerWidth * 3/512 + \"px\";\n this.gameOverStyle.fontSize = window.innerWidth * 12/512 + \"px\";\n this.gameOverStyle.lineHeight = window.innerWidth * 10/512 + \"px\";\n this.scoreStyle.fontSize = window.innerWidth * 7/512 + \"px\";\n this.restartStyle.fontSize = window.innerWidth * 4.5/512 + \"px\";\n\n if (window.innerWidth/window.innerHeight < 0.95) {\n this.containerStyle.left = window.innerWidth * 30/306 + \"px\";\n this.containerStyle.top = window.innerWidth * 355/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.containerStyle.lineHeight = window.innerWidth * 3.5/306 + \"px\";\n this.gameOverStyle.fontSize = window.innerWidth * 12/306 + \"px\";\n this.gameOverStyle.lineHeight = window.innerWidth * 10/306 + \"px\";\n this.scoreStyle.fontSize = window.innerWidth * 7/306 + \"px\";\n this.restartStyle.fontSize = window.innerWidth * 4.5/306 + \"px\";\n textShadow = window.innerWidth * 0.65/306;\n\n let isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || (navigator.userAgent.includes(\"Macintosh\") && navigator.maxTouchPoints > 1);\n\n if (isMobile) {\n this.containerStyle.left = window.innerWidth * 166/306 + \"px\";\n this.containerStyle.top = window.innerWidth * 358/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.containerStyle.lineHeight = window.innerWidth * 5/306 + \"px\";\n this.gameOverStyle.fontSize = window.innerWidth * 14/306 + \"px\";\n this.scoreStyle.fontSize = window.innerWidth * 9/306 + \"px\";\n this.restartStyle.fontSize = window.innerWidth * 6/306 + \"px\";\n }\n } else if (window.innerWidth/window.innerHeight < 1.12) {\n this.containerStyle.left = window.innerWidth * 70/512 + \"px\";\n this.containerStyle.top = window.innerHeight * 225/320 + \"px\";\n this.containerStyle.lineHeight = window.innerHeight * 3.5/320 + \"px\";\n this.gameOverStyle.fontSize = window.innerHeight * 12/320 + \"px\";\n this.gameOverStyle.lineHeight = window.innerHeight * 10/320 + \"px\";\n this.scoreStyle.fontSize = window.innerHeight * 7/320 + \"px\";\n this.restartStyle.fontSize = window.innerHeight * 4.5/320 + \"px\";\n textShadow = window.innerHeight * 0.65/320;\n } else if (window.innerWidth/window.innerHeight < 1.44) {\n this.containerStyle.left = window.innerWidth * 110/512 + \"px\";\n this.containerStyle.top = window.innerHeight * 225/320 + \"px\";\n this.containerStyle.lineHeight = window.innerHeight * 3.5/320 + \"px\";\n this.gameOverStyle.fontSize = window.innerHeight * 12/320 + \"px\";\n this.gameOverStyle.lineHeight = window.innerHeight * 10/320 + \"px\";\n this.scoreStyle.fontSize = window.innerHeight * 7/320 + \"px\";\n this.restartStyle.fontSize = window.innerHeight * 4.5/320 + \"px\";\n textShadow = window.innerHeight * 0.65/320;\n } else if (this.state.isNarrow()) { \n this.containerStyle.left = window.innerHeight * 170/320 - this.state.getLeftCutoff() + \"px\";\n this.containerStyle.top = window.innerHeight * 225/320 + \"px\";\n this.containerStyle.lineHeight = window.innerHeight * 3.5/320 + \"px\";\n this.gameOverStyle.fontSize = window.innerHeight * 12/320 + \"px\";\n this.gameOverStyle.lineHeight = window.innerHeight * 10/320 + \"px\";\n this.scoreStyle.fontSize = window.innerHeight * 7/320 + \"px\";\n this.restartStyle.fontSize = window.innerHeight * 4.5/320 + \"px\";\n textShadow = window.innerHeight * 0.65/320;\n }\n\n this.containerStyle.textShadow = '-' + textShadow + 'px -' + textShadow + 'px 0 #000, ' + textShadow + 'px -' + textShadow + 'px 0 #000, -' + textShadow + 'px ' + textShadow + 'px 0 #000, ' + textShadow + 'px ' + textShadow + 'px 0 #000';\n } \n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setGameOverStyle();\n }\n\n ngOnInit(): void {\n this.gameOverStyle = {};\n this.scoreStyle = {};\n this.restartStyle = {};\n this.containerStyle = {};\n this.gameOverStyle.color = \"#f5693d\";\n this.scoreStyle.color = \"rgba(99,199,77,1)\";\n this.restartStyle.color = \"rgba(99,199,77,1)\";\n\n this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n this.setGameOverStyle();\n }\n\n}\n","
\n
GAME OVER


\n


\n
\n
\n","
\n
\n \n
\n \n
\n
\n
\n
\n","import { Component, HostListener, Input, OnInit, } from '@angular/core';\nimport { GridService } from '../grid.service';\n\nenum ButtonType {\n Empty,\n Table,\n AvailableChair,\n SelectedChair,\n PendingChair,\n ReservedChair,\n Disabled\n}\n\n@Component({\n selector: 'app-table-reservation-grid',\n templateUrl: './table-reservation-grid.component.html',\n styleUrls: ['./table-reservation-grid.component.css']\n})\nexport class TableReservationGridComponent implements OnInit {\n @Input() squares: any[];\n grid: ButtonType[][] = [];\n numRows: number;\n numCols: number;\n selectedSeats: any[];\n gridContainerStyle: any;\n gridStyle: any;\n buttonStyle: any;\n\n constructor(private gridService: GridService) { \n this.numRows = this.gridService.numRows;\n this.numCols = this.gridService.numCols;\n this.gridContainerStyle = {};\n this.gridStyle = {};\n this.buttonStyle = {};\n }\n\n initializeGrid() {\n this.getGridContainerStyles();\n this.getGridStyles();\n this.getButtonStyles();\n for (let i = 0; i < this.numRows; i++) {\n this.grid[i] = [];\n for (let j = 0; j < this.numCols; j++) {\n this.grid[i][j] = ButtonType.Empty;\n }\n }\n for (let i = 0; i < this.squares.length; i++) {\n switch (this.squares[i].type) {\n case 'O':\n this.grid[this.squares[i].row][this.squares[i].column] = ButtonType.AvailableChair;\n break;\n case 'T':\n this.grid[this.squares[i].row][this.squares[i].column] = ButtonType.Table;\n break;\n case 'C':\n this.grid[this.squares[i].row][this.squares[i].column] = ButtonType.ReservedChair;\n break;\n case 'P':\n this.grid[this.squares[i].row][this.squares[i].column] = ButtonType.PendingChair;\n break;\n }\n }\n }\n\n onButtonClick(row: number, col: number) {\n if (this.grid[row][col] === ButtonType.AvailableChair) {\n this.grid[row][col] = ButtonType.SelectedChair;\n } else if (this.grid[row][col] === ButtonType.SelectedChair) {\n this.grid[row][col] = ButtonType.AvailableChair;\n }\n }\n\n getButtonClass(button: ButtonType): string {\n switch (button) {\n case ButtonType.Empty:\n return 'empty';\n case ButtonType.Table:\n return 'table';\n case ButtonType.AvailableChair:\n return 'chair-available';\n case ButtonType.PendingChair:\n return 'chair-pending';\n case ButtonType.SelectedChair:\n return 'chair-selected';\n case ButtonType.ReservedChair:\n return 'chair-reserved';\n default:\n return '';\n }\n }\n\n getButtonClickable(i: number, j: number): boolean {\n return (this.grid[i][j] === ButtonType.AvailableChair || this.grid[i][j] === ButtonType.SelectedChair);\n }\n\n getGridContainerStyles() {\n var aspectRatio = window.innerWidth / window.innerHeight;\n this.gridContainerStyle.width = 5/5 * window.innerWidth * 262/512 + \"px\";\n this.gridContainerStyle.height = 5/5 * window.innerWidth * 202/512 + \"px\";\n this.gridContainerStyle.left = 5/5 * window.innerWidth * 3/512 + \"px\";\n if (aspectRatio < 0.84) { \n this.gridContainerStyle.width = 7/5 * window.innerWidth * 262/512 + \"px\";\n this.gridContainerStyle.height = 7/5 * window.innerWidth * 202/512 + \"px\";\n }\n }\n\n getGridStyles() {\n var aspectRatio = window.innerWidth / window.innerHeight;\n this.gridStyle.width = 5/5 * window.innerWidth * 180/512 + \"px\";\n this.gridStyle.left = 5/5 * window.innerWidth * 81/512 + \"px\";\n this.gridStyle.top = 5/5 * window.innerWidth * 1/512 + \"px\";\n if (aspectRatio < 0.84) { \n this.gridStyle.width = 7/5 * window.innerWidth * 180/512 + \"px\";\n this.gridStyle.left = 7/5 * window.innerWidth * 81/512 + \"px\";\n this.gridStyle.top = 7/5 * window.innerWidth * 1/512 + \"px\";\n // this.gridStyle.height = 6/5 * window.innerWidth * 81/512 + \"px\";\n }\n }\n\n getButtonStyles() {\n var aspectRatio = window.innerWidth / window.innerHeight;\n this.buttonStyle.width = 5/5 * window.innerWidth * 20/512 + \"px\";\n this.buttonStyle.height = 5/5 * window.innerWidth * 20/512 + \"px\";\n if (aspectRatio < 0.84) {\n this.buttonStyle.width = 7/5 * window.innerWidth * 20/512 + \"px\";\n this.buttonStyle.height = 7/5 * window.innerWidth * 20/512 + \"px\";\n }\n }\n\n getButtonImage(row: number, col: number) {\n let buttonStyleImage = this.buttonStyle;\n if (this.grid[row][col] === ButtonType.AvailableChair) {\n if (row > 0 && this.grid[row - 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Up.PNG)`;\n } else if (row < this.numRows - 1 && this.grid[row + 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Down.PNG)`;\n } else if (col > 0 && this.grid[row][col - 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Left.PNG)`;\n } else if (col < this.numCols - 1 && this.grid[row][col + 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Right.PNG)`;\n } else { \n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairAvailable_Left.PNG)`;\n }\n } else if (this.grid[row][col] === ButtonType.ReservedChair || this.grid[row][col] === ButtonType.PendingChair) {\n if (row > 0 && this.grid[row - 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Up.PNG)`;\n } else if (row < this.numRows - 1 && this.grid[row + 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Down.PNG)`;\n } else if (col > 0 && this.grid[row][col - 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Left.PNG)`;\n } else if (col < this.numCols - 1 && this.grid[row][col + 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Right.PNG)`;\n } else { \n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairReserved_Left.PNG)`;\n }\n } else if (this.grid[row][col] === ButtonType.SelectedChair) {\n if (row > 0 && this.grid[row - 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairSelected_Up.PNG)`;\n } else if (row < this.numRows - 1 && this.grid[row + 1][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairSelected_Down.PNG)`;\n } else if (col > 0 && this.grid[row][col - 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairSelected_Left.PNG)`;\n } else if (col < this.numCols - 1 && this.grid[row][col + 1] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairSelected_Right.PNG)`;\n } else { \n buttonStyleImage.backgroundImage = `url(assets/reservations/ChairSelected_Left.PNG)`;\n }\n } else if (this.grid[row][col] === ButtonType.Table) {\n buttonStyleImage.backgroundImage = `url(assets/reservations/Table.PNG)`;\n } else if (this.grid[row][col] === ButtonType.Empty || this.grid[row][col] === ButtonType.Disabled) {\n buttonStyleImage.backgroundImage = \"none\";\n }\n \n return buttonStyleImage;\n }\n\n getSelectedSeats(): any[] {\n let selectedSeats = [];\n for (let i = 0; i < this.numRows; i++) {\n for (let j = 0; j < this.numCols; j++) {\n if (this.grid[i][j] === ButtonType.SelectedChair) {\n for (let k = 0; k < this.squares.length; k++) {\n if (this.squares[k].row === i && this.squares[k].column === j) {\n selectedSeats.push({\n id: this.squares[k].id,\n row: i,\n column: j,\n type: 'P',\n reserved: true\n });\n }\n }\n }\n }\n }\n return selectedSeats;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.initializeGrid();\n }\n\n ngOnInit(): void {\n this.initializeGrid();\n }\n\n}\n","import { Component, OnInit, HostListener, ChangeDetectorRef, NgZone, ViewChild, ElementRef } from '@angular/core';\nimport { PageStateService, PageState } from '../page-state.service'\nimport { MenuService } from '../menu.service';\n\n@Component({\n selector: 'app-menu-cards',\n templateUrl: './menu-cards.component.html',\n styleUrls: ['./menu-cards.component.css'],\n})\nexport class MenuCardsComponent implements OnInit {\n\n public PageState = PageState;\n\n menus: string[];\n menuImages: any[] = [];\n\n leftStaticStyle: any;\n leftTransitStyle: any;\n rightStaticStyle: any;\n rightTransitStyle: any;\n pageClosedStyleLeft: any;\n pageClosedStyleRight: any;\n\n @ViewChild('leftTransit') leftTransit: ElementRef;\n @ViewChild('rightTransit') rightTransit: ElementRef;\n\n currentLeftCardIndex: number;\n currentRightCardIndex: number;\n\n isLeftCardMoving: boolean;\n isRightCardMoving: boolean;\n isRightCardMovingRight: boolean;\n topCounter: number;\n \n pageOpened: boolean = false;\n\n aspectRatio: number;\n previousTimestamp: number;\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone, private state: PageStateService, private menuService: MenuService) { }\n\n setCardSizes() {\n this.aspectRatio = window.innerWidth / window.innerHeight;\n var narrow = this.aspectRatio < 512/320;\n let leftCutoff = this.state.getLeftCutoff();\n this.leftStaticStyle.backgroundImage = `url(${this.menuImages[this.currentLeftCardIndex].src})`;\n this.leftTransitStyle.backgroundImage = `url(${this.menuImages[this.currentLeftCardIndex].src})`;\n this.rightStaticStyle.backgroundImage = `url(${this.menuImages[this.currentRightCardIndex].src})`;\n this.rightTransitStyle.backgroundImage = `url(${this.menuImages[this.currentRightCardIndex].src})`;\n this.pageClosedStyleLeft.backgroundImage = `url(${this.menuImages[this.currentLeftCardIndex].src})`;\n this.pageClosedStyleRight.backgroundImage = `url(${this.menuImages[this.currentRightCardIndex].src})`;\n this.leftStaticStyle.left = window.innerWidth * 69/512 + \"px\";\n this.leftTransitStyle.left = window.innerWidth * 74/512 + \"px\";\n this.rightStaticStyle.left = window.innerWidth * 281/512 + \"px\";\n this.rightTransitStyle.left = window.innerWidth * 286/512 + \"px\";\n \n // if (aspectRatio < 0.65) {\n // this.leftStaticStyle.top = window.innerWidth * 150/306 - this.state.getTopCutoff() + \"px\";\n // this.leftTransitStyle.top = window.innerWidth * 145/306 - this.state.getTopCutoff() + \"px\";\n // this.rightStaticStyle.top = window.innerWidth * 150/306 - this.state.getTopCutoff() + \"px\";\n // this.rightTransitStyle.top = window.innerWidth * 145/306 - this.state.getTopCutoff() + \"px\";\n // this.leftStaticStyle.height = window.innerWidth * 240/512 + \"px\";\n // this.leftStaticStyle.width = window.innerWidth * 162/512 + \"px\";\n // this.leftTransitStyle.height = window.innerWidth * 240/512 + \"px\";\n // this.leftTransitStyle.width = window.innerWidth * 162/512 + \"px\";\n // this.rightStaticStyle.height = window.innerWidth * 240/512 + \"px\";\n // this.rightStaticStyle.width = window.innerWidth * 162/512 + \"px\";\n // this.rightTransitStyle.height = window.innerWidth * 240/512 + \"px\";\n // this.rightTransitStyle.width = window.innerWidth * 162/512 + \"px\";\n // this.pageClosedStyleLeft.width = window.innerWidth * 15/306 + \"px\";\n // this.pageClosedStyleLeft.height = window.innerWidth * 20/306 + \"px\";\n // this.pageClosedStyleLeft.left = window.innerWidth * 62/306 + \"px\";\n // this.pageClosedStyleLeft.top = window.innerWidth * 218/306 - this.state.getTopCutoff() + \"px\";\n // }\n if (this.aspectRatio < 0.95) {\n this.leftStaticStyle.top = window.innerWidth * 122/306 - this.state.getTopCutoff() + \"px\";\n this.leftTransitStyle.top = window.innerWidth * 118/306 - this.state.getTopCutoff() + \"px\";\n this.rightStaticStyle.top = window.innerWidth * 114/306 - this.state.getTopCutoff() + \"px\";\n this.rightTransitStyle.top = window.innerWidth * 110/306 - this.state.getTopCutoff() + \"px\";\n this.leftStaticStyle.height = window.innerWidth * 480/512 + \"px\";\n this.leftStaticStyle.width = window.innerWidth * 324/512 + \"px\";\n this.leftTransitStyle.height = window.innerWidth * 480/512 + \"px\";\n this.leftTransitStyle.width = window.innerWidth * 324/512 + \"px\";\n this.rightStaticStyle.height = window.innerWidth * 480/512 + \"px\";\n this.rightStaticStyle.width = window.innerWidth * 324/512 + \"px\";\n this.rightTransitStyle.height = window.innerWidth * 480/512 + \"px\";\n this.rightTransitStyle.width = window.innerWidth * 324/512 + \"px\";\n this.pageClosedStyleLeft.width = window.innerWidth * 15/306 + \"px\";\n this.pageClosedStyleLeft.height = window.innerWidth * 20/306 + \"px\";\n this.pageClosedStyleLeft.left = window.innerWidth * 62/306 + \"px\";\n this.pageClosedStyleLeft.top = window.innerWidth * 218/306 - this.state.getTopCutoff() + \"px\";\n this.rightStaticStyle.left = window.innerWidth * 79/512 + \"px\";\n this.rightTransitStyle.left = window.innerWidth * 84/512 + \"px\";\n } else if (narrow) {\n this.leftStaticStyle.top = window.innerHeight * 30 / 320 + \"px\";\n this.leftTransitStyle.top = window.innerHeight * 25/320 + \"px\";\n this.rightStaticStyle.top = window.innerHeight * 30/320 + \"px\";\n this.rightTransitStyle.top = window.innerHeight * 25/320 + \"px\";\n this.leftStaticStyle.height = window.innerWidth * 240/512 + \"px\";\n this.leftStaticStyle.width = window.innerWidth * 162/512 + \"px\";\n this.leftTransitStyle.height = window.innerWidth * 240/512 + \"px\";\n this.leftTransitStyle.width = window.innerWidth * 162/512 + \"px\";\n this.rightStaticStyle.height = window.innerWidth * 240/512 + \"px\";\n this.rightStaticStyle.width = window.innerWidth * 162/512 + \"px\";\n this.rightTransitStyle.height = window.innerWidth * 240/512 + \"px\";\n this.rightTransitStyle.width = window.innerWidth * 162/512 + \"px\";\n this.pageClosedStyleLeft.width = window.innerHeight * 15/320 + \"px\";\n this.pageClosedStyleLeft.height = window.innerHeight * 20/320 + \"px\";\n this.pageClosedStyleLeft.left = window.innerHeight * 178/320 - leftCutoff + \"px\";\n this.pageClosedStyleLeft.top = window.innerHeight * 114/320 + \"px\";\n } else {\n this.leftStaticStyle.top = window.innerWidth * 30/512 + \"px\";\n this.leftTransitStyle.top = window.innerWidth * 25/512 + \"px\";\n this.rightStaticStyle.top = window.innerWidth * 30/512 + \"px\";\n this.rightTransitStyle.top = window.innerWidth * 25/512 + \"px\";\n this.leftStaticStyle.height = window.innerHeight * 240 / 320 + \"px\";\n this.leftStaticStyle.width = window.innerHeight * 162 / 320 + \"px\";\n this.leftTransitStyle.height = window.innerHeight * 240 / 320 + \"px\";\n this.leftTransitStyle.width = window.innerHeight * 162 / 320 + \"px\";\n this.rightStaticStyle.height = window.innerHeight * 240 / 320 + \"px\";\n this.rightStaticStyle.width = window.innerHeight * 162 / 320 + \"px\";\n this.rightTransitStyle.height = window.innerHeight * 240 / 320 + \"px\";\n this.rightTransitStyle.width = window.innerHeight * 162 / 320 + \"px\";\n this.pageClosedStyleLeft.width = window.innerWidth * 15/512 + \"px\";\n this.pageClosedStyleLeft.height = window.innerWidth * 20/512 + \"px\";\n this.pageClosedStyleLeft.left = window.innerWidth * 178/512 + \"px\";\n this.pageClosedStyleLeft.top = window.innerWidth * 114/512 + \"px\";\n }\n this.pageClosedStyleRight.width = this.pageClosedStyleLeft.width;\n this.pageClosedStyleRight.height = this.pageClosedStyleLeft.height;\n this.pageClosedStyleRight.left = this.pageClosedStyleLeft.left;\n this.pageClosedStyleRight.top = this.pageClosedStyleLeft.top;\n this.cdr.detectChanges();\n }\n\n moveLeftCard() {\n if (parseInt(this.leftTransitStyle.left, 10) < parseInt(this.rightStaticStyle.left, 10)) {\n this.leftTransitStyle.left = parseInt(this.leftTransitStyle.left, 10) + window.innerWidth * 0.01 + \"px\";\n } else {\n this.isLeftCardMoving = false;\n this.rightTransitStyle.backgroundImage = `url(${this.menuImages[this.currentRightCardIndex].src})`;\n this.leftTransitStyle.visibility = \"hidden\";\n this.setCardSizes();\n this.leftTransitStyle.visibility = \"visible\";\n }\n\n if (this.isLeftCardMoving) {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.moveLeftCard()));\n }, 5);\n }\n this.cdr.detectChanges();\n }\n\n moveRightCard(currentTimestamp: number) {\n const elapsed = currentTimestamp - this.previousTimestamp;\n const sf = elapsed / 4;\n this.previousTimestamp = currentTimestamp;\n if (this.aspectRatio < 0.95) {\n if (this.isRightCardMovingRight && parseInt(this.rightTransitStyle.left, 10) < parseInt(this.rightStaticStyle.left, 10) + parseInt(this.rightStaticStyle.width,10) + window.innerWidth * 10/306) {\n this.rightTransitStyle.left = parseInt(this.rightTransitStyle.left, 10) + window.innerWidth * 0.01 * sf + \"px\";\n } else if (parseInt(this.rightTransitStyle.left, 10) > parseInt(this.rightStaticStyle.left, 10)) {\n this.isRightCardMovingRight = false;\n this.rightTransitStyle.zIndex = 800;\n this.rightTransitStyle.left = parseInt(this.rightTransitStyle.left, 10) - window.innerWidth * 0.01 * sf + \"px\";\n } else {\n this.isRightCardMoving = false;\n this.leftTransitStyle.backgroundImage = `url(${this.menuImages[this.currentRightCardIndex].src})`;\n this.rightTransitStyle.visibility = \"hidden\";\n this.setCardSizes();\n this.rightTransitStyle.zIndex = 1000;\n this.rightTransitStyle.visibility = \"visible\";\n }\n this.topCounter++;\n if (parseInt(this.leftStaticStyle.top,10) - parseInt(this.rightTransitStyle.top,10) > 0 && this.topCounter % 5 === 0) {\n this.topCounter = 0;\n this.rightTransitStyle.top = parseInt(this.rightTransitStyle.top, 10) + window.innerWidth * 0.003 * sf + \"px\";\n }\n } else {\n if (parseInt(this.rightTransitStyle.left, 10) > parseInt(this.leftStaticStyle.left, 10)) {\n this.rightTransitStyle.left = parseInt(this.rightTransitStyle.left, 10) - window.innerWidth * 0.01 * sf + \"px\";\n } else {\n this.isRightCardMoving = false;\n this.leftTransitStyle.backgroundImage = `url(${this.menuImages[this.currentRightCardIndex].src})`;\n this.rightTransitStyle.visibility = \"hidden\";\n this.setCardSizes();\n this.rightTransitStyle.visibility = \"visible\";\n }\n }\n\n if (this.isRightCardMoving) {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.moveRightCard(performance.now())));\n }, 5);\n }\n this.cdr.detectChanges();\n }\n\n leftTransitClick() {\n if (this.currentLeftCardIndex - 1 >= 0) {\n this.currentLeftCardIndex--;\n } else {\n this.currentLeftCardIndex = this.menuImages.length - 1;\n }\n if (this.currentRightCardIndex - 1 >= 0) {\n this.currentRightCardIndex--;\n } else {\n this.currentRightCardIndex = this.menuImages.length - 1;\n }\n this.leftStaticStyle.backgroundImage = `url(${this.menuImages[this.currentLeftCardIndex].src})`;\n this.rightTransitStyle.zIndex = 900;\n this.leftTransitStyle.zIndex = 1000;\n this.isLeftCardMoving = true;\n this.moveLeftCard();\n }\n\n rightTransitClick() {\n if (this.currentRightCardIndex + 1 < this.menuImages.length) {\n this.currentRightCardIndex++;\n } else {\n this.currentRightCardIndex = 0;\n }\n if (this.currentLeftCardIndex + 1 < this.menuImages.length) {\n this.currentLeftCardIndex++;\n } else {\n this.currentLeftCardIndex = 0;\n }\n this.rightStaticStyle.backgroundImage = `url(${this.menuImages[this.currentRightCardIndex].src})`;\n this.leftTransitStyle.zIndex = 900;\n this.rightTransitStyle.zIndex = 1000;\n this.isRightCardMoving = true;\n this.isRightCardMovingRight = true;\n this.topCounter = 0;\n this.previousTimestamp = performance.now();\n this.moveRightCard(this.previousTimestamp);\n }\n\n checkCollision(event): boolean {\n if (this.leftTransit.nativeElement.contains(event.target) || this.rightTransit.nativeElement.contains(event.target)){\n return true;\n } else {\n return false;\n }\n }\n\n openPage() {\n if (parseInt(this.pageClosedStyleLeft.height, 10)/parseInt(this.leftTransitStyle.height) < 0.99) {\n this.pageClosedStyleLeft.width = parseInt(this.pageClosedStyleLeft.width, 10) + 1/3*(parseInt(this.leftTransitStyle.width) - parseInt(this.pageClosedStyleLeft.width, 10)) + \"px\";\n this.pageClosedStyleLeft.height = parseInt(this.pageClosedStyleLeft.height, 10) + 1/3*(parseInt(this.leftTransitStyle.height) - parseInt(this.pageClosedStyleLeft.height, 10)) + \"px\";\n this.pageClosedStyleLeft.left = parseInt(this.pageClosedStyleLeft.left, 10) + 1/3*(parseInt(this.leftTransitStyle.left) - parseInt(this.pageClosedStyleLeft.left, 10)) + \"px\";\n this.pageClosedStyleLeft.top = parseInt(this.pageClosedStyleLeft.top, 10) + 1/3*(parseInt(this.leftTransitStyle.top) - parseInt(this.pageClosedStyleLeft.top, 10)) + \"px\";\n this.pageClosedStyleRight.width = this.pageClosedStyleLeft.width;\n this.pageClosedStyleRight.height = this.pageClosedStyleLeft.height;\n this.pageClosedStyleRight.top = parseInt(this.pageClosedStyleRight.top, 10) + 1/3*(parseInt(this.rightTransitStyle.top) - parseInt(this.pageClosedStyleRight.top, 10)) + \"px\";\n this.pageClosedStyleRight.left = parseInt(this.pageClosedStyleRight.left, 10) + 1/3*(parseInt(this.rightTransitStyle.left) - parseInt(this.pageClosedStyleRight.left, 10)) + \"px\";\n \n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.openPage()));\n }, 50);\n } else {\n this.pageOpened = true;\n }\n this.cdr.detectChanges();\n }\n\n closePage() {\n if (parseInt(this.leftTransitStyle.height, 10)/parseInt(this.pageClosedStyleLeft.height) > 1.01) {\n this.leftTransitStyle.width = parseInt(this.leftTransitStyle.width, 10) + 1/3*(parseInt(this.pageClosedStyleLeft.width) - parseInt(this.leftTransitStyle.width, 10)) + \"px\";\n this.leftTransitStyle.height = parseInt(this.leftTransitStyle.height, 10) + 1/3*(parseInt(this.pageClosedStyleLeft.height) - parseInt(this.leftTransitStyle.height, 10)) + \"px\";\n this.leftTransitStyle.left = parseInt(this.leftTransitStyle.left, 10) + 1/3*(parseInt(this.pageClosedStyleLeft.left) - parseInt(this.leftTransitStyle.left, 10)) + \"px\";\n this.leftTransitStyle.top = parseInt(this.leftTransitStyle.top, 10) + 1/3*(parseInt(this.pageClosedStyleLeft.top) - parseInt(this.leftTransitStyle.top, 10)) + \"px\";\n this.leftStaticStyle.width = this.leftTransitStyle.width;\n this.leftStaticStyle.height = this.leftTransitStyle.height;\n this.leftStaticStyle.left = this.leftTransitStyle.left\n this.leftStaticStyle.top = this.leftTransitStyle.top;\n this.rightTransitStyle.width = this.leftTransitStyle.width;\n this.rightTransitStyle.height = this.leftTransitStyle.height;\n this.rightTransitStyle.left = parseInt(this.rightTransitStyle.left, 10) + 1/3*(parseInt(this.pageClosedStyleLeft.left) - parseInt(this.rightTransitStyle.left, 10)) + \"px\";\n this.rightTransitStyle.top = this.leftTransitStyle.top;\n this.rightStaticStyle.width = this.leftTransitStyle.width;\n this.rightStaticStyle.height = this.leftTransitStyle.height;\n this.rightStaticStyle.left = this.rightTransitStyle.left\n this.rightStaticStyle.top = this.leftTransitStyle.top;\n \n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.closePage()));\n }, 50);\n } else {\n this.pageOpened = false;\n this.state.setCurrentState(PageState.HOME);\n }\n this.cdr.detectChanges(); \n }\n\n @HostListener('document:click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.state.currentState === PageState.PAST && !this.checkCollision(event) && this.pageOpened) {\n this.setCardSizes();\n this.closePage();\n // for (let i = 0; i < this.cardChildren.length; i++) {\n // this.cardChildren[i].style.transition = \"all 1s ease\";\n // }\n this.cdr.detectChanges();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setCardSizes();\n }\n\n ngOnInit(): void {\n this.menus = this.menuService.getPastMenus();\n \n this.leftStaticStyle = {};\n this.leftTransitStyle = {};\n this.rightStaticStyle = {};\n this.rightTransitStyle = {};\n this.pageClosedStyleLeft = {};\n this.pageClosedStyleRight = {};\n\n this.currentLeftCardIndex = 0;\n this.currentRightCardIndex = 1;\n\n this.isLeftCardMoving = false;\n this.isRightCardMoving = false;\n\n for (let i = 0; i < this.menus.length; i++) {\n this.menuImages[i] = new Image();\n this.menuImages[i].src = this.menus[i];\n }\n\n this.setCardSizes();\n\n this.openPage();\n }\n\n}\n","
\n
\n
\n
\n
\n
\n
\n
\n
\n
","import { Injectable, HostListener } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport enum PageState {\n HOME,\n FUTURE,\n PAST,\n ABOUT\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageStateService {\n\n public currentState: PageState = PageState.HOME;\n private currentStateSubject = new Subject();\n private narrow: boolean;\n private leftCutoff: number;\n private topCutoff: number;\n private counterTopCutoff: number;\n\n setCurrentState(state: PageState) {\n this.currentState = state;\n this.currentStateSubject.next(state);\n }\n\n getCurrentStateObservable() {\n return this.currentStateSubject.asObservable();\n }\n\n getLeftCutoff() {\n this.leftCutoff = (window.innerHeight * 512/320 - window.innerWidth)/3;\n if (window.innerWidth/window.innerHeight < 1.18) {\n this.leftCutoff = window.innerHeight * 422/320 - window.innerWidth;\n }\n return this.leftCutoff;\n }\n\n getTopCutoff() {\n this.topCutoff = 107*(1 - (window.innerHeight/window.innerWidth*306 - 306)/356)/306*window.innerWidth;\n return this.topCutoff;\n }\n\n getCounterTopCutoff() {\n this.counterTopCutoff = 126*(1 - 0.55*(306*window.innerHeight/window.innerWidth - 322)/340)/306*window.innerWidth;\n return this.counterTopCutoff;\n }\n\n isNarrow() {\n this.narrow = window.innerWidth / window.innerHeight < 512/320;\n return this.narrow;\n }\n\n constructor() { }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UrlService {\n private baseUrl: string;\n\n constructor() { \n // this.baseUrl = \"https://ec2-34-234-201-186.compute-1.amazonaws.com:8080\";\n // this.baseUrl = \"http://localhost:8081\";\n this.baseUrl = \"https://pmx1w9aa46.execute-api.us-east-1.amazonaws.com\"\n }\n\n public getBaseUrl() {\n return this.baseUrl;\n }\n}\n","\n\n\n\n\n\n","import { Component, OnInit, ElementRef, ViewChild, HostListener, NgZone, ChangeDetectorRef } from '@angular/core';\nimport { PageStateService } from '../page-state.service';\nimport { ScoreService } from '../score.service';\n\n@Component({\n selector: 'app-frog-game',\n templateUrl: \"./frog-game.component.html\",\n styleUrls: ['./frog-game.component.css']\n})\nexport class FrogGameComponent implements OnInit {\n\n constructor(private ngZone: NgZone, private cdr: ChangeDetectorRef, private scoreService: ScoreService, private state: PageStateService) {}\n\n @ViewChild('gameCanvas', { static: true }) \n canvas: ElementRef;\n ctx: CanvasRenderingContext2D;\n\n scalingFactor: number;\n canvasWidth: number;\n canvasHeight: number;\n canvasTop: number;\n canvasLeft: number;\n aspectRatio: number;\n bodyFont: any;\n\n kitchenBackground: any;\n frogSpriteSheet: any;\n fishSprite: any;\n toySprite: any;\n mittensSpriteSheet: any;\n gameOverText: string;\n restartText: string;\n\n gameStarted: boolean;\n gameOver: boolean;\n isJumping: boolean;\n narrow: boolean;\n leftCutoff: number;\n\n frogSpriteWidth: number;\n frogSpriteHeight: number;\n frogSpriteRow: number;\n frogSpriteColumn: number;\n frogSpriteColumnCount: number;\n frogSpriteRowCount: number;\n frogSpriteInterval: number\n frogSpriteTimer: number;\n frogX: number;\n frogY: number;\n frogWidth: number;\n frogHeight: number;\n\n mittensWidth: number;\n mittensHeight: number;\n mittensSpriteWidth: number;\n mittensSpriteHeight: number;\n mittensSpriteColumn: number;\n mittensSpriteCount: number;\n mittensSpriteInterval: number;\n mittensSpriteTimer: number;\n\n initialFrogSpeed: number;\n frogSpeed: number;\n gravity: number;\n obstacleWidth: number;\n obstacleHeight: number;\n obstacleSpeed: number;\n obstacleSpacing: number;\n lastObstacleX: number;\n\n obstacles: any[] = new Array();\n\n drawing: boolean;\n isMobile: boolean;\n\n jumpButtonStyle: any;\n\n previousTimestamp: number;\n scoreTimer: number;\n\n setCanvasSize() {\n this.canvas.nativeElement.width = window.innerWidth * 375/512;\n this.canvasWidth = window.innerWidth * 375/512;\n this.canvas.nativeElement.height = window.innerWidth * 190/512;\n this.canvasHeight = window.innerWidth * 190/512;\n this.canvasTop = window.innerWidth * 20/512;\n this.canvasLeft = window.innerWidth * 117/512;\n this.canvas.nativeElement.style.zIndex = \"30\";\n this.aspectRatio = window.innerWidth / window.innerHeight;\n this.narrow = this.state.isNarrow();\n\n this.jumpButtonStyle.left = window.innerWidth * 370/512 + \"px\";\n this.jumpButtonStyle.top = window.innerWidth * 165/512 + \"px\";\n this.jumpButtonStyle.height = window.innerWidth * 36/512 + \"px\";\n this.jumpButtonStyle.width = window.innerWidth * 36/512 + \"px\";\n\n if (this.narrow) {\n this.leftCutoff = this.state.getLeftCutoff();\n this.canvasHeight = window.innerHeight * 190/320;\n this.canvas.nativeElement.width = window.innerHeight * 375/320;\n this.canvas.nativeElement.height = window.innerHeight * 190/320;\n this.canvasWidth = window.innerHeight * 375/320;\n this.canvasTop = window.innerHeight * 20/320;\n this.canvasLeft = window.innerHeight * 117/320 - this.leftCutoff;\n\n this.jumpButtonStyle.left = window.innerHeight * 370/320 - this.state.getLeftCutoff() + \"px\";\n this.jumpButtonStyle.top = window.innerHeight * 165/320 + \"px\";\n this.jumpButtonStyle.height = window.innerHeight * 36/320 + \"px\";\n this.jumpButtonStyle.width = window.innerHeight * 36/320 + \"px\";\n }\n\n if (this.aspectRatio < 0.95) { \n this.canvasWidth = window.innerWidth;\n this.canvasHeight = window.innerWidth * 185/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340);\n this.canvasTop = window.innerWidth * 126/306 - this.state.getTopCutoff();\n this.canvas.nativeElement.width = window.innerWidth;\n this.canvas.nativeElement.height = this.canvasHeight;\n this.canvasLeft = 0;\n // this.scalingFactor = this.canvasHeight / (350*512/320);\n\n this.jumpButtonStyle.left = window.innerWidth * 250/306 + \"px\";\n this.jumpButtonStyle.top = window.innerWidth * 292/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.jumpButtonStyle.height = window.innerWidth * 36/306*(1 + 0.25*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.jumpButtonStyle.width = window.innerWidth * 36/306*(1 + 0.25*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n }\n\n if (this.aspectRatio < 0.65) {\n this.canvasWidth = window.innerWidth;\n this.canvasHeight = window.innerWidth * 185/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340);\n this.canvasTop = window.innerWidth * 126/306 - this.state.getTopCutoff();\n this.canvas.nativeElement.width = window.innerWidth;\n this.canvas.nativeElement.height = this.canvasHeight;\n this.canvasLeft = 0;\n // this.scalingFactor = this.canvasHeight / (350*512/320);\n\n this.jumpButtonStyle.left = window.innerWidth * 185/306 + \"px\";\n this.jumpButtonStyle.top = window.innerWidth * 403/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.jumpButtonStyle.height = window.innerWidth * 72/306*(1 + 0.25*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.jumpButtonStyle.width = window.innerWidth * 72/306*(1 + 0.25*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n }\n this.scalingFactor = this.canvasHeight / 413;\n }\n\n setInitialFrogPosition() {\n this.frogX = 10;\n this.frogY = this.canvasHeight - 1.2*this.frogHeight;\n }\n\n drawFrog(elapsed: number) {\n this.frogSpriteInterval = Math.floor(70/elapsed);\n this.ctx.drawImage(\n this.frogSpriteSheet,\n this.frogSpriteWidth * this.frogSpriteColumn,\n this.frogSpriteHeight * this.frogSpriteRow,\n this.frogSpriteWidth,\n this.frogSpriteHeight,\n this.frogX,\n this.frogY,\n this.frogWidth,\n this.frogHeight\n );\n \n if (this.isJumping) {\n if (this.frogSpriteTimer % this.frogSpriteInterval === 0) {\n this.frogSpriteColumn++;\n if (this.frogSpriteColumn === this.frogSpriteColumnCount) {\n this.frogSpriteColumn = 0;\n this.frogSpriteRow++;\n if (this.frogSpriteRow === this.frogSpriteRowCount) {\n this.frogSpriteRow = 0;\n }\n }\n }\n this.frogSpriteTimer ++;\n } else {\n this.frogSpriteRow = 0;\n this.frogSpriteColumn = 0;\n this.frogSpriteTimer = 0;\n }\n }\n\n drawObstacle(elapsed: number) {\n this.mittensSpriteInterval = Math.floor(90/elapsed);\n for (var i = 0; i < this.obstacles.length; i++) {\n if (this.obstacles[i].type < 2) {\n this.ctx.globalAlpha = 1;\n this.ctx.drawImage(\n this.mittensSpriteSheet,\n this.mittensSpriteWidth * this.mittensSpriteColumn,\n 0,\n this.mittensSpriteWidth,\n this.mittensSpriteHeight,\n this.obstacles[i].x,\n this.obstacles[i].y,\n this.mittensWidth,\n this.mittensHeight\n )\n } else if (this.obstacles[i].type > 4) {\n this.ctx.drawImage(\n this.toySprite,\n 0,0,560,560,\n this.obstacles[i].x,\n this.obstacles[i].y,\n this.obstacleWidth,\n this.obstacleHeight\n )\n } else {\n this.ctx.drawImage(\n this.fishSprite,\n 0,0,560,560,\n this.obstacles[i].x,\n this.obstacles[i].y,\n this.obstacleWidth,\n this.obstacleHeight\n )\n }\n }\n if (this.mittensSpriteTimer % this.mittensSpriteInterval === 0) {\n this.mittensSpriteColumn++;\n if (this.mittensSpriteColumn === this.mittensSpriteCount) {\n this.mittensSpriteColumn = 0;\n }\n }\n this.mittensSpriteTimer++;\n }\n\n moveObstacle(elapsed: number) {\n var sf = elapsed/6;\n for (var i = 0; i < this.obstacles.length; i++) {\n this.obstacles[i].x -= this.obstacleSpeed*sf + this.scoreService.score / 2000;\n }\n }\n\n createObstacle() {\n var obstacleX: number = this.canvasWidth;\n var obstacleY: any;\n if (this.canvasWidth - this.lastObstacleX > this.obstacleSpacing) {\n var obstacleType = 5*Math.random();\n if (obstacleType < 2) {\n obstacleY = this.canvasHeight - 0.2*this.frogHeight - this.mittensHeight;\n } else {\n obstacleY = this.canvasHeight - 0.2*this.frogHeight - this.obstacleHeight;\n }\n this.obstacles.push({ x: obstacleX, y: obstacleY, type: obstacleType }); \n this.obstacleSpacing = 3.5*this.frogWidth + 5*this.frogWidth*Math.random();\n } \n if (this.obstacles.length > 0) {\n this.lastObstacleX = this.obstacles[this.obstacles.length - 1].x;\n }\n }\n\n checkCollision() {\n for (var i = 0; i < this.obstacles.length; i++) {\n // this.ctx.fillStyle = 'red';\n // this.ctx.fillRect(this.obstacles[i].x + 0.15*this.mittensWidth,this.obstacles[i].y + 0.2*this.obstacleHeight,5,5);\n // this.ctx.fillStyle = 'blue';\n // this.ctx.fillRect(this.frogX + 0.15*this.frogWidth,this.frogY + 0.95*this.frogHeight,5,5);\n // this.ctx.fillStyle = 'green';\n // this.ctx.fillRect(this.frogX + 0.75*this.frogWidth,this.frogY + 0.95*this.frogHeight,5,5);\n if (this.obstacles[i].type < 2 &&\n this.frogX + 0.15*this.frogWidth < this.obstacles[i].x + 0.8*this.mittensWidth &&\n this.frogX + 0.75*this.frogWidth > this.obstacles[i].x + 0.1*this.mittensWidth &&\n this.frogY < this.obstacles[i].y + this.mittensHeight &&\n this.frogY + 0.95*this.frogHeight > this.obstacles[i].y + 0.2*this.obstacleHeight\n ) {\n this.gameOver = true; \n }\n else if (\n this.frogX + 0.15*this.frogWidth < this.obstacles[i].x + this.obstacleWidth &&\n this.frogX + this.frogWidth > this.obstacles[i].x &&\n this.frogY < this.obstacles[i].y + this.obstacleHeight &&\n this.frogHeight + this.frogY > this.obstacles[i].y\n ) {\n this.gameOver = true;\n }\n }\n }\n\n update(elapsed: number) {\n let sf = elapsed / 6;\n if (this.isJumping) {\n this.frogY -= this.frogSpeed * sf;\n this.frogSpeed -= this.gravity * sf;\n if (this.frogY > this.canvasHeight - 1.2*this.frogHeight) {\n this.isJumping = false;\n this.frogY = this.canvasHeight - 1.2*this.frogHeight;\n this.frogSpeed = this.initialFrogSpeed;\n }\n }\n this.scoreTimer += elapsed;\n\n if (this.scoreTimer > 6) { \n this.scoreService.score += Math.floor(this.scoreTimer/6);\n this.scoreTimer = this.scoreTimer % 6;\n }\n }\n\n draw(currentTimestamp: number) {\n const elapsed = currentTimestamp - this.previousTimestamp;\n this.previousTimestamp = currentTimestamp;\n this.drawing = true;\n this.ctx.clearRect(0, 0, this.canvasWidth, this.canvasHeight);\n if (this.gameStarted) {\n this.drawFrog(elapsed);\n if (this.gameOver) {\n this.cdr.detectChanges();\n this.drawing = false;\n } else {\n this.drawObstacle(elapsed);\n this.moveObstacle(elapsed);\n this.createObstacle();\n this.checkCollision();\n this.update(elapsed);\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.draw(performance.now())));\n }\n } else {\n this.drawFrog(elapsed);\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.draw(performance.now())));\n }\n }\n\n resetGame() {\n this.setCanvasSize();\n this.gameOver = false;\n this.gameStarted = false;\n this.isJumping = false;\n this.obstacles = new Array();\n this.scoreService.score = 0;\n this.lastObstacleX = 0;\n this.obstacleSpacing = 200 * this.scalingFactor;\n this.frogHeight = 85 * this.scalingFactor;\n this.frogWidth = 75 * this.scalingFactor;\n this.initialFrogSpeed = 9 * this.scalingFactor;\n this.frogSpeed = 9 * this.scalingFactor;\n this.frogSpriteRow = 0;\n this.frogSpriteColumn = 0;\n this.frogSpriteTimer = 0;\n this.setInitialFrogPosition();\n this.cdr.detectChanges();\n this.previousTimestamp = performance.now();\n this.draw(this.previousTimestamp);\n }\n\n jumpButtonTouchStart() {\n if (this.gameOver) {\n this.resetGame();\n this.gameStarted = true;\n } else {\n if (this.gameStarted && !this.isJumping) {\n this.isJumping = true;\n } else {\n this.gameStarted = true;\n this.isJumping = true;\n localStorage.setItem(\"gameStarted\", \"true\");\n }\n }\n this.jumpButtonStyle.backgroundImage = `url(\"assets/JumpButtonPressed.PNG\")`;\n }\n\n jumpButtonTouchEnd() {\n this.jumpButtonStyle.backgroundImage = `url(\"assets/JumpButton.PNG\")`;\n }\n\n @HostListener('document:keydown', ['$event'])\n onKeyDown(e: KeyboardEvent) {\n if (e.key == \" \" && !this.gameOver) {\n if (this.gameStarted && !this.isJumping) {\n this.isJumping = true;\n } else {\n this.gameStarted = true;\n this.isJumping = true;\n localStorage.setItem(\"gameStarted\", \"true\");\n }\n } else if (e.key == \" \") {\n //document.location.reload();\n // this.scoreService.score = 0;\n // this.draw();\n // this.gameStarted = true; \n this.resetGame();\n // this.gameStarted = true; \n // localStorage.setItem(\"gameStarted\", \"true\");\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setCanvasSize();\n this.setInitialFrogPosition();\n this.frogHeight = 85 * this.scalingFactor;\n this.frogWidth = 75 * this.scalingFactor;\n this.initialFrogSpeed = 9 * this.scalingFactor;\n this.frogSpeed = 9 * this.scalingFactor;\n this.gravity = 0.2 * this.scalingFactor;\n this.isJumping = false;\n this.obstacleWidth = 70 * this.scalingFactor;\n this.obstacleHeight = 70 * this.scalingFactor;\n this.obstacleSpeed = 3 * this.scalingFactor;\n this.obstacleSpacing = 200 * this.scalingFactor;\n\n this.mittensWidth = 65 * this.scalingFactor;\n this.mittensHeight = 130 * this.scalingFactor; \n //this.draw();\n if (!this.drawing) {\n this.draw(this.previousTimestamp);\n }\n }\n\n ngOnInit() {\n this.ctx = this.canvas.nativeElement.getContext('2d');\n this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || (navigator.userAgent.includes(\"Macintosh\") && navigator.maxTouchPoints > 1);\n\n this.jumpButtonStyle = {};\n this.jumpButtonStyle.backgroundImage = `url(\"assets/JumpButton.PNG\")`;\n this.jumpButtonStyle.backgroundSize = \"cover\";\n\n this.scoreService.score = 0;\n this.scoreTimer = 0;\n\n this.kitchenBackground = new Image();\n this.kitchenBackground.src = \"assets/kitchen/Kitchen_Holiday.PNG\";\n\n this.fishSprite = new Image();\n this.fishSprite.src = \"assets/Fish.PNG\";\n\n this.toySprite = new Image();\n this.toySprite.src = \"assets/FetchToy.PNG\";\n\n this.frogSpriteSheet = new Image();\n this.frogSpriteSheet.src = \"assets/FrogHatHiRes.PNG\";\n\n this.mittensSpriteSheet = new Image();\n this.mittensSpriteSheet.src = \"assets/MittensShadow.PNG\";\n\n this.setCanvasSize();\n\n this.gameOver = false;\n this.gameStarted = false;\n\n this.frogSpriteWidth = 608;\n this.frogSpriteHeight = 688;\n this.frogSpriteRow = 0;\n this.frogSpriteColumn = 0;\n this.frogSpriteColumnCount = 4;\n this.frogSpriteRowCount = 2;\n this.frogSpriteInterval = 10;\n this.frogSpriteTimer = 0;\n\n // if (localStorage.getItem(\"gameStarted\") === null) {\n // localStorage.setItem(\"gameStarted\", \"false\");\n // }\n // var gameStarted = localStorage.getItem(\"gameStarted\") === true;\n this.gameOverText = \"GAME OVER\";\n this.restartText = \"Press SPACE to Restart\";\n this.frogHeight = 85 * this.scalingFactor;\n this.frogWidth = 75 * this.scalingFactor;\n \n this.setInitialFrogPosition();\n\n this.initialFrogSpeed = 9 * this.scalingFactor;\n this.frogSpeed = 9 * this.scalingFactor;\n this.gravity = 0.2 * this.scalingFactor;\n this.isJumping = false;\n this.obstacleWidth = 70 * this.scalingFactor;\n this.obstacleHeight = 70 * this.scalingFactor;\n this.obstacleSpeed = 3 * this.scalingFactor;\n this.obstacleSpacing = 200 * this.scalingFactor;\n this.lastObstacleX = 0;\n\n this.mittensWidth = 65 * this.scalingFactor;\n this.mittensHeight = 130 * this.scalingFactor;\n this.mittensSpriteWidth = 512;\n this.mittensSpriteHeight = 1024;\n this.mittensSpriteColumn = 0;\n this.mittensSpriteCount = 7;\n this.mittensSpriteInterval = 20;\n this.mittensSpriteTimer = 0;\n\n this.bodyFont = getComputedStyle(document.body).fontFamily;\n\n this.previousTimestamp = performance.now();\n this.draw(this.previousTimestamp);\n\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { UrlService } from './url.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReservationService {\n baseUrl: string;\n reservationEndpoint: string;\n\n constructor(private urlService: UrlService, private http: HttpClient) { \n this.baseUrl = this.urlService.getBaseUrl();\n this.reservationEndpoint = \"/CouchCafe/api/reservation\";\n }\n\n public submitReservation(reservation: any) {\n return this.http.post(this.baseUrl + this.reservationEndpoint, reservation, {});\n }\n\n public getReservationsByDate(dateId: number) {\n return this.http.get(this.baseUrl + this.reservationEndpoint + \"/\" + dateId, {});\n }\n}\n","import { Component, OnInit, HostListener, ChangeDetectorRef, NgZone, ViewChild, ElementRef } from '@angular/core';\nimport { PageStateService, PageState } from '../page-state.service';\n\n@Component({\n selector: 'app-our-story-book',\n templateUrl: './our-story-book.component.html',\n styleUrls: ['./our-story-book.component.css']\n})\nexport class OurStoryBookComponent implements OnInit {\n\n public PageState = PageState;\n\n @ViewChild('book') book: ElementRef;\n\n bookStyle: any;\n bookOpenedStyle: any;\n bookText: string;\n\n books: string[] = [\"assets/book/AboutUsBook_1.PNG\", \"assets/book/AboutUsBook_2.PNG\", \"assets/book/AboutUsBook_3.PNG\", \"assets/book/AboutUsBook_4.PNG\", \"assets/book/AboutUsBook_5.PNG\",\n \"assets/book/AboutUsBook_6.PNG\", \"assets/book/AboutUsBook_7.PNG\", \"assets/book/AboutUsBook_8.PNG\", \"assets/book/AboutUsBook_9.PNG\", \"assets/book/AboutUsBook_10.PNG\"];\n bookImages: any[] = [];\n currentFrame: number;\n\n pageOpened: boolean;\n\n constructor(private state: PageStateService, private cdr: ChangeDetectorRef, private ngZone: NgZone) { }\n\n setBookSize() {\n let aspectRatio = window.innerWidth/window.innerHeight;\n this.bookStyle.width = window.innerWidth * 113/512 + \"px\";\n this.bookStyle.height = window.innerWidth * 171/512 + \"px\";\n this.bookStyle.left = window.innerWidth * 303/512 + \"px\";\n this.bookStyle.top = window.innerWidth * 24/512 + \"px\";\n this.bookOpenedStyle.width = window.innerWidth * 113/512 + \"px\";\n this.bookOpenedStyle.height = window.innerWidth * 171/512 + \"px\";\n this.bookOpenedStyle.left = window.innerWidth * 275/512 + \"px\";\n this.bookOpenedStyle.top = window.innerWidth * 15/512 + \"px\";\n this.bookOpenedStyle.fontSize = window.innerWidth * 6.5/512 + \"px\";\n this.bookOpenedStyle.paddingTop = window.innerWidth * 10/512 + \"px\";\n this.bookOpenedStyle.paddingLeft = window.innerWidth * 8/512 + \"px\";\n this.bookOpenedStyle.paddingRight = window.innerWidth * 12/512 + \"px\";\n this.bookOpenedStyle.paddingBottom = window.innerWidth * 17/512 + \"px\";\n this.bookOpenedStyle.lineHeight = window.innerWidth * 10/512 + \"px\";\n if (aspectRatio < 0.95) {\n this.bookStyle.width = window.innerWidth * 113/306 + \"px\";\n this.bookStyle.height = window.innerWidth * 171/306 + \"px\";\n this.bookStyle.left = window.innerWidth * 187/306 + \"px\";\n this.bookStyle.top = window.innerWidth * 128/306 - this.state.getTopCutoff() + \"px\";\n this.bookOpenedStyle.width = window.innerWidth * 113/306*(1 + 0.4*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.bookOpenedStyle.height = window.innerWidth * 171/306*(1 + 0.4*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.bookOpenedStyle.left = window.innerWidth * 157/306*(1 - 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.bookOpenedStyle.top = window.innerWidth * 119/306*(1 - 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getTopCutoff() + \"px\";\n this.bookOpenedStyle.fontSize = window.innerWidth * 6.3/306*(1 + 0.4*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.bookOpenedStyle.paddingTop = window.innerWidth * 10/306 + \"px\";\n this.bookOpenedStyle.paddingLeft = window.innerWidth * 8/306 + \"px\";\n this.bookOpenedStyle.paddingRight = window.innerWidth * 12/306 + \"px\";\n this.bookOpenedStyle.paddingBottom = window.innerWidth * 17/306 + \"px\";\n this.bookOpenedStyle.lineHeight = window.innerWidth * 10/306*(1 + 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n } else if (aspectRatio < 512/320) {\n this.bookStyle.width = window.innerHeight * 113/320 + \"px\";\n this.bookStyle.height = window.innerHeight * 171/320 + \"px\";\n this.bookStyle.left = window.innerHeight * 303/320 - this.state.getLeftCutoff() + \"px\";\n this.bookStyle.top = window.innerHeight * 24/320 + \"px\";\n this.bookOpenedStyle.width = window.innerHeight * 113/320 + \"px\";\n this.bookOpenedStyle.height = window.innerHeight * 171/320 + \"px\";\n this.bookOpenedStyle.left = window.innerHeight * 275/320 - this.state.getLeftCutoff() + \"px\";\n this.bookOpenedStyle.top = window.innerHeight * 15/320 + \"px\";\n this.bookOpenedStyle.fontSize = window.innerHeight * 6.5/320 + \"px\";\n this.bookOpenedStyle.paddingTop = window.innerHeight * 10/320 + \"px\";\n this.bookOpenedStyle.paddingLeft = window.innerHeight * 8/320 + \"px\";\n this.bookOpenedStyle.paddingRight = window.innerHeight * 12/320 + \"px\";\n this.bookOpenedStyle.paddingBottom = window.innerHeight * 17/320 + \"px\";\n this.bookOpenedStyle.lineHeight = window.innerHeight * 10/320 + \"px\";\n }\n this.cdr.detectChanges();\n }\n\n openPage() {\n if (this.currentFrame < this.bookImages.length) {\n this.bookStyle.height = parseInt(this.bookStyle.height, 10) + 1/4*(parseInt(this.bookOpenedStyle.height) - parseInt(this.bookStyle.height, 10)) + \"px\";\n this.bookStyle.width = parseInt(this.bookStyle.width, 10) + 1/4*(parseInt(this.bookOpenedStyle.width) - parseInt(this.bookStyle.width, 10)) + \"px\";\n this.bookStyle.left = parseInt(this.bookStyle.left, 10) + 1/4*(parseInt(this.bookOpenedStyle.left) - parseInt(this.bookStyle.left, 10)) + \"px\";\n this.bookStyle.top = parseInt(this.bookStyle.top, 10) + 1/4*(parseInt(this.bookOpenedStyle.top) - parseInt(this.bookStyle.top, 10)) + \"px\";\n this.bookStyle.backgroundImage = `url(${this.bookImages[this.currentFrame].src})`;\n this.bookOpenedStyle.backgroundImage = `url(${this.bookImages[this.currentFrame].src})`;\n this.currentFrame++;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.openPage()));\n }, 50);\n } else {\n this.pageOpened = true;\n this.setBookSize();\n this.bookText = \"Welcome to the kitchen! Head chef Liz started her career in industrial safety for [insert evil megacorp] but hated that corporate shit, so now she does Couch Cafe.\";\n }\n this.cdr.detectChanges();\n }\n\n closePage() {\n this.bookText = \"\";\n if (this.currentFrame >= 0) {\n this.bookOpenedStyle.height = parseInt(this.bookOpenedStyle.height, 10) + 1/4*(parseInt(this.bookStyle.height) - parseInt(this.bookOpenedStyle.height, 10)) + \"px\";\n this.bookOpenedStyle.width = parseInt(this.bookOpenedStyle.width, 10) + 1/4*(parseInt(this.bookStyle.width) - parseInt(this.bookOpenedStyle.width, 10)) + \"px\";\n this.bookOpenedStyle.left = parseInt(this.bookOpenedStyle.left, 10) + 1/4*(parseInt(this.bookStyle.left) - parseInt(this.bookOpenedStyle.left, 10)) + \"px\";\n this.bookOpenedStyle.top = parseInt(this.bookOpenedStyle.top, 10) + 1/4*(parseInt(this.bookStyle.top) - parseInt(this.bookOpenedStyle.top, 10)) + \"px\";\n this.bookOpenedStyle.backgroundImage = `url(${this.bookImages[this.currentFrame].src})`;\n this.currentFrame--;\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.closePage()));\n }, 50);\n } else {\n this.pageOpened = false;\n this.state.setCurrentState(PageState.HOME);\n }\n this.cdr.detectChanges();\n }\n\n @HostListener('document:click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.state.currentState === PageState.ABOUT && !this.book.nativeElement.contains(event.target) && this.pageOpened) {\n this.currentFrame = this.bookImages.length - 1;\n this.closePage();\n this.cdr.detectChanges();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setBookSize();\n }\n\n ngOnInit(): void {\n this.currentFrame = 0;\n\n for (let i = 0; i < this.books.length; i++) {\n this.bookImages[i] = new Image();\n this.bookImages[i].src = this.books[i];\n }\n\n this.bookStyle = {};\n this.bookOpenedStyle = {};\n this.bookStyle.backgroundImage = `url(${this.bookImages[0].src})`;\n this.bookOpenedStyle.backgroundImage = `url(${this.bookImages[0].src})`;\n\n this.pageOpened = false;\n\n this.setBookSize();\n\n this.openPage();\n }\n\n}\n","
\n
\n","import { Component, OnInit, HostListener, ChangeDetectorRef, ViewChild, ElementRef, NgZone } from '@angular/core';\nimport { PageStateService, PageState } from '../page-state.service';\nimport { Router } from '@angular/router';\nimport { FutureEventsService } from '../future-events.service';\n\nconst monthNames = [\n \"January\", \"February\", \"March\", \"April\",\n \"May\", \"June\", \"July\", \"August\",\n \"September\", \"October\", \"November\", \"December\"\n];\n\n@Component({\n selector: 'app-future-dates-calendar',\n templateUrl: './future-dates-calendar.component.html',\n styleUrls: ['./future-dates-calendar.component.css']\n})\nexport class FutureDatesCalendarComponent implements OnInit {\n\n public PageState = PageState;\n\n @ViewChild('futureDates') calendar: ElementRef;\n @ViewChild('previousMonthButton') previousButton: ElementRef;\n @ViewChild('nextMonthButton') nextButton: ElementRef;\n\n calendarStyle: any;\n calendarOpenedStyle: any;\n reservationButtonStyle: any;\n buttonStyle: any;\n previousButtonStyle: any;\n nextButtonStyle: any;\n events: any[];\n currentMonthEvents: any[];\n\n currentDate: Date;\n currentMonth: number;\n currentMonthName: string;\n selectedMonth: number;\n selectedMonthName: string;\n selectedYear: number;\n currentYear: number;\n\n pageOpened: boolean;\n textEnabled: boolean;\n\n constructor(private cdr: ChangeDetectorRef, private state: PageStateService, private ngZone: NgZone, private eventsService: FutureEventsService, private router: Router) { }\n\n setCalendarSize() {\n let aspectRatio = window.innerWidth/window.innerHeight;\n this.calendarStyle.width = window.innerWidth * 28/512 + \"px\";\n this.calendarStyle.height = window.innerWidth * 27/512 + \"px\";\n this.calendarStyle.left = window.innerWidth * 78/512 + \"px\";\n this.calendarStyle.top = window.innerWidth * 64/512 + \"px\";\n this.calendarStyle.paddingTop = window.innerWidth * 12/512 + \"px\";\n this.calendarStyle.paddingLeft = window.innerWidth * 2.4/512 + \"px\";\n this.calendarStyle.fontSize = window.innerWidth * 1.44/512 + \"px\";\n this.calendarStyle.textAlign = \"left\";\n this.calendarOpenedStyle.width = window.innerWidth * 151/512 + \"px\";\n this.calendarOpenedStyle.height = window.innerWidth * 131/512 + \"px\";\n this.calendarOpenedStyle.left = window.innerWidth * 90/512 + \"px\";\n this.calendarOpenedStyle.top = window.innerWidth * 32/512 + \"px\";\n this.calendarOpenedStyle.paddingRight = \"0px\";\n this.calendarOpenedStyle.textAlign = \"left\";\n if (aspectRatio < 0.65) {\n console.log(\"0.65\")\n this.calendarStyle.top = window.innerWidth * 363/306*(1 + 0.095*(306*window.innerHeight/window.innerWidth - 470)/192)*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.calendarStyle.left = window.innerWidth/2 - (window.innerWidth * 216/512*(1 + 0.5*(306*window.innerHeight/window.innerWidth - 322)/340))/2 + window.innerWidth*10/306 + \"px\";\n this.calendarStyle.height = window.innerWidth * 27/306*(1 + 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.calendarStyle.width = window.innerWidth * 39/306*(1 + 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.calendarStyle.paddingTop = window.innerWidth * 16.8/306*(1 + 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.calendarStyle.paddingLeft = window.innerWidth * 3.36/306*(1 + 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n this.calendarStyle.fontSize = window.innerWidth * 1.44/306 + \"px\";\n this.calendarOpenedStyle.width = window.innerWidth * 151/306 + \"px\";\n this.calendarOpenedStyle.height = window.innerWidth * 131/306 + \"px\";\n this.calendarOpenedStyle.left = window.innerHeight * 28/320 + \"px\";\n this.calendarOpenedStyle.top = window.innerWidth * 135/306 - this.state.getTopCutoff() + \"px\";\n } else if (aspectRatio < 0.95) {\n console.log(\"0.95\")\n this.calendarStyle.width = window.innerWidth * 30/306 + \"px\";\n this.calendarStyle.height = window.innerWidth * 27/306 + \"px\";\n this.calendarStyle.left = window.innerWidth/2 - window.innerHeight * 146/512/2 + \"px\";\n this.calendarStyle.top = window.innerWidth * 357/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.calendarStyle.paddingTop = window.innerWidth * 12/306 + \"px\";\n this.calendarStyle.fontSize = window.innerWidth * 1.44/306 + \"px\";\n this.calendarOpenedStyle.width = window.innerWidth * 151/306 + \"px\";\n this.calendarOpenedStyle.height = window.innerWidth * 131/306 + \"px\";\n this.calendarOpenedStyle.left = window.innerHeight * 28/320 + \"px\";\n this.calendarOpenedStyle.top = window.innerWidth * 135/306 - this.state.getTopCutoff() + \"px\";\n } else if (aspectRatio < 1.12) {\n this.calendarStyle.width = window.innerHeight * 39/320 + \"px\";\n this.calendarStyle.height = window.innerHeight * 27/320 + \"px\";\n this.calendarStyle.left = window.innerWidth/2 - window.innerHeight * 216/512/2 + \"px\";\n this.calendarStyle.top = window.innerHeight * 230/320 + \"px\";\n this.calendarStyle.paddingTop = window.innerHeight * 12/320 + \"px\";\n this.calendarStyle.fontSize = window.innerHeight * 1.44/320 + \"px\";\n this.calendarOpenedStyle.width = window.innerHeight * 151/320 + \"px\";\n this.calendarOpenedStyle.height = window.innerHeight * 131/320 + \"px\";\n this.calendarOpenedStyle.left = window.innerHeight * 28/320 + \"px\";\n this.calendarOpenedStyle.top = window.innerHeight * 32/320 + \"px\";\n } else if (aspectRatio < 512/320) {\n this.calendarStyle.width = window.innerHeight * 28/320 + \"px\";\n this.calendarStyle.height = window.innerHeight * 27/320 + \"px\";\n this.calendarStyle.left = window.innerHeight * 78/320 - this.state.getLeftCutoff() + \"px\";\n this.calendarStyle.top = window.innerHeight * 64/320 + \"px\";\n this.calendarStyle.paddingTop = window.innerHeight * 12/320 + \"px\";\n this.calendarStyle.fontSize = window.innerHeight * 1.44/320 + \"px\";\n this.calendarOpenedStyle.width = window.innerHeight * 151/320 + \"px\";\n this.calendarOpenedStyle.height = window.innerHeight * 131/320 + \"px\";\n this.calendarOpenedStyle.left = window.innerHeight * 90/320 - this.state.getLeftCutoff() + \"px\";\n this.calendarOpenedStyle.top = window.innerHeight * 32/320 + \"px\";\n }\n\n let calendarHeight = parseFloat(this.calendarOpenedStyle.height);\n this.calendarOpenedStyle.paddingTop = calendarHeight * 30/131 + \"px\";\n this.calendarOpenedStyle.paddingLeft = calendarHeight * 10/131 + \"px\";\n this.calendarOpenedStyle.fontSize = calendarHeight * 2.7/131 + \"px\";\n this.calendarOpenedStyle.lineHeight = calendarHeight * 7.2/131 + \"px\";\n this.cdr.detectChanges();\n }\n\n setButtonStyle() {\n let aspectRatio = window.innerWidth/window.innerHeight;\n this.buttonStyle.fontSize = window.innerWidth * 3/512 + \"px\";\n // this.buttonStyle.height = window.innerWidth * 7/512 + \"px\";\n this.buttonStyle.padding = window.innerWidth * 1.5/512 + \"px\";\n this.buttonStyle.borderWidth = window.innerWidth * 1/512 + \"px\";\n if (aspectRatio < 0.95) {\n this.buttonStyle.fontSize = window.innerWidth * 3/306 + \"px\";\n // this.buttonStyle.height = window.innerWidth * 7/306 + \"px\";\n this.buttonStyle.padding = window.innerWidth * 1.5/306 + \"px\";\n this.buttonStyle.borderWidth = window.innerWidth * 1/306 + \"px\";\n } else if (aspectRatio < 512/320) {\n this.buttonStyle.fontSize = window.innerHeight * 3/320 + \"px\";\n // this.buttonStyle.height = window.innerHeight * 7/320 + \"px\";\n this.buttonStyle.padding = window.innerHeight * 1.5/320 + \"px\";\n this.buttonStyle.borderWidth = window.innerHeight * 1/320 + \"px\";\n }\n\n this.previousButtonStyle = { ...this.buttonStyle };\n this.nextButtonStyle = { ...this.buttonStyle };\n\n this.previousButtonStyle.left = parseFloat(this.calendarOpenedStyle.left) + 1/3*parseFloat(this.calendarOpenedStyle.paddingLeft) + \"px\";\n this.nextButtonStyle.left = parseFloat(this.calendarOpenedStyle.left) + parseFloat(this.calendarOpenedStyle.width) - parseFloat(this.calendarOpenedStyle.paddingLeft) + \"px\";\n this.previousButtonStyle.top = parseFloat(this.calendarOpenedStyle.top) + parseFloat(this.calendarOpenedStyle.height) + 5/8*parseFloat(this.calendarOpenedStyle.paddingTop) + \"px\";\n this.nextButtonStyle.top = parseFloat(this.calendarOpenedStyle.top) + parseFloat(this.calendarOpenedStyle.height) + 5/8*parseFloat(this.calendarOpenedStyle.paddingTop) + \"px\";\n }\n\n openPage() {\n if (parseInt(this.calendarStyle.height, 10)/parseInt(this.calendarOpenedStyle.height) < 0.95) {\n this.calendarStyle.width = parseInt(this.calendarStyle.width, 10) + 1/3*(parseInt(this.calendarOpenedStyle.width) - parseInt(this.calendarStyle.width, 10)) + \"px\";\n this.calendarStyle.height = parseInt(this.calendarStyle.height, 10) + 1/3*(parseInt(this.calendarOpenedStyle.height) - parseInt(this.calendarStyle.height, 10)) + \"px\";\n this.calendarStyle.left = parseInt(this.calendarStyle.left, 10) + 1/3*(parseInt(this.calendarOpenedStyle.left) - parseInt(this.calendarStyle.left, 10)) + \"px\";\n this.calendarStyle.top = parseInt(this.calendarStyle.top, 10) + 1/3*(parseInt(this.calendarOpenedStyle.top) - parseInt(this.calendarStyle.top, 10)) + \"px\";\n this.calendarStyle.paddingTop = parseInt(this.calendarStyle.paddingTop, 10) + 1/3*(parseInt(this.calendarOpenedStyle.paddingTop) - parseInt(this.calendarStyle.paddingTop, 10)) + \"px\";\n this.calendarStyle.fontSize = parseInt(this.calendarStyle.fontSize, 10) + 1/3*(parseInt(this.calendarOpenedStyle.fontSize) - parseInt(this.calendarStyle.fontSize, 10)) + \"px\";\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.openPage()));\n }, 50);\n } else {\n this.pageOpened = true;\n this.textEnabled = true;\n this.setCalendarSize();\n this.setButtonStyle();\n }\n this.cdr.detectChanges();\n }\n\n closePage() {\n this.textEnabled = false;\n if (parseInt(this.calendarOpenedStyle.height, 10)/parseInt(this.calendarStyle.height, 10) > 1.05) {\n this.calendarOpenedStyle.width = parseInt(this.calendarOpenedStyle.width, 10) + 1/3*(parseInt(this.calendarStyle.width) - parseInt(this.calendarOpenedStyle.width, 10)) + \"px\";\n this.calendarOpenedStyle.height = parseInt(this.calendarOpenedStyle.height, 10) + 1/3*(parseInt(this.calendarStyle.height) - parseInt(this.calendarOpenedStyle.height, 10)) + \"px\";\n this.calendarOpenedStyle.left = parseInt(this.calendarOpenedStyle.left, 10) + 1/3*(parseInt(this.calendarStyle.left) - parseInt(this.calendarOpenedStyle.left, 10)) + \"px\";\n this.calendarOpenedStyle.top = parseInt(this.calendarOpenedStyle.top, 10) + 1/3*(parseInt(this.calendarStyle.top) - parseInt(this.calendarOpenedStyle.top, 10)) + \"px\";\n this.calendarOpenedStyle.paddingTop = parseInt(this.calendarOpenedStyle.paddingTop, 10) + 1/3*(parseInt(this.calendarStyle.paddingTop) - parseInt(this.calendarOpenedStyle.paddingTop, 10)) + \"px\";\n this.calendarOpenedStyle.fontSize = parseInt(this.calendarOpenedStyle.fontSize, 10) + 1/3*(parseInt(this.calendarStyle.fontSize) - parseInt(this.calendarOpenedStyle.fontSize, 10)) + \"px\";\n \n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => this.closePage()));\n }, 20);\n } else {\n this.pageOpened = false;\n this.state.setCurrentState(PageState.HOME);\n }\n this.cdr.detectChanges();\n }\n\n openReservation(dateId: number) {\n this.ngZone.run(() => {\n this.router.navigate(['/reservations', dateId]);\n });\n }\n\n getCurrentMonthDates() {\n this.currentMonthEvents = [];\n \n for (let i = 0; i < this.events.length; i++) {\n for (let j = 0; j < this.events[i].dates.length; j++) {\n if (this.events[i].dates[j].date.includes(monthNames[this.selectedMonth]) && this.events[i].dates[j].date.includes(this.selectedYear)) {\n this.currentMonthEvents.push(this.events[i]);\n break;\n }\n }\n }\n }\n\n nextMonth() {\n if (this.selectedMonth < 11) {\n this.selectedMonth++;\n } else {\n this.selectedMonth = 0;\n this.selectedYear++;\n }\n this.selectedMonthName = monthNames[this.selectedMonth];\n this.getCurrentMonthDates();\n }\n\n previousMonth() {\n if (this.selectedMonth > 0) {\n this.selectedMonth--;\n } else {\n this.selectedMonth = 11;\n this.selectedYear--;\n }\n this.selectedMonthName = monthNames[this.selectedMonth];\n this.getCurrentMonthDates();\n }\n\n @HostListener('document:click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.state.currentState === PageState.FUTURE \n && !this.calendar.nativeElement.contains(event.target) \n && !this.previousButton.nativeElement.contains(event.target)\n && !this.nextButton.nativeElement.contains(event.target)\n && this.pageOpened) {\n this.closePage();\n this.cdr.detectChanges();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setCalendarSize();\n this.setButtonStyle();\n }\n\n ngOnInit(): void {\n this.calendarStyle = {};\n this.calendarOpenedStyle = {};\n this.buttonStyle = {};\n this.previousButtonStyle = {};\n this.nextButtonStyle = {};\n this.events = [];\n this.calendarStyle.backgroundImage = `url(\"assets/Calendar.PNG\")`;\n this.calendarOpenedStyle.backgroundImage = `url(\"assets/Calendar.PNG\")`;\n\n this.currentDate = new Date();\n this.currentMonth = this.currentDate.getMonth();\n this.selectedMonth = this.currentMonth;\n this.selectedMonthName = monthNames[this.selectedMonth];\n this.currentMonthName = monthNames[this.currentDate.getMonth()];\n this.currentYear = this.currentDate.getFullYear();\n this.selectedYear = this.currentYear;\n\n // this.http.get('assets/futureDates.txt', { responseType: 'text' }).subscribe(data => {\n // this.futureDatesText = data;\n // });\n\n this.eventsService.getFutureEvents().subscribe((data: any[]) => {\n this.events = this.eventsService.sortFutureDates(data);\n this.getCurrentMonthDates();\n });\n\n this.pageOpened = false;\n this.textEnabled = false;\n\n this.setCalendarSize();\n this.setButtonStyle();\n setTimeout(() => {\n this.setCalendarSize();\n this.setButtonStyle();\n }, 500);\n this.openPage();\n }\n\n}\n","\r\n
\r\n
\r\n

{{ selectedMonthName }} {{ selectedYear }}

\r\n
\r\n

Check our OpenTable for details on upcoming reservations.

\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { UrlService } from './url.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FutureEventsService {\n baseUrl: string;\n eventsEndpoint: string;\n datesEndpoint: string;\n\n constructor(private http: HttpClient, private urlService: UrlService) {\n this.baseUrl = this.urlService.getBaseUrl();\n this.eventsEndpoint = \"/CouchCafe/api/futureevents\";\n this.datesEndpoint = \"/CouchCafe/api/futuredates\";\n }\n\n public saveFutureEvent(futureEvent: any) {\n return this.http.post(this.baseUrl + this.eventsEndpoint, futureEvent, {});\n }\n\n public getFutureEvents() {\n return this.http.get(this.baseUrl + this.eventsEndpoint, {});\n }\n\n public getFutureDateById(dateId: number) {\n return this.http.get(this.baseUrl + this.datesEndpoint + \"/\" + dateId);\n }\n\n public formatDateWithoutTimeZone(originalDateString: string): string {\n // Extract the relevant part of the string (excluding the timezone)\n const formattedDateString = originalDateString.substring(0, 19);\n \n // Convert the string to a Date object\n const dateWithoutTimeZone = new Date(formattedDateString);\n \n // Format the date without considering the time zone\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n \n const formattedDate = new Intl.DateTimeFormat('en-US', options).format(dateWithoutTimeZone);\n \n // Format the time without considering the time zone\n const hours = dateWithoutTimeZone.getHours();\n const minutes = dateWithoutTimeZone.getMinutes();\n const amPm = hours >= 12 ? 'PM' : 'AM';\n const formattedHours = hours % 12 === 0 ? 12 : hours % 12;\n const formattedTime = `${formattedHours}:${minutes.toString().padStart(2, '0')} ${amPm}`;\n \n return `${formattedDate} @ ${formattedTime}`;\n }\n\n public sortFutureDates(data: any[]) {\n let events: any[] = [];\n const sortedEvents = data.sort((a,b) => {\n let aDate = new Date(a.dates[0].date);\n let bDate = new Date(b.dates[0].date);\n return aDate.getTime() - bDate.getTime();\n });\n \n for (let i = 0; i < sortedEvents.length; i++) {\n const sortedDates = sortedEvents[i].dates.sort((a, b) => {\n let aDate = new Date(a.date);\n let bDate = new Date(b.date);\n return aDate.getTime() - bDate.getTime();\n });\n let event = {\n name: sortedEvents[i].name,\n dates: []\n };\n for (let j = 0; j < data[i].dates.length; j++) {\n event.dates.push({\n dateId: sortedEvents[i].dates[j].id,\n date: this.formatDateWithoutTimeZone(sortedDates[j].date),\n soldOut: sortedEvents[i].dates[j].soldOut\n });\n }\n events.push(event);\n }\n return events;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { PasswordService } from './password.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(private router: Router, private passwordService: PasswordService) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n if (this.passwordService.isAuthenticated) {\n return true;\n } else {\n this.router.navigate(['/login']);\n return false;\n }\n }\n \n}\n","import { Component, OnInit, HostListener, ChangeDetectorRef } from '@angular/core';\nimport { HighScoreService } from '../high-score.service';\nimport { PageStateService } from '../page-state.service';\n\n@Component({\n selector: 'app-high-scores',\n templateUrl: './high-scores.component.html',\n styleUrls: ['./high-scores.component.css']\n})\nexport class HighScoresComponent implements OnInit {\n\n highScoreText: string;\n highScores: any[];\n\n divTransform: string;\n divFontSize: string;\n divLineHeight: string;\n divLetterSpacing: string;\n divHeight: string;\n divWidth: string;\n divLeft: string;\n divTop: string;\n textShadow: number;\n\n headingStyle: any;\n\n constructor(private highScoreService: HighScoreService, private cdr: ChangeDetectorRef, private state: PageStateService) { }\n\n setHighScoreDivSize() {\n var aspectRatio = window.innerWidth / window.innerHeight;\n var narrow = aspectRatio < 512/320;\n this.textShadow = window.innerWidth * 0.6/512;\n this.divFontSize = 16 * window.innerWidth * 190/512/413 + \"px\";\n this.divLineHeight = 12 * window.innerWidth * 190/512/413 + \"px\";\n this.divHeight = window.innerWidth * 70/512 + \"px\";\n this.divWidth = window.innerWidth * 72/512 + \"px\";\n this.divLeft = window.innerWidth * 412/512 + \"px\";\n this.divTop = window.innerWidth * 73/512 + \"px\";\n this.divTransform = `perspective(15cm) rotateX(-18deg) rotateY(-45deg) scale(1)`;\n this.divLetterSpacing = 1 * window.innerHeight * 190/320/413 + \"px\";\n this.headingStyle.visibility = \"hidden\";\n if (narrow) {\n this.divLeft = window.innerHeight * 412/320 - this.state.getLeftCutoff() + \"px\";\n this.divTop = window.innerHeight * 73/320 + \"px\";\n this.divHeight = window.innerHeight * 70/320 + \"px\";\n this.divWidth = window.innerHeight * 72/320 + \"px\";\n this.divFontSize = 16 * window.innerHeight * 190/320/413 + \"px\";\n this.divLineHeight = 12 * window.innerHeight * 190/320/413 + \"px\";\n this.textShadow = window.innerHeight * 0.6/320;\n }\n if (aspectRatio < 1.44) {\n this.divHeight = window.innerHeight * 70/320 + \"px\";\n this.divTop = window.innerHeight * 244/320 + \"px\";\n this.divTransform = \"none\";\n this.divLetterSpacing = 5 * window.innerHeight * 190/320/413 + \"px\";\n this.headingStyle.visibility = \"visible\";\n this.headingStyle.height = window.innerHeight * 15/320 + \"px\";\n this.headingStyle.top = window.innerHeight * 222/320 + \"px\";\n this.headingStyle.width = parseInt(this.headingStyle.height,10) * 164/22 + \"px\";\n this.divWidth = this.headingStyle.width;\n this.divLeft = window.innerWidth * 320/512 + \"px\";\n // this.divLeft = window.innerWidth/2 - parseInt(this.divWidth,10)/2 + \"px\";\n this.headingStyle.left = this.divLeft;\n }\n if (aspectRatio < 1.12) {\n this.divLeft = 0.75*window.innerWidth - parseInt(this.divWidth,10)/2 + \"px\";\n this.headingStyle.left = this.divLeft;\n } \n if (aspectRatio < 0.95) {\n this.divTop = window.innerWidth * 376/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.divFontSize = 16 * window.innerWidth * 190/306/413 + \"px\";\n this.divLineHeight = 12 * window.innerWidth * 190/320/413 + \"px\";\n this.headingStyle.height = window.innerWidth * 15/306 + \"px\";\n this.headingStyle.top = window.innerWidth * 352/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.headingStyle.width = parseInt(this.headingStyle.height,10) * 164/22 + \"px\";\n this.divWidth = this.headingStyle.width;\n this.divLeft = 0.75*window.innerWidth - parseInt(this.divWidth,10)/2 + \"px\";\n this.headingStyle.left = this.divLeft;\n this.textShadow = window.innerWidth * 0.65/306;\n }\n if (aspectRatio < 0.65) {\n // this.divTop = window.innerWidth * 376/306*(1 + 0.225*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n // this.headingStyle.height = window.innerWidth * 15/306*(1 + 0.5*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n // this.headingStyle.width = parseInt(this.headingStyle.height,10) * 164/22 + \"px\";\n // this.divWidth = this.headingStyle.width;\n\n let isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || (navigator.userAgent.includes(\"Macintosh\") && navigator.maxTouchPoints > 1);\n\n // if (isMobile) {\n // this.divLeft = 0.35*window.innerWidth - parseInt(this.divWidth,10)/2 + \"px\";\n // } else {\n // this.divLeft = 0.5*window.innerWidth - parseInt(this.divWidth,10)/2 + \"px\";\n // }\n\n if (isMobile) {\n this.divLeft = 0.1*window.innerWidth + \"px\";\n this.divTop = window.innerWidth * 380/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.headingStyle.top = window.innerWidth * 356/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.divFontSize = 16.5 * window.innerWidth * 190/306/413 + \"px\";\n this.headingStyle.left = this.divLeft;\n }\n \n // this.divFontSize = 16 * window.innerWidth * 190/306/413*(1 + 0.7*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n // this.divLineHeight = 12 * window.innerWidth * 190/320/413*(1 + 0.7*(306*window.innerHeight/window.innerWidth - 322)/340) + \"px\";\n // this.headingStyle.left = this.divLeft;\n }\n \n this.cdr.detectChanges();\n }\n\n setHighScoreText() {\n this.highScoreService.getHighScores().subscribe((data: any[]) => {\n data.sort((a, b) => {\n return b.score - a.score;\n });\n this.highScores = data;\n this.highScoreText = \"\";\n for (let i = 0; i < 6; i++) {\n this.highScoreText += this.highScores[i].name + \"-\" + this.highScores[i].score + \"

\";\n }\n this.cdr.markForCheck();\n },\n (error) => {\n console.error('Error:', error);\n });\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setHighScoreDivSize();\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void { \n // this.divTransform = `perspective(15cm) rotateX(-18deg) rotateY(-45deg)`;\n this.headingStyle = {};\n this.headingStyle.backgroundImage = `url(\"assets/kitchen/HighScores.PNG\")`;\n this.headingStyle.backgroundSize = \"cover\";\n this.setHighScoreDivSize();\n this.setHighScoreText();\n this.highScoreService.registerHighScoresComponent(this);\n }\n\n}\n","
\n
\n
\n"," ","import { Component, OnInit } from '@angular/core';\nimport { BrevoService } from '../brevo.service';\n\n@Component({\n selector: 'app-myspice-nav-bar',\n templateUrl: './myspice-nav-bar.component.html',\n styleUrls: ['./myspice-nav-bar.component.css']\n})\nexport class MyspiceNavBarComponent implements OnInit {\n email: string = '';\n message: string = '';\n\n buttonClass = 'default';\n\n isOpen = false;\n\n constructor(private brevoService: BrevoService) { }\n\n toggleMenu() {\n this.isOpen = !this.isOpen;\n }\n\n changeColor(isPressed: boolean) {\n this.buttonClass = isPressed ? 'pressed' : 'default';\n console.log('press')\n }\n\n onSubscribe() {\n this.brevoService.subscribe(this.email).subscribe(\n response => {\n this.message = 'Thank you for subscribing!';\n this.email = '';\n },\n error => {\n this.message = 'An error occured. Please try again.';\n console.error(error);\n }\n )\n }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AdminComponent } from './admin/admin.component';\nimport { AuthGuard } from './auth.guard';\nimport { HomeComponent } from './home/home.component';\nimport { LoginComponent } from './login/login.component';\nimport { MyspaceComponent } from './myspace/myspace.component';\nimport { BeverageComponent } from './beverage/beverage.component';\nimport { MenuComponent } from './menu/menu.component';\n\nconst routes: Routes = [\n { path: '', component: HomeComponent },\n { path: 'myspice', component: MyspaceComponent },\n { path: 'login', component: LoginComponent },\n { path: 'beverage', component: BeverageComponent },\n { path: 'menu', component: MenuComponent },\n // { path: 'reservations/:dateId', component: CustomerReservationsComponent },\n // { path: 'reservations', component: CustomerReservationsComponent, canActivate: [ReservationGuard] }\n { path: 'admin', component: AdminComponent, canActivate: [AuthGuard]}\n // { path: 'admin', component: AdminComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PasswordService } from '../password.service';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css']\n})\nexport class LoginComponent implements OnInit {\n password = '';\n hashedPassword = '$2a$10$rKTJSpvUTnbmo7GE4HRdQu.AAbn6xk9KtTLElt8ElLdI2wJRNGWF.';\n\n constructor(private passwordService: PasswordService, private router: Router) { }\n\n async login() {\n const isPasswordCorrect = await this.passwordService.comparePasswords(this.password,this.hashedPassword);\n\n if (isPasswordCorrect) {\n this.passwordService.isAuthenticated = true;\n this.router.navigate(['/admin']);\n }\n }\n\n ngOnInit(): void {\n \n }\n\n}\n","
\n \n \n
\n \n
","import { Component, OnInit, HostListener } from '@angular/core';\nimport { PageStateService } from '../page-state.service';\n\n@Component({\n selector: 'app-start-game',\n templateUrl: './start-game.component.html',\n styleUrls: ['./start-game.component.css']\n})\nexport class StartGameComponent implements OnInit {\n\n isMobile: boolean;\n\n mobileText: string = `Press JUMP to play
Liz's Leap Frogs`;\n nativeText: string = `Press SPACE to play
Liz's Leap Frogs`;\n\n divStyle: any;\n\n constructor(private state: PageStateService) { }\n\n setDivStyle() {\n var textShadow = window.innerWidth * 0.65/512;\n this.divStyle.left = window.innerWidth * 175/512 + \"px\";\n this.divStyle.top = window.innerWidth * 175/512 + \"px\";\n this.divStyle.fontSize = window.innerWidth * 8/512 + \"px\";\n this.divStyle.lineHeight = window.innerWidth * 12/512 + \"px\";\n\n if (window.innerWidth/window.innerHeight < 0.95) {\n this.divStyle.left = window.innerWidth * 60/306 + \"px\";\n this.divStyle.top = window.innerWidth * 302/306*(1 + 0.2*(306*window.innerHeight/window.innerWidth - 322)/340) - this.state.getCounterTopCutoff() + \"px\";\n this.divStyle.fontSize = window.innerWidth * 9/306 + \"px\";\n this.divStyle.lineHeight = window.innerWidth * 12/306 + \"px\";\n textShadow = window.innerWidth * 0.65/306;\n\n } else if (this.state.isNarrow()) {\n this.divStyle.left = window.innerHeight * 175/320 - this.state.getLeftCutoff() + \"px\";\n this.divStyle.top = window.innerHeight * 175/320 + \"px\";\n this.divStyle.fontSize = window.innerHeight * 8/320 + \"px\";\n this.divStyle.lineHeight = window.innerHeight * 12/320 + \"px\";\n textShadow = window.innerHeight * 0.65/320;\n }\n\n this.divStyle.textShadow = '-' + textShadow + 'px -' + textShadow + 'px 0 #000, ' + textShadow + 'px -' + textShadow + 'px 0 #000, -' + textShadow + 'px ' + textShadow + 'px 0 #000, ' + textShadow + 'px ' + textShadow + 'px 0 #000';\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.setDivStyle();\n }\n\n ngOnInit(): void {\n this.divStyle = {};\n\n this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n this.setDivStyle();\n }\n\n}\n","
\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nimport 'hammerjs';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}