{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/client/reactive/components/rewritten/square-matrix.js"],"names":["iteratee","Matrix","constructor","size","times","get","i","j","set","value","init","fn","result","forEach","_","map","item","indexOf","getNeighboursOf","sumBy","accessor","iter","sum","count","predicate","counter","toJSON","json","fromJSON","builder","isArray","Error","Function","object","undefined"],"mappings":"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","file":"square-matrix.js","sourcesContent":["\"enable aexpr\";\n\nexport default class Matrix {\n\n  constructor(size) {\n    this.size = size;\n    this.inner = size.times(() => []);\n  }\n\n  get(i, j) {\n    return this.inner[i][j];\n  }\n\n  set(i, j, value) {\n    return this.inner[i][j] = value;\n  }\n\n  static init(size, fn) {\n    const result = new Matrix(size);\n    result.forEach((_, i, j) => {\n      result.set(i, j, fn(i, j));\n    });\n    return result;\n  }\n\n  forEach(fn) {\n    for (let i = 0; i < this.size; i++) {\n      for (let j = 0; j < this.size; j++) {\n        fn(this.get(i, j), i, j, this);\n      }\n    }\n  }\n\n  map(fn) {\n    const result = new Matrix(this.size);\n    this.forEach((item, i, j) => {\n      result.set(i, j, fn(item, i, j, this));\n    });\n    return result;\n  }\n\n  indexOf(item) {\n    for (let i = 0; i < this.size; i++) {\n      for (let j = 0; j < this.size; j++) {\n        if (this.get(i, j) === item) {\n          return { i, j };\n        }\n      }\n    }\n  }\n\n  getNeighboursOf(i, j) {\n    return [{ i: i - 1, j }, { i, j: j - 1 }, { i: i + 1, j }, { i, j: j + 1 }].filter(({ i, j }) => i >= 0 && i < this.size && j >= 0 && j < this.size).map(({ i, j }) => this.get(i, j));\n  }\n\n  sumBy(accessor) {\n    const iter = iteratee(accessor);\n\n    let sum = 0;\n    this.forEach(item => sum += iter(item));\n    return sum;\n  }\n\n  count(predicate) {\n    const iter = iteratee(predicate);\n\n    let counter = 0;\n    this.forEach(item => {\n      if (iter(item)) {\n        counter++;\n      }\n    });\n    return counter;\n  }\n\n  toJSON() {\n    const json = [];\n    this.forEach((item, i, j) => {\n      json[i] = json[i] || [];\n      json[i][j] = item.toJSON();\n    });\n    return json;\n  }\n\n  static fromJSON(json, builder) {\n    if (!Array.isArray(json)) {\n      throw new Error('json for Matrix is no Array');\n    }\n\n    const iter = iteratee(builder);\n    return this.init(json.length, (i, j) => iter(json[i][j]));\n  }\n}\n\nfunction iteratee(value) {\n  if (typeof value == 'function') {\n    return value;\n  }\n\n  if (value == null) {\n    return Function.identity;\n  }\n\n  if (typeof value == 'string') {\n    return function (object) {\n      return object == null ? undefined : object[value];\n    };\n  }\n\n  return () => {};\n}\n"]}