-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js.map
1 lines (1 loc) · 19.1 KB
/
main.js.map
1
{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/app/animals.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/game1/game1.component.ts","./src/app/game1/game1.component.html","./src/app/game2/game2.component.ts","./src/app/game2/game2.component.html","./src/app/matching-game/matching-game.component.ts","./src/app/matching-game/matching-game.component.html","./src/app/shuffle.pipe.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["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 = \"./$$_lazy_route_resource lazy recursive\";","import { Pair } from './pair';\nexport const ANIMALS: Pair[] = [\n { id: 1, leftpart: 'dog', rightpart: 'mammal'},\n { id: 2, leftpart: 'blickbird', rightpart: 'bird'},\n { id: 3, leftpart: 'spider', rightpart: 'insect'},\n { id: 4, leftpart: 'turtle', rightpart: 'reptile' },\n { id: 5, leftpart: 'guppy', rightpart: 'fish'},\n];\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'game';\n}\n","<div style=\"text-align:center\"> \n <h1>Learning is fun!</h1>\n</div>\n<!-- <app-game1></app-game1> -->\n<app-game2></app-game2>","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { MatchingGameComponent } from './matching-game/matching-game.component';\nimport { Game1Component } from './game1/game1.component';\nimport { Game2Component } from './game2/game2.component';\n\nimport { ShufflePipe } from './shuffle.pipe'\n\n@NgModule({\n declarations: [\n AppComponent,\n MatchingGameComponent,\n Game1Component,\n Game2Component,\n ShufflePipe\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n \n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { ANIMALS } from '../animals';\n@Component({\n selector: 'app-game1',\n templateUrl: './game1.component.html',\n styleUrls: ['./game1.component.scss']\n})\nexport class Game1Component implements OnInit {\n animals = ANIMALS;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n leftpartSelectedId:number = -1;\n rightpartSelectedId:number = -1;\n\n onLeftpartSelected(id: number): void {\n this.leftpartSelectedId = id;\n }\n onRightpartSelected(id: number): void {\n this.rightpartSelectedId = id;\n }\n onLeftpartUnselected(): void {\n this.leftpartSelectedId = -1;\n }\n onRightpartUnselected(): void {\n this.rightpartSelectedId = -1;\n }\n\n}\n","<app-matching-game [pairs]=\"animals\" (leftpartSelected)=\"onLeftpartSelected($event)\"\n (rightpartSelected)=\"onRightpartSelected($event)\" (leftpartUnselected)=\"onLeftpartUnselected()\"\n (rightpartUnselected)=\"onRightpartUnselected()\">\n\n <ng-template #leftpart let-animalPair=\"contextPair\">\n <button [class.selected]=\"leftpartSelectedId==animalPair.id\">\n {{animalPair.leftpart}}\n </button>\n </ng-template>\n <ng-template #rightpart let-animalPair=\"contextPair\">\n <button [class.selected]=\"rightpartSelectedId==animalPair.id\">\n {{animalPair.rightpart}}\n </button>\n </ng-template>\n</app-matching-game>","import { Component, OnInit, ContentChild, TemplateRef } from '@angular/core';\nimport { ANIMALS } from '../animals';\n\n@Component({\n selector: 'app-game2',\n templateUrl: './game2.component.html',\n styleUrls: ['./game2.component.scss']\n})\nexport class Game2Component implements OnInit {\n animals = ANIMALS;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n leftpartSelectedId:number = -1;\n rightpartSelectedId: number = -1;\n \n onLeftpartSelected(id: number): void {\n this.leftpartSelectedId = id;\n }\n onRightpartSelected(id: number): void {\n this.rightpartSelectedId = id;\n }\n onLeftpartUnselected(): void {\n this.leftpartSelectedId = -1;\n }\n onRightpartUnselected(): void {\n this.rightpartSelectedId = -1;\n }\n}\n","<app-matching-game [pairs]=\"animals\" (leftpartSelected)=\"onLeftpartSelected($event)\"\n\t(rightpartSelected)=\"onRightpartSelected($event)\" (leftpartUnselected)=\"onLeftpartUnselected()\"\n\t(rightpartUnselected)=\"onRightpartUnselected()\" >\n\n\t<ng-template #leftpart let-animalPair=\"contextPair\">\n\t\t<div class=\"myAnimal left\" [class.selected]=\"leftpartSelectedId==animalPair.id\">{{animalPair.leftpart}}</div> \n </ng-template>\n\t\n\t<ng-template #rightpart let-animalPair=\"contextPair\">\n <div class=\"myAnimal right\"[class.selected]=\"rightpartSelectedId==animalPair.id\">{{animalPair.rightpart}}</div> \n </ng-template>\n\n</app-matching-game>","import { Component, OnInit, Input, ContentChild, TemplateRef, Output, EventEmitter } from '@angular/core';\nimport { Pair } from '../pair';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { pairwise, filter, map, partition } from 'rxjs/operators';\n\n@Component({\n selector: 'app-matching-game',\n templateUrl: './matching-game.component.html',\n styleUrls: ['./matching-game.component.scss']\n})\nexport class MatchingGameComponent implements OnInit {\n constructor() { }\n\n @Input() pairs: Pair[];\n solvedPairs: Pair[] = [];\n unsolvedPairs: Pair[] = [];\n\n @ContentChild('leftpart', { static: false }) leftpart_temp: TemplateRef<any>;\n @ContentChild('rightpart', { static: false }) rightpart_temp: TemplateRef<any>;\n\n @Output() leftpartSelected = new EventEmitter<number>();\n @Output() rightpartSelected = new EventEmitter<number>();\n @Output() leftpartUnselected = new EventEmitter();\n @Output() rightpartUnselected = new EventEmitter();\n\n private assignmentStream = new Subject<{ pair: Pair, side: string }>();\n\n private solvedStream = new Observable<Pair>();\n private failedStream = new Observable<string>();\n\n private s_Subscription: Subscription;\n private f_Subscription: Subscription;\n\n ngOnInit() {\n for (let i = 0; i < this.pairs.length; i++) {\n this.unsolvedPairs.push(this.pairs[i]);\n }\n\n const stream = this.assignmentStream.pipe(\n pairwise(),\n filter(comb => comb[0].side != comb[1].side)\n );\n const [stream1, stream2] = partition(comb =>\n comb[0].pair === comb[1].pair)(stream);\n this.solvedStream = stream1.pipe(\n map(comb => comb[0].pair)\n );\n this.failedStream = stream2.pipe(\n map(comb => comb[0].side)\n );\n\n this.s_Subscription = this.solvedStream.subscribe(pair =>\n this.handleSolvedAssignment(pair));\n this.f_Subscription = this.failedStream.subscribe((side) =>\n this.handleFailedAssignment(side));\n }\n\n ngOnDestroy() {\n this.s_Subscription.unsubscribe();\n this.f_Subscription.unsubscribe();\n }\n\n test: number;\n private handleSolvedAssignment(pair: Pair): void {\n this.solvedPairs.push(pair);\n this.remove(this.unsolvedPairs, pair);\n this.leftpartUnselected.emit();\n this.rightpartUnselected.emit();\n //workaround to force update of the shuffle pipe\n this.test = Math.random() * 10;\n }\n private handleFailedAssignment(side1: string): void {\n if (side1 == \"left\") {\n this.leftpartUnselected.emit();\n } else {\n this.rightpartUnselected.emit();\n }\n }\n\n private remove(array: Pair[], pair: Pair) {\n let index = array.indexOf(pair);\n if (index > -1) {\n array.splice(index, 1);\n }\n }\n\n}","<div id=\"game\">\n <div class=\"container unsolved\" *ngIf=\"unsolvedPairs.length>0\">\n <div class=\"pair_items left\">\n <div *ngFor=\"let pair of unsolvedPairs\" class=\"item\"\n (click)=\"assignmentStream.next({pair: pair, side: 'left'})\"\n (mousedown)=\"leftpartSelected.emit(pair.id)\">\n <ng-template [ngTemplateOutlet]=\"leftpart_temp\"\n [ngTemplateOutletContext]=\"{contextPair: pair}\">\n </ng-template>\n </div>\n </div>\n <div class=\"pair_items right\">\n <div *ngFor=\"let pair of unsolvedPairs | shuffle:test\" class=\"item\"\n (click)=\"assignmentStream.next({pair: pair, side: 'right'})\"\n (mousedown)=\"rightpartSelected.emit(pair.id)\">\n <ng-template [ngTemplateOutlet]=\"rightpart_temp\"\n [ngTemplateOutletContext]=\"{contextPair: pair}\">\n </ng-template>\n </div>\n </div>\n </div>\n \n <div class=\"container solved\" *ngIf=\"solvedPairs.length>0\">\n <div *ngFor=\"let pair of solvedPairs\" class=\"pair\">\n <ng-template [ngTemplateOutlet]=\"leftpart_temp\" \n [ngTemplateOutletContext]=\"{contextPair: pair}\">\n </ng-template>\n\n <div class=\"connector\"></div>\n <ng-template [ngTemplateOutlet]=\"rightpart_temp\" \n [ngTemplateOutletContext]=\"{contextPair: pair}\">\n </ng-template>\n </div>\n </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'shuffle'\r\n})\r\nexport class ShufflePipe implements PipeTransform {\r\n\r\n\ttransform(a: any[], args: string[]): any[] {\r\n\t\tlet b: any[] = [];\r\n\t\tfor (let i = 0; i < a.length; i++) {\r\n\t\t\tb.push(a[i]);\r\n\t\t}\r\n\t\tfor (let i = b.length - 1; i > 0; i--) {\r\n\t\t\tconst j = Math.floor(Math.random() * (i + 1));\r\n\t\t\t[b[i], b[j]] = [b[j], b[i]];\r\n\t\t}\r\n\t\treturn b;\r\n\t}\r\n\r\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 { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":"webpack:///"}