{"version":3,"sources":["../../../../src/app/js/utils/Subscript.js"],"names":[],"mappings":"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","file":"Subscript.js","sourcesContent":["import React from 'react';\n\n/**\n * Generate correct subscripted variants of coefficient strings\n *\n * @param string coefficient\n * @param string output_type [html|pdf|react] - the type of output to provide - default is 'react'\n * @return object|html converted string\n */\n\nexport class Subscript {\n constructor(coefficient, output_type = 'react') {\n this.coefficient = coefficient.toLowerCase().trim();\n if (['html', 'pdf', 'react'].indexOf(output_type) === -1)\n throw new Error(\n `The output_type (provided: ${output_type}) argument to Subscript must be either 'react', 'html' or 'pdf'`\n );\n\n this.output_type = output_type;\n\n this.output_obj = {\n uc: false,\n lc: false,\n };\n\n this.morph();\n }\n\n /**\n * Dictionary of coefficients mapped to their rules for rendering them.\n * @return {Object} a mapping of the coefficient string name to an object consisting of the capitalized first part, and the text content of the subscript\n */\n\n static coefficient_map() {\n return {\n ssuh: {\n uc: 'SsUH',\n lc: '',\n },\n crs: {\n uc: 'CR',\n lc: 'S',\n },\n ssrt: {\n uc: 'SsRT',\n lc: '',\n },\n ssd: {\n uc: 'SsD',\n lc: '',\n },\n sxs: {\n uc: 'S',\n lc: 'XS',\n },\n s1uh: {\n uc: 'S1UH',\n lc: '',\n },\n cr1: {\n uc: 'CR',\n lc: '1',\n },\n s1rt: {\n uc: 'S1RT',\n lc: '',\n },\n s1d: {\n uc: 'S1D',\n lc: '',\n },\n sx1: {\n uc: 'S',\n lc: 'X1',\n },\n ss: {\n uc: 'S',\n lc: 'S',\n },\n s1: {\n uc: 'S',\n lc: '1',\n },\n fa: {\n uc: 'F',\n lc: 'a',\n },\n fv: {\n uc: 'F',\n lc: 'v',\n },\n sms: {\n uc: 'S',\n lc: 'MS',\n },\n sm1: {\n uc: 'S',\n lc: 'M1',\n },\n sds: {\n uc: 'S',\n lc: 'DS',\n },\n sd1: {\n uc: 'S',\n lc: 'D1',\n },\n tl: {\n uc: 'T',\n lc: 'L',\n },\n pga: {\n uc: 'PGA',\n lc: '',\n },\n pgam: {\n uc: 'PGA',\n lc: 'M',\n },\n fpga: {\n uc: 'F',\n lc: 'PGA',\n },\n ie: {\n uc: 'I',\n lc: 'e',\n },\n // an alias\n le: {\n uc: 'I',\n lc: 'e',\n },\n cv: {\n uc: 'C',\n lc: 'v',\n },\n ts: {\n uc: 'T',\n lc: '(s)',\n },\n sag: {\n uc: 'S',\n lc: 'a(g)',\n },\n sdc: {\n uc: 'S',\n lc: 'DC',\n },\n vs30: {\n uc: 'V',\n lc: 'S30',\n },\n // The 2 values below are for Tornado, so do not remove them - putting them here saves us duplicating logic\n ae: {\n uc: 'A',\n lc: 'e',\n },\n vt: {\n uc: 'V',\n lc: 't',\n },\n };\n }\n\n // This can be used to calculate the width of the string more accurately. Was computed with:\n /*\n\twindow.chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\".split('');\n\twindow.span = document.createElement('span');\n\tdocument.body.appendChild(span);\n\twindow.widthMap = {};\n\twindow.widths = [];\n\twindow.sum = 0;\n\tchars.forEach(function(letter){\n\t\twindow.span.innerHTML = letter;\n\t\twindow.widthMap[letter] = window.span.offsetWidth;\n\t\twindow.widths.push(window.span.offsetWidth)\n\t\twindow.sum += window.span.offsetWidth;\n\t\tconsole.log(letter, window.span.offsetWidth);\n\t});\n\tconsole.log('average is: ' + window.sum/chars.length);\n\n\tAverage is 7\n\t*/\n static get character_widths() {\n return {\n a: 6,\n b: 7,\n c: 6,\n d: 7,\n e: 7,\n f: 4,\n g: 7,\n h: 7,\n i: 3,\n j: 3,\n k: 6,\n l: 3,\n m: 10,\n n: 7,\n o: 7,\n p: 7,\n q: 7,\n r: 4,\n s: 5,\n t: 4,\n u: 7,\n v: 6,\n w: 9,\n x: 6,\n y: 6,\n z: 5,\n A: 8,\n B: 8,\n C: 8,\n D: 9,\n E: 7,\n F: 7,\n G: 9,\n H: 9,\n I: 3,\n J: 6,\n K: 8,\n L: 6,\n M: 11,\n N: 9,\n O: 10,\n P: 7,\n Q: 10,\n R: 7,\n S: 7,\n T: 7,\n U: 8,\n V: 7,\n W: 11,\n X: 8,\n Y: 7,\n Z: 7,\n };\n }\n\n /**\n * A getter to allow getting the coefficient map via easily remembered property\n * @return {Object} Subscript.coefficient_map()\n */\n\n static get coefficients() {\n return Subscript.coefficient_map();\n }\n\n /**\n * Get the output specs from coefficient_map(); sets the output_obj property on the instance\n * @return {Object} this.output_obj\n */\n\n morph() {\n this.output_obj = Subscript.coefficient_map()[this.coefficient];\n if (typeof this.output_obj === 'undefined')\n throw new Error(\n `The coefficient (${this.coefficient}) provided is not valid. It has not been specified in the method: coefficient_map in Subscript.js`\n );\n return this.output_obj;\n }\n\n output_html() {\n let subscript = this.output_obj.lc.length ? `${this.output_obj.lc}` : '';\n return `${this.output_obj.uc}${subscript}`;\n }\n\n output_react() {\n return ;\n }\n\n output_pdf() {}\n\n /**\n * Return the class in it's specified rendered form, specific to the output type specified on construction.\n * This function calls one of the private methods: [`output_html`, `output_react`, `output_pdf`] based on the string content of the property `this.output_type`\n * @return {Object} sum\n */\n\n output() {\n if (this.output_obj.uc === false || this.output_obj.lc === false)\n throw new Error(\n `An error occurred when generating a subscript, please check the value (${this.coefficient}) that has been provided to Subscript`\n );\n\n return this[`output_${this.output_type}`]();\n }\n\n toString() {\n return this.output();\n }\n}\n\n/**\n * Component that is returned from Subscript when 'react' is specified as the output type\n * @return React.Component\n */\n\nexport class SubscriptComponent extends React.Component {\n render() {\n if (this.props.output_obj.lc.length) {\n return (\n \n {this.props.output_obj.uc}\n {this.props.output_obj.lc}\n \n );\n } else {\n return {this.props.output_obj.uc};\n }\n }\n}\n\n// For testing purposes\nexport class SubscriptTest {\n constructor() {\n for (let i in Subscript.coefficients) {\n console.log(i, new Subscript(i) + '');\n }\n console.log('sdfsdEE', new Subscript('sdfsdEE') + '');\n }\n}\n"]}