{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.string.starts-with.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/components/PlayArea/PuzzleGrid.vue?9cbc","webpack:///./src/services/cellcontroller.ts","webpack:///./src/components/PlayArea/InputCell.vue?4e95","webpack:///./src/components/PlayArea/InputCell.vue","webpack:///./src/components/PlayArea/InputCell.vue?38ca","webpack:///./src/components/PlayArea/InputCell.vue?477d","webpack:///./src/components/PlayArea/PuzzleGrid.vue","webpack:///./src/components/PlayArea/PuzzleGrid.vue?1338","webpack:///./src/components/PlayArea/PuzzleGrid.vue?c6b9"],"names":["$","getOwnPropertyDescriptor","f","toLength","toString","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","$startsWith","startsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","prototype","writable","target","proto","forced","searchString","that","this","index","arguments","length","undefined","search","call","slice","isObject","classof","wellKnownSymbol","MATCH","module","exports","it","isRegExp","TypeError","METHOD_NAME","regexp","error1","error2","render","_vm","_h","$createElement","_c","_self","staticClass","_l","cellRow","row","key","cell","col","ref","refInFor","class","last","bottom","height","attrs","readOnly","on","selectCell","inputLetter","action","clicked","addDOM","_e","staticRenderFns","CellController","_classCallCheck","_createClass","value","letter","pattern","test","CellControllerImpl","update","boxClass","isDark","fontSize","style","_v","_s","number","dashClass","arrowClass","splitClass","Vue","extend","props","Object","type","Boolean","default","data","inputType","arrow","dash","marked","selected","state","notes","v","h","created","mounted","domCell","x","getX","y","getY","dom","$emit","setFontSize","computed","isSel","mark","isMarked","_defineProperty","dark","concat","getPos","cellStyle","hasCorner","hasArrow","hasDash","arrowDirection","splitDirection","split","isSplit","isSelectable","getState","methods","select","_select","_asyncToGenerator","_regeneratorRuntime","_callee","wrap","_context","prev","next","stop","apply","deselect","unmark","input","$refs","inputElement","toUpperCase","letterArray","setState","setStart","setArrow","dir","setDash","font","chr","clientWidth","focus","erro","console","log","blur","error","move","direction","previous","updateCell","watch","component","name","components","InputCell","puzzleData","solution","Array","selectedCell","Cell","markedCells","cells","cellWidth","cellHeight","gridWidth","gridHeight","width","playState","setNumbers","setArrows","setDashes","toggleSolution","addKeyPressObserver","newEmptyCell","getWidth","getHeight","setBoardSize","setAllCells","currentCell","isValid","allCells","all","i","liClass","boardFilled","_step","_iterator","_createForOfIteratorHelper","s","n","done","c","getLetter","err","e","getAllCells","createCell","pos","cellState","markBoard","push","setMarkedCells","words","wordStarts","getCell","arrows","dashes","setDom","payload","toggleDirection","getDom","findNextCell","operation","valid","op","nextCell","nextFound","cellCount","nextRow","_step2","_iterator2","validLetter","setLetter","moveNextCell","sel","curr","cx","cy","gridStartOrEnd","movePreviousCell","_document$activeEleme","_document$activeEleme2","_document$activeEleme3","_document$activeEleme4","_document$activeEleme5","document","activeElement","tagName","classList","contains","id","unmarkAll","_step3","_iterator3","reset","j","send","_send","_toggleSolution","_callee2","_iterator4","_step4","_context2","abrupt","splice","t0","finish","t1","_x","val","old"],"mappings":"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","file":"js/chunk-73164b10.2a007fed.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar $startsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.puzzleData)?_c('div',{staticClass:\"playground\"},_vm._l((_vm.cells),function(cellRow,row){return _c('ul',{key:row,staticClass:\"game-ul\"},_vm._l((cellRow),function(cell,col){return _c('li',{key:col,staticClass:\"game-li\"},[_c('input-cell',{ref:(\"\" + col + row),refInFor:true,class:{\n last: col === cellRow.length - 1,\n bottom: row === _vm.height - 1,\n },attrs:{\"cell\":cell,\"read-only\":_vm.readOnly},on:{\"selectedCell\":_vm.selectCell,\"letterInput\":_vm.inputLetter,\"action\":_vm.action,\"clicked\":_vm.clicked,\"addDOMCell\":_vm.addDOM}})],1)}),0)}),0):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nexport class CellController {\n validLetter(letter: string): boolean {\n \n const pattern = /^[A-za-zåäöÅÄÖ]{1}$/;\n return pattern.test(letter);\n }\n}\n\n\nexport const CellControllerImpl = new CellController();","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{key:_vm.update,staticClass:\"letter-box\",class:_vm.boxClass,on:{\"click\":_vm.clicked}},[(_vm.isSelectable)?_c('div',{staticClass:\"inp\"},[_c('input',{ref:\"inputElement\",staticClass:\"letter-inp\",attrs:{\"type\":\"text\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"spellcheck\":\"false\",\"inputmode\":\"none\",\"disabled\":_vm.readOnly}})]):_vm._e(),(!_vm.isDark)?_c('div',{ref:\"chr\",staticClass:\"chr\"},[(_vm.isSelectable)?_c('p',{key:_vm.fontSize,style:(_vm.cellStyle)},[_vm._v(_vm._s(_vm.letter))]):_vm._e(),(_vm.hasCorner)?_c('span',{staticClass:\"corner-num\"},[_vm._v(_vm._s(_vm.number))]):_vm._e(),(_vm.hasDash)?_c('span',{class:_vm.dashClass}):_vm._e(),(_vm.hasArrow)?_c('span',{class:_vm.arrowClass}):_vm._e(),(_vm.isSplit)?_c('span',{class:_vm.splitClass}):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Cell } from \"../../services/vo\";\nimport { DomCell, CellPosition, VueConstructor, InputEl } from \"vue/types/vue\";\nexport default (Vue as VueConstructor<\n Vue & {\n $refs: {\n inputElement: HTMLInputElement;\n chr: HTMLDivElement;\n };\n }\n>).extend({\n props: {\n cell: Object as () => Cell,\n readOnly: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n fontSize: \"36px\",\n letter: \"\",\n inputType: \"\",\n arrow: \"\",\n dash: \"\",\n number: \"\",\n marked: false,\n selected: false,\n state: this.cell.state,\n update: 0,\n notes: {\n v: \"\",\n h: \"\"\n }\n };\n },\n created() {\n },\n mounted() {\n const domCell: DomCell = { x: this.getX, y: this.getY, dom: this };\n this.$emit(\"addDOMCell\", domCell);\n this.setFontSize();\n\n const pattern = /[a-z]/i;\n if (pattern.test(this.state)) {\n this.letter = this.state;\n }\n\n },\n computed: {\n boxClass: function (): any {\n const isSel = this.selected;\n const mark = this.isMarked;\n\n return {\n selected: isSel,\n dark: this.isDark,\n marked: mark,\n\n\n [`x=${this.cell.getPos().x}`]: true,\n [`y=${this.cell.getPos().y}`]: true\n };\n },\n cellStyle: function (): any {\n\n return {\n \"font-size\": this.fontSize,\n }\n },\n getX: function (): number {\n return this.cell.getPos().x;\n },\n getY: function (): number {\n return this.cell.getPos().y;\n },\n hasCorner: function (): boolean {\n return this.number !== \"\";\n },\n hasArrow: function (): boolean {\n return this.arrow !== \"\";\n },\n hasDash: function (): boolean {\n return this.dash !== \"\";\n },\n arrowClass: function (): any {\n let arrowDirection = \"\";\n switch (this.arrow) {\n case \"r\":\n arrowDirection = \"down-right\";\n break;\n case \"d\":\n arrowDirection = \"right-down\";\n break;\n }\n return {\n arrow: true,\n [arrowDirection]: true\n };\n },\n dashClass: function (): any {\n return {\n dash: this.hasDash,\n [this.dash]: true\n };\n },\n splitClass: function (): any {\n let splitDirection = \"\";\n switch (this.state) {\n case \"2\":\n splitDirection = \"right\";\n break;\n case \"3\":\n splitDirection = \"down\";\n break;\n }\n return {\n split: this.isSplit,\n [splitDirection]: true\n };\n },\n\n isMarked: function (): boolean {\n return this.marked;\n },\n isDark: function (): boolean {\n return this.state === \"0\";\n },\n isSplit: function (): boolean {\n return this.state === \"2\" || this.state === \"3\";\n },\n isSelectable: function (): boolean {\n return !this.isDark && !this.isSplit;\n },\n getState: function (): string {\n return this.state;\n }\n },\n methods: {\n select: async function () {\n this.selected = true;\n },\n deselect: function () {\n this.selected = false;\n },\n mark: function () {\n this.marked = true;\n },\n unmark: function () {\n this.marked = false;\n },\n type: function () {\n let input: string = this.$refs.inputElement.value.toUpperCase();\n this.$refs.inputElement.value = \"\";\n if (input.length > 0) {\n let letterArray = input.split(\"\");\n\n this.$emit(\"letterInput\", letterArray);\n } else if (input.length === 1) {\n //this.letter = input;\n this.$emit(\"letterInput\", input);\n }\n },\n setState(state: string) {\n this.state = state;\n },\n setStart: function (number: string): void {\n this.number = number;\n },\n setArrow: function (dir: string): void {\n this.arrow = dir;\n },\n setDash: function (dir: string): void {\n this.dash = dir;\n },\n setFontSize: function (): void {\n const font = this.$refs.chr ? this.$refs.chr.clientWidth * 0.8 + \"px\" : \"36px\";\n this.fontSize = font; //this.$refs.chr ? this.$refs.chr.clientWidth * 0.8 + \"px\" : \"36px\";\n },\n focus: function (): void {\n try {\n\n this.$refs.inputElement.focus();\n }\n catch (erro) {\n console.log(\"err\");\n }\n },\n blur: function (): void {\n try {\n\n this.$refs.inputElement.blur();\n } catch (error: any) {\n console.log(\"err\");\n }\n },\n //control: function (evt: KeyboardEvent): void {\n // this.$emit(\"action\", evt.keyCode);\n //},\n move: function (direction: string): void {\n this.$emit(\"move\", direction);\n },\n previous: function (): void {\n this.$emit(\"previousCell\");\n },\n clicked: function () {\n if (this.readOnly) {\n return;\n }\n if (this.isSelectable) {\n //this.$emit(\"selectedCell\", { x: this.cell.getPos().x, y: this.cell.getPos().y, dir: true });\n this.$emit(\"selectedCell\", { cell: this.cell, dir: true });\n }\n this.$emit(\"clicked\", this.cell);\n },\n updateCell: function (): void {\n //this.state = this.cell.state;\n\n console.log(\"UPDATE\");\n this.update += 1; // Math.floor(Math.random() * 1000);\n console.log(this.update);\n }\n },\n watch: {\n \"cell.update\": function () {\n console.log(\"updateCell\");\n },\n letter: function () {\n // console.log(neVal);\n // console.log(this.letter);\n },\n mark: function () { },\n \"getFontSize\": function () {\n console.log(\"update chr\");\n }\n }\n});\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputCell.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputCell.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InputCell.vue?vue&type=template&id=34efd69e\"\nimport script from \"./InputCell.vue?vue&type=script&lang=ts\"\nexport * from \"./InputCell.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { CellControllerImpl } from \"../../services/cellcontroller\";\nimport InputCell from \"./InputCell.vue\";\nimport { Cell } from \"../../services/vo\";\nimport {\n CellPosition,\n SelectCell,\n InputCell as InputCellI,\n DomCell,\n} from \"vue/types/vue\";\nimport { PuzzleData } from \"../../services/vo/puzzledata\";\nimport { addKeyPressObserver } from \"../../services/inputservice\";\n\nconst X = 0;\nconst Y = 1;\nconst CONTROL = 2;\n\nexport default Vue.extend({\n name: \"PlayArea\",\n components: {\n InputCell,\n },\n props: {\n puzzleData: Object as () => PuzzleData,\n readOnly: {\n type: Boolean,\n default: false,\n },\n solution: {\n type: Array as () => Array,\n default: () => Array(),\n },\n },\n data() {\n return {\n selectedCell: new Cell({ x: -1, y: -1 }, \"1\"),\n direction: \"h\",\n markedCells: new Array(),\n cells: new Array>(),\n cellWidth: \"0\",\n cellHeight: \"0\",\n gridWidth: 0,\n gridHeight: 0,\n width: 0,\n height: 0,\n playState: \"\",\n };\n },\n mounted() {\n this.setNumbers();\n this.setArrows();\n this.setDashes();\n if (this.solution.length > 0) {\n this.toggleSolution(this.solution);\n }\n\n console.log(\"mount\");\n \n addKeyPressObserver(this.action);\n },\n created() {\n //console.log(this.puzzleData);\n this.selectedCell = this.newEmptyCell();\n this.width = this.puzzleData.getWidth();\n this.height = this.puzzleData.getHeight();\n\n this.setBoardSize();\n this.setAllCells();\n this.deselect();\n\n //this.boardData = this.puzzleData.data;\n },\n // inject: [\"keyboardPress\"],\n computed: {\n currentCell: function (): Cell {\n if (this.selectedCell.isValid()) {\n return this.selectedCell;\n } else {\n return this.newEmptyCell();\n }\n },\n allCells: function (): Cell[] {\n let all: Cell[] = new Array();\n\n for (let i = 0; i < this.cells.length; i++) {\n all = all.concat(this.cells[i]);\n }\n\n return all;\n },\n liClass: function () {\n return {};\n },\n cellStyle: function (): any {\n return {\n width: this.cellWidth,\n height: this.cellHeight,\n \"font-size\": \"10px\",\n };\n },\n boardFilled: function (): boolean {\n const cells: Array = this.allCells;\n for (const c of cells) {\n if (c.isSelectable() && c.getLetter() === \"\") {\n return false;\n }\n }\n return true;\n },\n },\n methods: {\n newEmptyCell: function (): Cell {\n return new Cell({ x: -1, y: -1 }, \"1\");\n },\n getAllCells: function (): Cell[] {\n let all: Cell[] = new Array();\n\n for (let i = 0; i < this.cells.length; i++) {\n all = all.concat(this.cells[i]);\n }\n\n return all;\n },\n createCell(col: number, row: number): Cell {\n const pos: CellPosition = {\n x: col as number,\n y: row as number,\n };\n const cellState = this.puzzleData.state[row][col];\n return new Cell(pos, cellState);\n },\n deselect(): void {\n //this.selectedCell = this.emptyCell;\n this.select();\n this.markBoard();\n },\n setAllCells: function () {\n this.cells = new Array();\n for (let row = 0; row < this.height; row++) {\n this.cells[row] = new Array();\n for (let col = 0; col < this.width; col++) {\n const cell = this.createCell(col, row);\n this.cells[row].push(cell);\n }\n }\n },\n setMarkedCells: function (cells: Cell[]): void {\n this.markedCells = cells;\n },\n setNumbers: function (): void {\n const words = this.puzzleData.wordStarts;\n for (let pos: number = 0; pos < words.length; pos++) {\n const row: number = words[pos].x;\n const col: number = words[pos].y;\n this.getCell(row, col).setStart((pos + 1).toString());\n }\n },\n setArrows: function (): void {\n const arrows = this.puzzleData.arrows;\n for (let pos in arrows) {\n for (let pos in arrows) {\n const x = arrows[pos].x;\n const y = arrows[pos].y;\n const dir = arrows[pos].direction;\n this.getCell(x, y).setArrow(dir);\n }\n }\n },\n setDashes: function (): void {\n const dashes = this.puzzleData.dashes;\n for (let pos in dashes) {\n const x = dashes[pos].x;\n const y = dashes[pos].y;\n const dir = dashes[pos].direction;\n this.getCell(x, y).setDash(dir);\n }\n },\n addDOM: function (cell: DomCell): void {\n this.getCell(cell.x, cell.y).setDom(cell.dom);\n },\n\n selectCell: function (payload: SelectCell): void {\n this.select(payload.cell, payload.dir);\n },\n select: function (\n cell: Cell | undefined = undefined,\n dir: boolean = false\n ): void {\n if (cell === undefined) {\n cell = this.newEmptyCell();\n }\n\n if (dir && this.selectedCell === cell) {\n this.toggleDirection();\n }\n try {\n if (this.currentCell.isValid()) {\n this.currentCell.getDom().blur();\n this.currentCell.getDom().deselect();\n }\n this.selectedCell = cell;\n if (this.currentCell.isValid()) {\n this.currentCell.getDom().focus();\n this.currentCell.getDom().select();\n this.markBoard();\n }\n } catch (error: any) {\n console.log(error);\n }\n },\n findNextCell: function (operation: string, direction?: string): Cell {\n let valid: Cell = this.currentCell;\n\n let op = operation;\n\n const pos: CellPosition = this.currentCell.getPos();\n let x: number = pos.x;\n let y: number = pos.y;\n let next: Cell = this.nextCell(this.getCell(x, y), op, direction);\n let nextFound: boolean = false;\n let c = 0;\n const cellCount = this.width * this.height;\n while (!nextFound && c < cellCount) {\n if (next && next.isValid()) {\n valid = next;\n }\n if (!next.isValid()) {\n next = this.nextRow(valid, op, direction);\n } else if (!next.getDom().isSelectable) {\n next = this.nextCell(next, op, direction);\n }\n c++;\n }\n return valid;\n },\n inputLetter: function (payload: string[]): void {\n for (const letter of payload) {\n if (CellControllerImpl.validLetter(letter)) {\n this.currentCell.setLetter(letter.toUpperCase());\n this.$emit(\"filled\", this.boardFilled);\n this.moveNextCell();\n }\n }\n },\n markBoard: function (): void {\n this.markedCells = new Array();\n let marked: Cell[] = new Array();\n if (!this.selectedCell.isValid()) {\n return;\n }\n let sel: Cell = this.selectedCell;\n let curr: Cell = this.nextCell(sel, \"+\");\n while (curr.isValid()) {\n if (!curr.getDom().isSelectable) {\n break;\n }\n marked.push(curr);\n curr = this.nextCell(curr, \"+\");\n }\n curr = this.nextCell(sel, \"-\");\n while (curr.isValid()) {\n if (\n !this.getCell(curr.getPos().x, curr.getPos().y).getDom().isSelectable\n ) {\n break;\n }\n marked.push(curr);\n curr = this.nextCell(curr, \"-\");\n }\n this.setMarkedCells(marked);\n // console.log(this.markedCells);\n },\n nextCell: function (cell: Cell, op: string, direction?: string): Cell {\n let dir = this.direction;\n if (direction) {\n dir = direction;\n }\n let cx = cell.getPos().x;\n let cy = cell.getPos().y;\n let x = cell.getPos().x;\n let y = cell.getPos().y;\n switch (op) {\n case \"+\":\n x = dir === \"h\" ? cx + 1 : cx;\n y = dir === \"v\" ? cy + 1 : cy;\n break;\n case \"-\":\n x = dir === \"h\" ? cx - 1 : cx;\n y = dir === \"v\" ? cy - 1 : cy;\n break;\n }\n const next: Cell = this.getCell(x, y);\n return next; //this.cells[y][x];\n },\n nextRow: function (cell: Cell, op: string, direction?: string): Cell {\n let dir = this.direction;\n if (direction) {\n dir = direction;\n }\n let x = cell.getPos().x;\n let y = cell.getPos().y;\n if (this.gridStartOrEnd(cell)) {\n return this.currentCell;\n }\n switch (dir) {\n case \"h\":\n if (op === \"+\") {\n x = 0;\n y++;\n } else if (op === \"-\") {\n x = this.width - 1;\n y--;\n }\n break;\n case \"v\":\n if (op === \"+\") {\n x++;\n y = 0;\n } else if (op === \"-\") {\n y = this.height - 1;\n x--;\n }\n break;\n }\n return this.getCell(x, y);\n },\n moveNextCell: function (direction?: string): void {\n const next = this.findNextCell(\"+\", direction);\n this.select(next);\n },\n movePreviousCell: function (direction?: string): void {\n const next = this.findNextCell(\"-\", direction);\n this.select(next);\n },\n action: function (key: string) {\n console.log(document.activeElement?.tagName);\n if (\n document.activeElement?.tagName === \"TEXTAREA\" ||\n document.activeElement?.classList.contains(\"text-input\") ||\n document.activeElement?.id.startsWith(\"song-input\")\n ) {\n return;\n }\n\n if (!this.selectedCell.isValid()) return;\n\n const activeElementClasses: DOMTokenList | undefined =\n document.activeElement?.classList;\n //if (!activeElementClasses?.contains(\"key\")) return;\n\n switch (key) {\n case \"backspace\": //Backspace\n //TODO: BackSpace()\n console.log(\"back\");\n if (this.currentCell.getDom().letter !== \"\") {\n this.currentCell.getDom().letter = \"\";\n } else {\n this.movePreviousCell();\n this.currentCell.getDom().letter = \"\";\n }\n break;\n\n case \"arrowleft\": //Left\n //TODO: MoveLeft()\n console.log(\"left\");\n this.movePreviousCell(\"h\");\n\n break;\n case \"arrowup\": //Up\n //TODO: MoveUp()\n console.log(\"up\");\n this.movePreviousCell(\"v\");\n\n break;\n case \"arrowright\": //Right\n //TODO: MoveRight()\n console.log(\"right\");\n this.moveNextCell(\"h\");\n break;\n case \"arrowdown\": //Down\n //TODO: MoveDown()\n console.log(\"down\");\n this.moveNextCell(\"v\");\n break;\n case \" \": //Space\n console.log(\"space\");\n this.toggleDirection();\n break;\n\n default:\n this.inputLetter([key]);\n break;\n }\n this.$emit(\"filled\", this.boardFilled);\n },\n getCell: function (x: number, y: number): Cell {\n try {\n const cell = this.cells[y][x];\n if (!cell) {\n throw \"not a cell\";\n }\n return cell;\n } catch (error: any) {\n return this.newEmptyCell();\n }\n },\n gridStartOrEnd: function (cell: Cell): boolean {\n const pos: CellPosition = cell.getPos();\n const x: number = pos.x;\n const y: number = pos.y;\n return (\n (x === 0 && y === 0) || (x === this.width - 1 && y === this.height - 1)\n );\n },\n toggleDirection: function () {\n this.direction = this.direction === \"h\" ? \"v\" : \"h\";\n },\n unmarkAll: function () {\n for (let cell of this.allCells) {\n cell.getDom().unmark();\n }\n },\n reset: function () {\n for (let i = 0; i < this.height; i++) {\n for (let j = 0; j < this.width; j++) {\n this.getCell(j, i).getDom().letter = \"\";\n }\n }\n this.deselect();\n this.markBoard();\n },\n send: async function (): Promise {\n let gameData: string = \"\";\n for (let i = 0; i < this.height; i++) {\n for (let j = 0; j < this.width; j++) {\n gameData += this.getCell(i, j).getDom().letter;\n }\n }\n\n //return this.$store.dispatch(\"send\", gameData);\n },\n clicked: function (cell: Cell): void {\n if (!this.readOnly) {\n this.$emit(\"clicked\", cell);\n }\n },\n setBoardSize: function (): void {\n this.cellWidth = 100 + \"%\";\n this.cellHeight = 100 + \"%\";\n },\n toggleSolution: async function (solution: string[]): Promise {\n try {\n const cells = this.allCells;\n //console.log(cells);\n for (let cell of cells) {\n if (!cell.getDom().isSelectable) {\n continue;\n } else {\n let letter = solution.splice(0, 1)[0];\n if (letter === \"_\") letter = \"\";\n cell.getDom().letter = letter;\n }\n }\n this.deselect();\n } catch (error: any) {\n console.log(error);\n this.reset();\n }\n },\n \n },\n watch: {\n markedCells: function (val, old): void {\n this.unmarkAll();\n\n for (let i = 0; i < val.length; i++) {\n let cell = val[i];\n cell.getDom().mark();\n }\n },\n direction: function (): void {\n this.markBoard();\n },\n },\n});\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PuzzleGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PuzzleGrid.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PuzzleGrid.vue?vue&type=template&id=0dbb9c74\"\nimport script from \"./PuzzleGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./PuzzleGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}