UNPKG

@obliczeniowo/elementary

Version:
1 lines 47 kB
{"version":3,"file":"obliczeniowo-elementary-chess.mjs","sources":["../../../../projects/components/chess/enums/enums.ts","../../../../projects/components/chess/components/chess-field/chess-field.component.ts","../../../../projects/components/chess/components/chess-field/chess-field.component.html","../../../../projects/components/chess/classes/chess.ts","../../../../projects/components/chess/components/chess-pawn/chess-pawn.component.ts","../../../../projects/components/chess/components/chess-pawn/chess-pawn.component.html","../../../../projects/components/chess/classes/address.ts","../../../../projects/components/chess/classes/piece.ts","../../../../projects/components/chess/classes/chess-abstract-model.ts","../../../../projects/components/chess/components/chess/chess.component.ts","../../../../projects/components/chess/components/chess/chess.component.html","../../../../projects/components/chess/chess.module.ts","../../../../projects/components/chess/obliczeniowo-elementary-chess.ts"],"sourcesContent":["export enum ChessEnum {\n whiteKing = '♔',\n whiteQueen = '♕',\n whiteRook = '♖',\n whiteBishop = '♗',\n whiteKnight = '♘',\n whitePawn = '♙',\n\n blackKing = '♚',\n blackQueen = '♛',\n blackRook = '♜',\n blackBishop = '♝',\n blackKnight = '♞',\n blackPawn = '♟',\n\n nonePiece = ''\n}\n\nexport enum ChessColor {\n white,\n black\n}\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { ChessEnum } from '../../enums/enums';\n\n@Component({\n selector: 'obl-chess-field',\n templateUrl: './chess-field.component.html',\n styleUrls: ['./chess-field.component.scss'],\n standalone: false\n})\nexport class ChessFieldComponent {\n ChessEnum = ChessEnum;\n\n @Input() row!: number;\n @Input() column!: string;\n\n @HostBinding('class.chess-field') chessField = true;\n\n @HostBinding('class.white-field') get whiteField(): boolean {\n return this.row !== undefined && this.column !== undefined && this.isWhite;\n }\n\n @HostBinding('class.black-field') get blackField(): boolean {\n return this.row !== undefined && this.column !== undefined && this.isBlack;\n }\n\n get columnIndex(): number {\n return this.column.charCodeAt(0) - 'a'.charCodeAt(0) + 1;\n }\n\n get isBlack(): boolean {\n return ((this.row) + (this.columnIndex) % 2) % 2 === 0;\n }\n\n get isWhite(): boolean {\n return !this.isBlack;\n }\n}\n","<ng-content></ng-content>\n","import { ChessEnum } from './../enums/enums';\n\nexport class Chess {\n static isWhite(piece: ChessEnum | undefined): boolean {\n switch (piece) {\n case ChessEnum.whiteBishop:\n case ChessEnum.whiteQueen:\n case ChessEnum.whiteRook:\n case ChessEnum.whiteKnight:\n case ChessEnum.whitePawn:\n case ChessEnum.whiteKing:\n return true;\n default:\n return false;\n }\n }\n\n static isBlack(piece: ChessEnum | undefined): boolean {\n return !Chess.isWhite(piece) && piece !== ChessEnum.nonePiece;\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { ChessEnum } from '../../enums/enums';\nimport { Chess } from '../../classes/chess';\n\n@Component({\n selector: 'obl-chess-pawn',\n templateUrl: './chess-pawn.component.html',\n styleUrls: ['./chess-pawn.component.scss'],\n standalone: false\n})\nexport class ChessPawnComponent implements OnDestroy, AfterViewInit {\n @Input() row!: number;\n @Input() column!: string;\n\n @Input() pawnType!: ChessEnum;\n\n dragstart = (event: any) => {\n event.dataTransfer.setData('text/plain', null);\n }\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit(): void {\n this.elementRef.nativeElement.setAttribute('draggable', 'true');\n this.elementRef.nativeElement.addEventListener('dragstart', this.dragstart, false);\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener('dragstart', this.dragstart);\n }\n\n isBlack(): boolean {\n return Chess.isBlack(this.pawnType);\n }\n}\n","<div\n [class]=\"'pawn-field ' + column + row\"\n (dragstart)=\"dragstart($event)\"\n draggable=\"true\"\n>\n {{ pawnType }}\n</div>\n","export type ChessColumn = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h';\nexport type ChessRow = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport const columns: ChessColumn[] = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];\nexport const rows: ChessRow[] = [1, 2, 3, 4, 5, 6, 7, 8];\n\nexport class Address {\n column!: ChessColumn;\n row!: ChessRow;\n\n constructor(address: string) {\n if (address.length === 2) {\n if (columns.includes(address.charAt(0) as ChessColumn)) {\n this.column = address.charAt(0) as ChessColumn;\n } else {\n throw new Error(`This column not exist ${address.charAt(0)}`);\n }\n const row = parseInt(address.charAt(1), 10);\n if (rows.includes(row as ChessRow)) {\n this.row = row as ChessRow;\n } else {\n throw new Error(`This row not exist: ${row}`);\n }\n }\n }\n\n offset(row: number, column: number): Address | undefined {\n const columnIndex = columns.findIndex(columnI => columnI === this.column) + column;\n\n if (columnIndex < 0 || columnIndex > 7) {\n return undefined;\n }\n\n const rowPos = row + this.row;\n\n if (rowPos > 8 || rowPos < 1) {\n return undefined;\n }\n\n return new Address(columns[columnIndex] + rowPos);\n }\n\n toString(): string {\n return `${this.column}${this.row}`;\n }\n}\n","import { Address } from './address';\nimport { QueryList } from '@angular/core';\nimport { ChessPawnComponent } from '../components/chess-pawn/chess-pawn.component';\nimport { ChessEnum } from './../enums/enums';\nimport { Chess } from './chess';\n\nexport type ChessPiece = ChessEnum.whiteKing |\n ChessEnum.whiteQueen |\n ChessEnum.whiteRook |\n ChessEnum.whiteBishop |\n ChessEnum.whiteKnight |\n ChessEnum.whitePawn |\n ChessEnum.blackKing |\n ChessEnum.blackQueen |\n ChessEnum.blackRook |\n ChessEnum.blackBishop |\n ChessEnum.blackKnight |\n ChessEnum.blackPawn;\n\nexport abstract class AbstractPiece {\n protected _type!: ChessPiece;\n public get type(): ChessPiece {\n return this._type;\n }\n\n protected _address!: Address | undefined;\n public get address(): Address | undefined {\n return this._address;\n }\n\n constructor(type: ChessPiece, address: Address | undefined) {\n this._type = type;\n this._address = address;\n }\n\n abstract moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[];\n\n protected isEmpty(address: Address | undefined, chessPieces: QueryList<ChessPawnComponent>): boolean {\n return address !== undefined &&\n chessPieces.find(\n piece => piece.column === address.column && piece.row === address.row\n )?.pawnType === ChessEnum.nonePiece;\n }\n\n protected isOppositePiece(address: Address | undefined, chessPieces: QueryList<ChessPawnComponent>): boolean {\n if (address) {\n if (Chess.isWhite(this._type)) {\n return Chess.isBlack(chessPieces.find(piece => piece.column === address.column && piece.row === address.row)?.pawnType);\n } else {\n return Chess.isWhite(chessPieces.find(piece => piece.column === address.column && piece.row === address.row)?.pawnType);\n }\n }\n return false;\n }\n}\n\nexport class Pawn extends AbstractPiece {\n moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n if (!this.address) {\n return [];\n }\n\n const fields: string[] = [];\n const vector: [number, number] = Chess.isWhite(this._type) ? [1, 0] : [-1, 0];\n const start: number = Chess.isWhite(this._type) ? 2 : 7;\n\n const oneFieldUp = this.address.offset(vector[0], vector[1]);\n if (this.isEmpty(oneFieldUp, chessPieces) && oneFieldUp) {\n fields.push(oneFieldUp.toString());\n const twoFieldUp = this.address.offset(vector[0] * 2, vector[1]);\n if (this.address.row === start) {\n if (this.isEmpty(twoFieldUp, chessPieces) && twoFieldUp) {\n fields.push(twoFieldUp.toString());\n }\n }\n }\n\n const leftField = this.address.offset(vector[0], -1);\n const rightField = this.address.offset(vector[0], 1);\n\n if (leftField && this.isOppositePiece(leftField, chessPieces)) {\n fields.push(leftField.toString());\n }\n\n if (rightField && this.isOppositePiece(rightField, chessPieces)) {\n fields.push(rightField.toString());\n }\n\n return fields;\n }\n}\n\nexport class Knight extends AbstractPiece {\n moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n if (!this.address) {\n return [];\n }\n\n const fields: string[] = [];\n\n const offsets: [number, number][] = [\n [2, -1],\n [2, 1],\n [1, 2],\n [-1, 2],\n [-2, 1],\n [-2, -1],\n [-1, -2],\n [1, -2]\n ];\n\n offsets.forEach(\n offset => {\n const field = this.address?.offset(offset[0], offset[1]);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (field && (this.isEmpty(field, chessPieces) || this.isOppositePiece(field, chessPieces))) {\n fields.push(field.toString());\n }\n }\n );\n\n return fields;\n }\n}\n\nexport class Bishop extends AbstractPiece {\n moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n if (!this.address) {\n return [];\n }\n\n const fields: string[] = [];\n\n const offsets: [number, number][] = [\n [1, -1],\n [1, 1],\n [-1, 1],\n [-1, -1]\n ];\n\n offsets.forEach(\n offset => {\n for (let k = 1; k < 9; k++) {\n const field = this.address?.offset(offset[0] * k, offset[1] * k);\n const empty = this.isEmpty(field, chessPieces);\n if (field && (empty || this.isOppositePiece(field, chessPieces))) {\n fields.push(field.toString());\n }\n if (!empty || !field) {\n break;\n }\n }\n }\n );\n\n return fields;\n }\n}\n\nexport class Rook extends AbstractPiece {\n moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n if (!this.address) {\n return [];\n }\n\n const fields: string[] = [];\n\n const offsets: [number, number][] = [\n [1, 0],\n [-1, 0],\n [0, 1],\n [0, -1]\n ];\n\n offsets.forEach(\n offset => {\n for (let k = 1; k < 9; k++) {\n const field = this.address?.offset(offset[0] * k, offset[1] * k);\n const empty = this.isEmpty(field, chessPieces);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (field && (empty || this.isOppositePiece(field, chessPieces))) {\n fields.push(field.toString());\n }\n if (!empty || !field) {\n break;\n }\n }\n }\n );\n\n return fields;\n }\n}\n\nexport class Queen extends AbstractPiece {\n moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n if (!this.address) {\n return [];\n }\n\n const fields: string[] = [];\n\n const offsets: [number, number][] = [\n [1, -1],\n [1, 0],\n [1, 1],\n [0, 1],\n [0, -1],\n [-1, 1],\n [-1, 0],\n [-1, -1]\n ];\n\n offsets.forEach(\n offset => {\n for (let k = 1; k < 9; k++) {\n const field = this.address?.offset(offset[0] * k, offset[1] * k);\n const empty = this.isEmpty(field, chessPieces);\n if (field && (empty || this.isOppositePiece(field, chessPieces))) {\n fields.push(field.toString());\n }\n if (!empty || !field) {\n break;\n }\n }\n }\n );\n\n return fields;\n }\n}\n\nexport class King extends AbstractPiece {\n moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n if (!this.address) {\n return [];\n }\n\n const fields: string[] = [];\n\n const offsets: [number, number][] = [\n [1, -1],\n [1, 0],\n [1, 1],\n [0, 1],\n [0, -1],\n [-1, 1],\n [-1, 0],\n [-1, -1]\n ];\n\n offsets.forEach(\n offset => {\n const field = this.address?.offset(offset[0], offset[1]);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (field && (this.isEmpty(field, chessPieces) || this.isOppositePiece(field, chessPieces))) {\n fields.push(field.toString());\n }\n }\n );\n\n return fields;\n }\n}\n\nexport class AbstractPieceFactory {\n static getPiece(type: ChessPiece, address: Address | undefined): AbstractPiece | undefined {\n switch (type) {\n case ChessEnum.blackBishop:\n case ChessEnum.whiteBishop:\n return new Bishop(type, address);\n case ChessEnum.whiteKing:\n case ChessEnum.blackKing:\n return new King(type, address);\n case ChessEnum.whitePawn:\n case ChessEnum.blackPawn:\n return new Pawn(type, address);\n case ChessEnum.whiteQueen:\n case ChessEnum.blackQueen:\n return new Queen(type, address);\n case ChessEnum.whiteRook:\n case ChessEnum.blackRook:\n return new Rook(type, address);\n case ChessEnum.whiteKnight:\n case ChessEnum.blackKnight:\n return new Knight(type, address);\n }\n return undefined;\n }\n}\n","import { ChessColor } from './../enums/enums';\nimport { QueryList } from '@angular/core';\nimport { ChessPawnComponent } from '../components/chess-pawn/chess-pawn.component';\nimport { ChessEnum } from '../enums/enums';\nimport { Address } from './address';\nimport { AbstractPiece, AbstractPieceFactory } from './piece';\nimport { Chess } from './chess';\n\nexport interface AddressPiece {\n address: string | undefined;\n piece: ChessEnum;\n chessPieces: QueryList<ChessPawnComponent>;\n}\n\nexport abstract class ChessAbstractModel {\n stopSetOnDrop = false;\n display: { add: boolean } = {\n add: true\n };\n\n /**\n * Triggered on dragged\n * @param dragged describe dragged field\n */\n abstract onDragged(dragged: AddressPiece): void;\n\n /**\n * Triggered on drop\n * @param dropped Describe dropped field\n * @returns true when dropped is done, false when dropped fail\n */\n abstract onDropped(dropped: AddressPiece): boolean;\n}\n\nexport class ChessDragAndDropModel extends ChessAbstractModel {\n onDragged(dragged: AddressPiece): void {\n }\n\n onDropped(dropped: AddressPiece): boolean {\n return true;\n }\n}\n\nexport class ChessPieceMoveModel extends ChessAbstractModel {\n protected draggedPiece: AbstractPiece | undefined;\n\n constructor() {\n super();\n\n this.stopSetOnDrop = true;\n this.display = {\n add: false\n };\n }\n\n onDragged(dragged: AddressPiece): void {\n if (dragged.piece !== ChessEnum.nonePiece) {\n this.draggedPiece = AbstractPieceFactory.getPiece(\n dragged.piece,\n dragged.address && new Address(dragged.address) || undefined\n );\n } else {\n this.draggedPiece = undefined;\n }\n }\n\n onDropped(dropped: AddressPiece): boolean {\n if (this.draggedPiece) {\n const list = this.draggedPiece.moveFieldsList(dropped.chessPieces);\n\n const droppedField = dropped.chessPieces.find(piece => piece.column + piece.row === dropped.address);\n const draggedToField = dropped.chessPieces.find(\n piece => piece.column + piece.row === (this.draggedPiece?.address?.toString()));\n if (dropped.address && droppedField) {\n if (this.draggedPiece.address) {\n if (list.includes(dropped.address)) {\n droppedField.pawnType = this.pawnPromote(this.draggedPiece.type, new Address(dropped.address));\n if (draggedToField) {\n draggedToField.pawnType = ChessEnum.nonePiece;\n }\n return true;\n }\n } else {\n droppedField.pawnType = this.draggedPiece.type;\n return true;\n }\n } else if (draggedToField) {\n draggedToField.pawnType = this.draggedPiece.type;\n }\n }\n return false;\n }\n\n protected pawnPromote(type: ChessEnum, address: Address): ChessEnum {\n if (type === ChessEnum.whitePawn && address.row === 8) {\n return ChessEnum.whiteQueen;\n }\n if (type === ChessEnum.blackPawn && address.row === 1) {\n return ChessEnum.blackQueen;\n }\n\n return type;\n }\n}\n\nexport class PlayChessModel extends ChessPieceMoveModel {\n protected moveTurn: ChessColor = ChessColor.white;\n\n onDragged(dragged: AddressPiece): void {\n if (\n this.moveTurn === ChessColor.white && Chess.isBlack(dragged.piece) ||\n this.moveTurn === ChessColor.black && Chess.isWhite(dragged.piece)\n ) {\n return;\n }\n super.onDragged(dragged);\n }\n\n onDropped(dropped: AddressPiece): boolean {\n if (super.onDropped(dropped)) {\n this.moveTurn = this.moveTurn === ChessColor.black ? ChessColor.white : ChessColor.black;\n this.draggedPiece = undefined;\n return true;\n }\n this.draggedPiece = undefined;\n return false;\n }\n}\n","import { ChessDragAndDropModel } from './../../classes/chess-abstract-model';\nimport { AfterViewInit, Component, ElementRef, Input, OnDestroy, QueryList, ViewChildren } from '@angular/core';\nimport { ChessColumn, ChessRow, columns, rows } from '../../classes/address';\nimport { ChessAbstractModel } from '../../classes/chess-abstract-model';\nimport { ChessEnum } from '../../enums/enums';\nimport { ChessPawnComponent } from '../chess-pawn/chess-pawn.component';\n\n@Component({\n selector: 'obl-chess',\n templateUrl: './chess.component.html',\n styleUrls: ['./chess.component.scss'],\n standalone: false\n})\nexport class ChessComponent implements AfterViewInit, OnDestroy {\n ChessEnum = ChessEnum;\n\n dragged!: HTMLElement;\n\n @ViewChildren(ChessPawnComponent) chessPieces!: QueryList<ChessPawnComponent>;\n\n @Input() chessPawnsMap: Map<string, ChessEnum> = new Map<string, ChessEnum>();\n @Input() chessModel: ChessAbstractModel = new ChessDragAndDropModel();\n\n public get stopSetOnDrop(): boolean {\n return this.chessModel.stopSetOnDrop;\n }\n\n private _reverse = false;\n public get reverse(): boolean {\n return this._reverse;\n }\n\n @Input()\n public set reverse(value) {\n this._reverse = value;\n if (value) {\n this.rows = rows.reverse();\n this.columns = columns.reverse();\n } else {\n this.rows = rows;\n this.columns = columns;\n }\n }\n\n private readonly chessPawnsMapComponent: Map<string, ChessPawnComponent> = new Map<string, ChessPawnComponent>();\n\n rows: ChessRow[] = rows.reverse();\n columns: ChessColumn[] = columns;\n\n private get hostHtml(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n dragstart = (event: any) => {\n this.dragged = event.target;\n event.target.style.opacity = 0.5;\n this.chessModel.onDragged(\n {\n address: Array.from(this.dragged.classList).filter(className => className.length === 2)[0],\n piece: this.dragged.innerText as any,\n chessPieces: this.chessPieces\n }\n );\n }\n\n dragend = (event: any) => {\n event.target.style.opacity = '';\n }\n\n drag = (event: any) => {\n }\n\n dragover = (event: any) => {\n event.preventDefault();\n }\n\n dragenter = (event: any) => {\n if (event.target.className === 'dropzone') {\n event.target.style.background = 'purple';\n }\n }\n\n dragleave = (event: any) => {\n if (event.target.className === 'dropzone') {\n event.target.style.background = '';\n }\n }\n\n drop = (event: any) => {\n event.preventDefault();\n const target: HTMLElement = event.target.classList.contains('pawn-field') ? event.target.parentElement : event.target;\n if (target) {\n const pawn: ChessPawnComponent | undefined = this.chessPawnsMapComponent.get(target.className);\n // get name of class that is an address of field\n const name = Array.from(this.dragged.classList).filter(className => className.length === 2)[0];\n const pawnFrom: ChessPawnComponent | undefined = this.chessPawnsMapComponent.get(name);\n if (!this.stopSetOnDrop) {\n if (pawnFrom) {\n pawnFrom.pawnType = ChessEnum.nonePiece;\n }\n if (pawn && (this.dragged.innerText as ChessEnum) !== ChessEnum.nonePiece) {\n pawn.pawnType = this.dragged.innerText as ChessEnum;\n }\n }\n this.chessModel.onDropped(\n {\n address: target.className,\n piece: this.dragged.innerText as any,\n chessPieces: this.chessPieces\n }\n );\n }\n }\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) { }\n\n ngAfterViewInit(): void {\n this.chessPieces.forEach((pawn: any) => {\n if (pawn.column && pawn.row) {\n this.chessPawnsMapComponent.set(pawn.column + pawn.row, pawn);\n }\n });\n\n this.hostHtml.addEventListener('drag', this.drag, false);\n\n this.hostHtml.addEventListener('dragstart', this.dragstart, false);\n this.hostHtml.addEventListener('dragend', this.dragend, false);\n this.hostHtml.addEventListener('dragover', this.dragover, false);\n this.hostHtml.addEventListener('dragenter', this.dragenter, false);\n this.hostHtml.addEventListener('dragleave', this.dragleave, false);\n this.hostHtml.addEventListener('drop', this.drop, false);\n }\n\n ngOnDestroy(): void {\n this.hostHtml.removeEventListener('drag', this.drag);\n this.hostHtml.removeEventListener('dragstart', this.dragstart);\n this.hostHtml.removeEventListener('dragend', this.dragend);\n this.hostHtml.removeEventListener('dragover', this.dragover);\n this.hostHtml.removeEventListener('dragenter', this.dragenter);\n this.hostHtml.removeEventListener('dragleave', this.dragleave);\n this.hostHtml.removeEventListener('drop', this.drop);\n }\n\n setChessPawn(column: string, row: number, pawn: ChessEnum): void {\n this.chessPawnsMap.set(column + row, pawn);\n }\n\n moveChessPawn(startColumn: string, startRow: number, endColumn: string, endRow: number): void {\n const chessPawn: ChessEnum = this.getChessPawn(startColumn + startRow);\n if (chessPawn === ChessEnum.nonePiece) {\n return;\n }\n this.setChessPawn(endColumn, endRow, chessPawn);\n }\n\n getChessPawn(address: string): ChessEnum {\n const pawn: ChessEnum = this.chessPawnsMap.get(address) as ChessEnum;\n return pawn || ChessEnum.nonePiece;\n }\n}\n","<div class=\"columns-header\">\n @for (column of columns; track column) {\n <div class=\"column-header\">{{ column }}</div>\n }\n</div>\n\n<div class=\"pawns-and-board\">\n @if (chessModel.display.add) {\n <div class=\"white-pawns\">\n <obl-chess-pawn [pawnType]=\"ChessEnum.whiteKing\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.whiteQueen\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.whiteRook\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.whiteBishop\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.whiteKnight\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.whitePawn\"></obl-chess-pawn>\n </div>\n }\n\n <div>\n @for (row of rows; track $index) {\n <div class=\"row-fields\">\n <div class=\"row-header\">\n <div>{{ row }}</div>\n </div>\n\n @for (column of columns; track $index) {\n <obl-chess-field\n class=\"dropzone\"\n [row]=\"row\"\n [column]=\"column\"\n [id]=\"column + row\"\n >\n <obl-chess-pawn\n [ngClass]=\"column + row\"\n [row]=\"row\"\n [column]=\"column\"\n [pawnType]=\"getChessPawn(column + row)\"\n draggable=\"true\"\n >\n </obl-chess-pawn>\n </obl-chess-field>\n }\n\n <div class=\"row-header\">\n <div>{{ row }}</div>\n </div>\n </div>\n }\n </div>\n\n @if (chessModel.display.add) {\n <div class=\"black-pawns\">\n <obl-chess-pawn [pawnType]=\"ChessEnum.blackKing\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.blackQueen\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.blackRook\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.blackBishop\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.blackKnight\"></obl-chess-pawn>\n <obl-chess-pawn [pawnType]=\"ChessEnum.blackPawn\"></obl-chess-pawn>\n </div>\n }\n</div>\n\n<div class=\"columns-header\">\n @for (column of columns; track column) {\n <div class=\"column-header\">{{ column }}</div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChessFieldComponent } from './components/chess-field/chess-field.component';\nimport { ChessPawnComponent } from './components/chess-pawn/chess-pawn.component';\nimport { ChessComponent } from './components/chess/chess.component';\n\n@NgModule({\n declarations: [\n ChessComponent,\n ChessFieldComponent,\n ChessPawnComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ChessComponent,\n ChessFieldComponent,\n ChessPawnComponent\n ]\n})\nexport class ChessModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ChessFieldComponent","i3.ChessPawnComponent"],"mappings":"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"}