{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-active-expression-proxies/test/templates/lively-table-test.js"],"names":["expect","MockEvent","createHTML","testWorld","loadComponent","pt","rect","fillTableWithNumber","table","innerHTML","setFromArray","clearSelection","describe","that","before","done","timeout","templateName","then","c","catch","e","it","to","match","querySelectorAll","length","equal","a","asArray","cells1","cells","cells2","setFromArrayAt","cellA","cellAt","cellB","setFromJSO","json_hello","world","hello","asJSO","setFromCSV","s","asCSV","setFromCSVat","currentCell","undefined","cell","selectCell","textContent","onLeftDown","shiftKey","selectedCells","currentColumnIndex","currentRowIndex","onDownDown","onUpDown","selectRow","selectColumn","onRightDown","columnOfCell","rowOfCell","getSelectionAsCSV","insertColumnAt","cell1","removeColumnAt","column","insertRowAt","removeRowAt","after"],"mappings":"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","file":"lively-table-test.js","sourcesContent":["import {expect} from 'src/external/chai.js';\nimport {MockEvent, createHTML, testWorld, loadComponent} from './templates-fixture.js';\nimport {pt,rect} from 'src/client/graphics.js';\n\nfunction fillTableWithNumber(table) {\n  table.innerHTML = \"\"\n  table.setFromArray([\n      [\"A\", \"B\", \"C\", \"D\"],\n      [\"1\", \"2\", \"3\", \"4\"],\n      [\"one\", \"two\", \"three\", \"four\"]])\n  table.clearSelection()\n}\n\ndescribe(\"LivelyTable Component\",  () => {\n  var that;\n  before(\"load\",  function(done) {\n    this.timeout(35000);\n    var templateName = \"lively-table\";\n    loadComponent(templateName).then(c => {\n      that = c;\n      done();\n    }).catch(e => done(e));\n  });\n\n  describe(\"Array\",  () => {\n    it(\"should set array contents\", done => {\n      that.setFromArray([[\"hello\", \"world\"],[\"one\", \"two\"]])\n      expect(that.innerHTML).to.match(/hello/)\n      expect(that.querySelectorAll(\"td\").length).to.equal(2)\n      done()\n    });\n    it(\"should set contents as array\", done => {\n      that.setFromArray([[\"hello\", \"world\"],[\"one\", \"two\"]])\n      var a = that.asArray()\n      expect(a[0][0]).to.equal(\"hello\")\n      expect(a.length).to.equal(2)\n      done()\n    });\n    it(\"should set contents as array preseve formatting\", done => {\n      that.setFromArray([[\"hello\", \"world\"],[\"one\", \"two\"]])\n      var cells1 = that.cells() \n      that.setFromArray([[\"hello2\", \"world2\"],[\"one2\", \"two2\"]])\n      var cells2 = that.cells() \n      expect(cells1[0][0]).to.equal(cells2[0][0])\n      done()\n    });\n\n    it(\"should set contents as array at position\", done => {\n      that.setFromArray([[1, 2, 3, 4],[\"a\", \"b\", \"c\", \"d\"],[\"A\", \"B\", \"C\", \"D\"]])\n      that.setFromArrayAt([[\"hello\", \"world\"],[\"one\", \"two\"]], 1,1)\n      var a = that.asArray()\n      expect(a[0][0]).to.equal(\"1\")\n      expect(a[1][1]).to.equal(\"hello\")\n      expect(a[2][1]).to.equal(\"one\")\n      done()\n    });\n\n    it(\"should set contents as array at position should grow table\", done => {\n      that.setFromArray([[1, 2, 3, 4],[\"a\", \"b\", \"c\", \"d\"],[\"A\", \"B\", \"C\", \"D\"]])\n      that.setFromArrayAt([[\"hello\", \"world\"],[\"one\", \"two\"],[\"uno\", \"dos\"],[\"un\", \"deux\"]], 1,1)\n      var a = that.asArray()\n      expect(a[4][1]).to.equal(\"un\")\n      done()\n    });\n\n    it(\"should set contents as array at position should grow table (wider)\", done => {\n      that.setFromArray([[1, 2],[\"a\", \"b\"],[\"A\", \"B\"]])\n      that.setFromArrayAt([[\"hello\", \"world\",\"how\",\"are\",\"you\"]], 1,1)\n      var a = that.asArray()\n      expect(a[1][3]).to.equal(\"how\")\n      expect(a[2][3], \"empty cell\").to.equal(\"\")\n      done()\n    });\n\n\n    it(\"should set contents as array at position amd keep cell elements\", done => {\n      that.setFromArray([[1, 2, 3, 4],[\"a\", \"b\", \"c\", \"d\"],[\"A\", \"B\", \"C\", \"D\"]])\n      var cellA = that.cellAt(0,0)\n      that.setFromArrayAt([[\"hello\", \"world\"],[\"one\", \"two\"]], 1,1)\n      var cellB = that.cellAt(0,0)\n      expect(cellA).to.equal(cellB)\n      done()\n    });\n\n  })\n\n  describe(\"JSO\",  () => {\n    it(\"should set jso contents\", done => {\n      that.innerHTML = \"\"\n      that.setFromJSO([{json_hello: \"json_one\", world: \"two\"}, {world: \"uno\", hello: \"dos\"}, {world: \"zwei\"}])\n      var a = that.asArray()\n      expect(a[0][0]).to.equal(\"json_hello\")\n      expect(a[1][0]).to.equal(\"json_one\")\n      done()\n    });\n    it(\"should get contents as jso\", done => {\n      that.innerHTML = \"\"\n      that.setFromArray([[\"hello\", \"world\"],[\"uno\", \"dos\"]])\n      var a = that.asJSO()\n      expect(a[0].hello).to.equal(\"uno\")\n      done()\n    });\n  })\n\n  describe(\"CSV\",  () => {\n    it(\"shouuld set CSV contents\", done => {\n      that.setFromCSV(\"a\\tb\\tc\\n1\\t2\\t3\\neins\\tzwei\")\n      var a = that.asArray()\n      expect(a[0][0]).to.equal(\"a\")\n      expect(a[1][0]).to.equal(\"1\")\n      expect(a[2][1]).to.equal(\"zwei\")\n      done()\n    });\n    it(\"shouuld set CSV contents and remove quotes\", done => {\n      that.setFromCSV('\"a\"\\t\"b\"\\t\"c\"\\n\"1\"\\t\"2\"\\t\"3\"\\n\"eins\"\\t\"zwei\"')\n      var a = that.asArray()\n      expect(a[0][0]).to.equal(\"a\")\n      expect(a[1][0]).to.equal(\"1\")\n      expect(a[2][1]).to.equal(\"zwei\")\n      done()\n    });\n\n    it(\"should get contents as csv\", done => {\n      that.setFromArray([[\"hello\", \"world\"],[\"one\", \"two\"]])\n      var s = that.asCSV()\n      expect(s).to.match(/hello\\tworld\\none\\ttwo/)\n      done()\n    });\n    \n    it(\"should set CSV contents as array at position\", done => {\n      that.setFromArray([[1, 2, 3, 4],[\"a\", \"b\", \"c\", \"d\"],[\"A\", \"B\", \"C\", \"D\"]])\n      that.setFromCSVat(\"hello\\tworld\\none\\ttwo\", 1,1)\n      var a = that.asArray()\n      expect(a[0][0]).to.equal(\"1\")\n      expect(a[1][1]).to.equal(\"hello\")\n      expect(a[2][1]).to.equal(\"one\")\n      done()\n    });\n\n  })\n  \n  describe(\"Selection\",  () => {\n    it(\"should sellect a cell\", done => {\n      fillTableWithNumber(that)\n      expect(that.currentCell).to.equal(undefined)\n      var cell = that.cellAt(1,2)\n      that.selectCell(cell)\n      expect(that.currentCell.textContent).to.equal(\"two\")\n      done()\n    });\n    \n    it(\"should sellect two cells on SHIFT + left\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(1,2))\n      that.onLeftDown(new MockEvent(that, {shiftKey: true})) \n      expect(that.selectedCells.length).to.equal(2)\n      done()\n    });\n   \n   \n    it(\"should sellect a four cells on SHIFT + left and SHIFT + down\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(2,1))\n      expect(that.currentColumnIndex, \"currentColumnIndex\").to.equal(2)\n      expect(that.currentRowIndex, \"currentRowIndex\").to.equal(1)\n      that.onLeftDown(new MockEvent(that, {shiftKey: true})) \n      expect(that.currentColumnIndex, \"currentColumnIndex\").to.equal(1)\n      that.onDownDown(new MockEvent(that, {shiftKey: true})) \n      expect(that.currentRowIndex, \"currentRowIndex\").to.equal(2)\n\n      expect(that.selectedCells.length).to.equal(4)\n      done()\n    });\n    \n    it(\"should desellect a four cells on SHIFT + left and SHIFT + down and SHIFT + up\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(2,1))\n      that.onLeftDown(new MockEvent(that, {shiftKey: true})) \n      that.onDownDown(new MockEvent(that, {shiftKey: true})) \n      that.onUpDown(new MockEvent(that, {shiftKey: true})) \n      expect(that.currentRowIndex, \"currentRowIndex\").to.equal(1)\n      expect(that.selectedCells.length, \"number of selected cells\").to.equal(2)\n      done()\n    });\n    it(\"should select a row\", done => {\n      fillTableWithNumber(that)\n      that.selectRow(1)\n      expect(that.selectedCells.length, \"number of selected cells\").to.equal(that.cells()[0].length)\n      done()\n    });\n    it(\"should select a column\", done => {\n      fillTableWithNumber(that)\n      that.selectColumn(1)\n      expect(that.selectedCells.length, \"number of selected cells\").to.equal(that.cells().length)\n      done()\n    });\n\n  })\n  \n  describe(\"Navigation\",  () => {\n    it(\"should navigate left\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(1,2))\n      expect(that.currentColumnIndex).to.equal(1)\n      that.onLeftDown(new MockEvent(that)) \n      expect(that.currentColumnIndex).to.equal(0)\n      done()\n    });\n    it(\"should navigate right\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(1,2))\n      that.onRightDown(new MockEvent(that)) \n      expect(that.currentColumnIndex).to.equal(2)\n      done()\n    });\n    it(\"should navigate up\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(1,2))\n      expect(that.currentRowIndex).to.equal(2)\n      that.onUpDown(new MockEvent(that)) \n      expect(that.currentRowIndex).to.equal(1)\n      done()\n    });\n    it(\"should navigate down\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(1,2))\n      expect(that.currentRowIndex).to.equal(2)\n      that.onUpDown(new MockEvent(that)) \n      expect(that.currentRowIndex).to.equal(1)\n      done()\n    });\n\n  })\n  \n  describe(\"Position\",  () => {\n    it(\"should get right column and row of cell\", done => {\n      fillTableWithNumber(that)\n      var cell = that.cellAt(2,1)\n      expect(that.columnOfCell(cell), \"columnOfCell\").to.equal(2)\n      expect(that.rowOfCell(cell), \"rowOfCell\").to.equal(1)\n      done()\n    });\n  })\n  \n  describe(\"Navigation\",  () => {\n    it(\"should selection as CSV\", done => {\n      fillTableWithNumber(that)\n      that.selectCell(that.cellAt(2,1))\n      that.onLeftDown(new MockEvent(that, {shiftKey: true})) \n      that.onDownDown(new MockEvent(that, {shiftKey: true})) \n    \n      expect(that.getSelectionAsCSV()).to.equal(\"2\\t3\\ntwo\\tthree\")\n      done()\n    });\n  })\n\n\n  describe(\"Add/Remove Column\",  () => {\n    it(\"should add column at an index\", done => {\n      fillTableWithNumber(that)\n      var cells1 = that.cells()\n      that.insertColumnAt(1)\n      var cell1 = that.cellAt(1,0)\n      var cells2 = that.cells()\n      expect(cells1[0].length + 1).to.equal(cells2[0].length)\n      done()\n    });\n    it(\"should remove column at an index\", done => {\n      fillTableWithNumber(that)\n      var cells1 = that.cells()\n      that.removeColumnAt(1)\n      var cell1 = that.cellAt(1,0)\n      var cells2 = that.cells()\n      expect(cells1[0].length - 1).to.equal(cells2[0].length)\n      done()\n    });\n    \n  })\n\n  describe(\"Access Columns\",  () => {\n    it(\"should get a column\", done => {\n      fillTableWithNumber(that)\n      expect(that.column(1)[0], \"column by index\").to.equal(that.cells()[0][1])\n      expect(that.column(\"B\")[0], \"column by label\").to.equal(that.cells()[0][1])\n      done()\n    });\n\n    it(\"should return undefined if label not in header\", done => {\n      fillTableWithNumber(that)\n      expect(that.column(\"NotInHeader\"), \"column by label\").to.equal(undefined)\n      done()\n    });\n\n  })\n  \n\n\n  describe(\"Add/Remove Row\",  () => {\n    it(\"should add a row at an index\", done => {\n      fillTableWithNumber(that)\n      var cells1 = that.cells()\n      that.insertRowAt(1)\n      var cell1 = that.cellAt(1,0)\n      var cells2 = that.cells()\n      expect(cells1.length + 1).to.equal(cells2.length)\n      done()\n    });\n    it(\"should remove a row at an index\", done => {\n      fillTableWithNumber(that)\n      var cells1 = that.cells()\n      that.removeRowAt(1)\n      var cell1 = that.cellAt(1,0)\n      var cells2 = that.cells()\n      expect(cells1.length - 1).to.equal(cells2.length)\n      done()\n    });\n\n\n\n  })\n\n  after(\"cleanup\", () => {\n    testWorld().innerHTML = \"\";\n  });\n});\n"]}