UNPKG

alecmce-primitivesjs

Version:

A small library for visualizing the prime factor decomposition of numbers.

45 lines (44 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var atom_1 = require("./atom"); var factorize_1 = require("./factorize"); var fibonacci_1 = require("./fibonacci"); var five_1 = require("./five"); var get_color_1 = require("./get_color"); var seven_1 = require("./seven"); var three_1 = require("./three"); var two_1 = require("./two"); var Primitive = (function () { function Primitive(drawCircle, atomRadius, spacing, value) { var _this = this; this.drawCircle = drawCircle; this.atomRadius = atomRadius; this.spacing = spacing; var atom = new atom_1.Atom(drawCircle, atomRadius); this.item = getFactors(value).reduce(function (node, factor) { return _this.wrapItem(node, factor); }, atom); this.radius = this.item.radius; } Primitive.prototype.draw = function (config) { return this.item.draw(config); }; Primitive.prototype.wrapItem = function (item, factor) { switch (factor * 1) { case 2: return new two_1.Two(this.drawCircle, get_color_1.getColor(2), this.spacing, item); case 3: return new three_1.Three(this.drawCircle, get_color_1.getColor(3), this.spacing, item); case 5: return new five_1.Five(this.drawCircle, get_color_1.getColor(5), this.spacing, item); case 7: return new seven_1.Seven(this.drawCircle, get_color_1.getColor(7), this.spacing, item); default: return new fibonacci_1.Fibonacci(factor, this.drawCircle, get_color_1.getColor(factor), this.spacing, item); } }; return Primitive; }()); exports.Primitive = Primitive; function getFactors(input) { var factors = typeof input === 'number' ? [input] : input; return factors.reduce(function (list, factor) { return factor == 1 ? list : list.concat(factorize_1.factorize(factor)); }, []); }