diff --git a/assets/fonts/Noto-Bold.ttf b/assets/fonts/Noto-Bold.ttf deleted file mode 100644 index 1db7886e..00000000 Binary files a/assets/fonts/Noto-Bold.ttf and /dev/null differ diff --git a/assets/fonts/Noto-Italic.ttf b/assets/fonts/Noto-Italic.ttf deleted file mode 100644 index 6d2c71c8..00000000 Binary files a/assets/fonts/Noto-Italic.ttf and /dev/null differ diff --git a/assets/json/periodic-table.json b/assets/json/periodic-table.json index e62cc1fc..b95568ae 100644 --- a/assets/json/periodic-table.json +++ b/assets/json/periodic-table.json @@ -1,835 +1,962 @@ -[ - { - "name": "Batman", - "atomic_mass": 210, - "number": 0, - "phase": "solid", - "symbol": "🦇" - }, - { - "name": "Hydrogen", - "atomic_mass": 1.008, - "number": 1, - "phase": "gas", - "symbol": "H" - }, - { - "name": "Helium", - "atomic_mass": 4.0026022, - "number": 2, - "phase": "gas", - "symbol": "He" - }, - { - "name": "Lithium", - "atomic_mass": 6.94, - "number": 3, - "phase": "solid", - "symbol": "Li" - }, - { - "name": "Beryllium", - "atomic_mass": 9.01218315, - "number": 4, - "phase": "solid", - "symbol": "Be" - }, - { - "name": "Boron", - "atomic_mass": 10.81, - "number": 5, - "phase": "solid", - "symbol": "B" - }, - { - "name": "Carbon", - "atomic_mass": 12.011, - "number": 6, - "phase": "solid", - "symbol": "C" - }, - { - "name": "Nitrogen", - "atomic_mass": 14.007, - "number": 7, - "phase": "gas", - "symbol": "N" - }, - { - "name": "Oxygen", - "atomic_mass": 15.999, - "number": 8, - "phase": "gas", - "symbol": "O" - }, - { - "name": "Fluorine", - "atomic_mass": 18.9984031636, - "number": 9, - "phase": "gas", - "symbol": "F" - }, - { - "name": "Neon", - "atomic_mass": 20.17976, - "number": 10, - "phase": "gas", - "symbol": "Ne" - }, - { - "name": "Sodium", - "atomic_mass": 22.989769282, - "number": 11, - "phase": "solid", - "symbol": "Na" - }, - { - "name": "Magnesium", - "atomic_mass": 24.305, - "number": 12, - "phase": "solid", - "symbol": "Mg" - }, - { - "name": "Aluminium", - "atomic_mass": 26.98153857, - "number": 13, - "phase": "solid", - "symbol": "Al" - }, - { - "name": "Silicon", - "atomic_mass": 28.085, - "number": 14, - "phase": "solid", - "symbol": "Si" - }, - { - "name": "Phosphorus", - "atomic_mass": 30.9737619985, - "number": 15, - "phase": "solid", - "symbol": "P" - }, - { - "name": "Sulfur", - "atomic_mass": 32.06, - "number": 16, - "phase": "solid", - "symbol": "S" - }, - { - "name": "Chlorine", - "atomic_mass": 35.45, - "number": 17, - "phase": "gas", - "symbol": "Cl" - }, - { - "name": "Argon", - "atomic_mass": 39.9481, - "number": 18, - "phase": "gas", - "symbol": "Ar" - }, - { - "name": "Potassium", - "atomic_mass": 39.09831, - "number": 19, - "phase": "solid", - "symbol": "K" - }, - { - "name": "Calcium", - "atomic_mass": 40.0784, - "number": 20, - "phase": "solid", - "symbol": "Ca" - }, - { - "name": "Scandium", - "atomic_mass": 44.9559085, - "number": 21, - "phase": "solid", - "symbol": "Sc" - }, - { - "name": "Titanium", - "atomic_mass": 47.8671, - "number": 22, - "phase": "solid", - "symbol": "Ti" - }, - { - "name": "Vanadium", - "atomic_mass": 50.94151, - "number": 23, - "phase": "solid", - "symbol": "V" - }, - { - "name": "Chromium", - "atomic_mass": 51.99616, - "number": 24, - "phase": "solid", - "symbol": "Cr" - }, - { - "name": "Manganese", - "atomic_mass": 54.9380443, - "number": 25, - "phase": "solid", - "symbol": "Mn" - }, - { - "name": "Iron", - "atomic_mass": 55.8452, - "number": 26, - "phase": "solid", - "symbol": "Fe" - }, - { - "name": "Cobalt", - "atomic_mass": 58.9331944, - "number": 27, - "phase": "solid", - "symbol": "Co" - }, - { - "name": "Nickel", - "atomic_mass": 58.69344, - "number": 28, - "phase": "solid", - "symbol": "Ni" - }, - { - "name": "Copper", - "atomic_mass": 63.5463, - "number": 29, - "phase": "solid", - "symbol": "Cu" - }, - { - "name": "Zinc", - "atomic_mass": 65.382, - "number": 30, - "phase": "solid", - "symbol": "Zn" - }, - { - "name": "Gallium", - "atomic_mass": 69.7231, - "number": 31, - "phase": "solid", - "symbol": "Ga" - }, - { - "name": "Germanium", - "atomic_mass": 72.6308, - "number": 32, - "phase": "solid", - "symbol": "Ge" - }, - { - "name": "Arsenic", - "atomic_mass": 74.9215956, - "number": 33, - "phase": "solid", - "symbol": "As" - }, - { - "name": "Selenium", - "atomic_mass": 78.9718, - "number": 34, - "phase": "solid", - "symbol": "Se" - }, - { - "name": "Bromine", - "atomic_mass": 79.904, - "number": 35, - "phase": "liquid", - "symbol": "Br" - }, - { - "name": "Krypton", - "atomic_mass": 83.7982, - "number": 36, - "phase": "gas", - "symbol": "Kr" - }, - { - "name": "Rubidium", - "atomic_mass": 85.46783, - "number": 37, - "phase": "solid", - "symbol": "Rb" - }, - { - "name": "Strontium", - "atomic_mass": 87.621, - "number": 38, - "phase": "solid", - "symbol": "Sr" - }, - { - "name": "Yttrium", - "atomic_mass": 88.905842, - "number": 39, - "phase": "solid", - "symbol": "Y" - }, - { - "name": "Zirconium", - "atomic_mass": 91.2242, - "number": 40, - "phase": "solid", - "symbol": "Zr" - }, - { - "name": "Niobium", - "atomic_mass": 92.906372, - "number": 41, - "phase": "solid", - "symbol": "Nb" - }, - { - "name": "Molybdenum", - "atomic_mass": 95.951, - "number": 42, - "phase": "solid", - "symbol": "Mo" - }, - { - "name": "Technetium", - "atomic_mass": 98, - "number": 43, - "phase": "solid", - "symbol": "Tc" - }, - { - "name": "Ruthenium", - "atomic_mass": 101.072, - "number": 44, - "phase": "solid", - "symbol": "Ru" - }, - { - "name": "Rhodium", - "atomic_mass": 102.905502, - "number": 45, - "phase": "solid", - "symbol": "Rh" - }, - { - "name": "Palladium", - "atomic_mass": 106.421, - "number": 46, - "phase": "solid", - "symbol": "Pd" - }, - { - "name": "Silver", - "atomic_mass": 107.86822, - "number": 47, - "phase": "solid", - "symbol": "Ag" - }, - { - "name": "Cadmium", - "atomic_mass": 112.4144, - "number": 48, - "phase": "solid", - "symbol": "Cd" - }, - { - "name": "Indium", - "atomic_mass": 114.8181, - "number": 49, - "phase": "solid", - "symbol": "In" - }, - { - "name": "Tin", - "atomic_mass": 118.7107, - "number": 50, - "phase": "solid", - "symbol": "Sn" - }, - { - "name": "Antimony", - "atomic_mass": 121.7601, - "number": 51, - "phase": "solid", - "symbol": "Sb" - }, - { - "name": "Tellurium", - "atomic_mass": 127.603, - "number": 52, - "phase": "solid", - "symbol": "Te" - }, - { - "name": "Iodine", - "atomic_mass": 126.904473, - "number": 53, - "phase": "solid", - "symbol": "I" - }, - { - "name": "Xenon", - "atomic_mass": 131.2936, - "number": 54, - "phase": "gas", - "symbol": "Xe" - }, - { - "name": "Cesium", - "atomic_mass": 132.905451966, - "number": 55, - "phase": "solid", - "symbol": "Cs" - }, - { - "name": "Barium", - "atomic_mass": 137.3277, - "number": 56, - "phase": "solid", - "symbol": "Ba" - }, - { - "name": "Lanthanum", - "atomic_mass": 138.905477, - "number": 57, - "phase": "solid", - "symbol": "La" - }, - { - "name": "Cerium", - "atomic_mass": 140.1161, - "number": 58, - "phase": "solid", - "symbol": "Ce" - }, - { - "name": "Praseodymium", - "atomic_mass": 140.907662, - "number": 59, - "phase": "solid", - "symbol": "Pr" - }, - { - "name": "Neodymium", - "atomic_mass": 144.2423, - "number": 60, - "phase": "solid", - "symbol": "Nd" - }, - { - "name": "Promethium", - "atomic_mass": 145, - "number": 61, - "phase": "solid", - "symbol": "Pm" - }, - { - "name": "Samarium", - "atomic_mass": 150.362, - "number": 62, - "phase": "solid", - "symbol": "Sm" - }, - { - "name": "Europium", - "atomic_mass": 151.9641, - "number": 63, - "phase": "solid", - "symbol": "Eu" - }, - { - "name": "Gadolinium", - "atomic_mass": 157.253, - "number": 64, - "phase": "solid", - "symbol": "Gd" - }, - { - "name": "Terbium", - "atomic_mass": 158.925352, - "number": 65, - "phase": "solid", - "symbol": "Tb" - }, - { - "name": "Dysprosium", - "atomic_mass": 162.5001, - "number": 66, - "phase": "solid", - "symbol": "Dy" - }, - { - "name": "Holmium", - "atomic_mass": 164.930332, - "number": 67, - "phase": "solid", - "symbol": "Ho" - }, - { - "name": "Erbium", - "atomic_mass": 167.2593, - "number": 68, - "phase": "solid", - "symbol": "Er" - }, - { - "name": "Thulium", - "atomic_mass": 168.934222, - "number": 69, - "phase": "solid", - "symbol": "Tm" - }, - { - "name": "Ytterbium", - "atomic_mass": 173.0451, - "number": 70, - "phase": "solid", - "symbol": "Yb" - }, - { - "name": "Lutetium", - "atomic_mass": 174.96681, - "number": 71, - "phase": "solid", - "symbol": "Lu" - }, - { - "name": "Hafnium", - "atomic_mass": 178.492, - "number": 72, - "phase": "solid", - "symbol": "Hf" - }, - { - "name": "Tantalum", - "atomic_mass": 180.947882, - "number": 73, - "phase": "solid", - "symbol": "Ta" - }, - { - "name": "Tungsten", - "atomic_mass": 183.841, - "number": 74, - "phase": "solid", - "symbol": "W" - }, - { - "name": "Rhenium", - "atomic_mass": 186.2071, - "number": 75, - "phase": "solid", - "symbol": "Re" - }, - { - "name": "Osmium", - "atomic_mass": 190.233, - "number": 76, - "phase": "solid", - "symbol": "Os" - }, - { - "name": "Iridium", - "atomic_mass": 192.2173, - "number": 77, - "phase": "solid", - "symbol": "Ir" - }, - { - "name": "Platinum", - "atomic_mass": 195.0849, - "number": 78, - "phase": "solid", - "symbol": "Pt" - }, - { - "name": "Gold", - "atomic_mass": 196.9665695, - "number": 79, - "phase": "solid", - "symbol": "Au" - }, - { - "name": "Mercury", - "atomic_mass": 200.5923, - "number": 80, - "phase": "liquid", - "symbol": "Hg" - }, - { - "name": "Thallium", - "atomic_mass": 204.38, - "number": 81, - "phase": "solid", - "symbol": "Tl" - }, - { - "name": "Lead", - "atomic_mass": 207.21, - "number": 82, - "phase": "solid", - "symbol": "Pb" - }, - { - "name": "Bismuth", - "atomic_mass": 208.980401, - "number": 83, - "phase": "solid", - "symbol": "Bi" - }, - { - "name": "Polonium", - "atomic_mass": 209, - "number": 84, - "phase": "solid", - "symbol": "Po" - }, - { - "name": "Astatine", - "atomic_mass": 210, - "number": 85, - "phase": "solid", - "symbol": "At" - }, - { - "name": "Radon", - "atomic_mass": 222, - "number": 86, - "phase": "gas", - "symbol": "Rn" - }, - { - "name": "Francium", - "atomic_mass": 223, - "number": 87, - "phase": "solid", - "symbol": "Fr" - }, - { - "name": "Radium", - "atomic_mass": 226, - "number": 88, - "phase": "solid", - "symbol": "Ra" - }, - { - "name": "Actinium", - "atomic_mass": 227, - "number": 89, - "phase": "solid", - "symbol": "Ac" - }, - { - "name": "Thorium", - "atomic_mass": 232.03774, - "number": 90, - "phase": "solid", - "symbol": "Th" - }, - { - "name": "Protactinium", - "atomic_mass": 231.035882, - "number": 91, - "phase": "solid", - "symbol": "Pa" - }, - { - "name": "Uranium", - "atomic_mass": 238.028913, - "number": 92, - "phase": "solid", - "symbol": "U" - }, - { - "name": "Neptunium", - "atomic_mass": 237, - "number": 93, - "phase": "solid", - "symbol": "Np" - }, - { - "name": "Plutonium", - "atomic_mass": 244, - "number": 94, - "phase": "solid", - "symbol": "Pu" - }, - { - "name": "Americium", - "atomic_mass": 243, - "number": 95, - "phase": "solid", - "symbol": "Am" - }, - { - "name": "Curium", - "atomic_mass": 247, - "number": 96, - "phase": "solid", - "symbol": "Cm" - }, - { - "name": "Berkelium", - "atomic_mass": 247, - "number": 97, - "phase": "solid", - "symbol": "Bk" - }, - { - "name": "Californium", - "atomic_mass": 251, - "number": 98, - "phase": "solid", - "symbol": "Cf" - }, - { - "name": "Einsteinium", - "atomic_mass": 252, - "number": 99, - "phase": "solid", - "symbol": "Es" - }, - { - "name": "Fermium", - "atomic_mass": 257, - "number": 100, - "phase": "solid", - "symbol": "Fm" - }, - { - "name": "Mendelevium", - "atomic_mass": 258, - "number": 101, - "phase": "solid", - "symbol": "Md" - }, - { - "name": "Nobelium", - "atomic_mass": 259, - "number": 102, - "phase": "solid", - "symbol": "No" - }, - { - "name": "Lawrencium", - "atomic_mass": 266, - "number": 103, - "phase": "solid", - "symbol": "Lr" - }, - { - "name": "Rutherfordium", - "atomic_mass": 267, - "number": 104, - "phase": "solid", - "symbol": "Rf" - }, - { - "name": "Dubnium", - "atomic_mass": 268, - "number": 105, - "phase": "solid", - "symbol": "Db" - }, - { - "name": "Seaborgium", - "atomic_mass": 269, - "number": 106, - "phase": "solid", - "symbol": "Sg" - }, - { - "name": "Bohrium", - "atomic_mass": 270, - "number": 107, - "phase": "solid", - "symbol": "Bh" - }, - { - "name": "Hassium", - "atomic_mass": 269, - "number": 108, - "phase": "solid", - "symbol": "Hs" - }, - { - "name": "Meitnerium", - "atomic_mass": 278, - "number": 109, - "phase": "solid", - "symbol": "Mt" - }, - { - "name": "Darmstadtium", - "atomic_mass": 281, - "number": 110, - "phase": "solid", - "symbol": "Ds" - }, - { - "name": "Roentgenium", - "atomic_mass": 282, - "number": 111, - "phase": "solid", - "symbol": "Rg" - }, - { - "name": "Copernicium", - "atomic_mass": 285, - "number": 112, - "phase": "gas", - "symbol": "Cn" - }, - { - "name": "Nihonium", - "atomic_mass": 286, - "number": 113, - "phase": "solid", - "symbol": "Nh" - }, - { - "name": "Flerovium", - "atomic_mass": 289, - "number": 114, - "phase": "solid", - "symbol": "Fl" - }, - { - "name": "Moscovium", - "atomic_mass": 289, - "number": 115, - "phase": "solid", - "symbol": "Mc" - }, - { - "name": "Livermorium", - "atomic_mass": 293, - "number": 116, - "phase": "solid", - "symbol": "Lv" - }, - { - "name": "Tennessine", - "atomic_mass": 294, - "number": 117, - "phase": "solid", - "symbol": "Ts" - }, - { - "name": "Oganesson", - "atomic_mass": 294, - "number": 118, - "phase": "solid", - "symbol": "Og" +{ + "elements": [ + { + "name": "Batman", + "mass": 210, + "number": 0, + "period": 0, + "phase": "Solid", + "symbol": "🦇" + }, + { + "name": "Hydrogen", + "mass": 1.008, + "number": 1, + "period": 1, + "phase": "Gas", + "symbol": "H", + "valence": 1 + }, + { + "name": "Helium", + "mass": 4.0026022, + "number": 2, + "period": 1, + "phase": "Gas", + "symbol": "He" + }, + { + "name": "Lithium", + "mass": 6.94, + "number": 3, + "period": 2, + "phase": "Solid", + "symbol": "Li" + }, + { + "name": "Beryllium", + "mass": 9.01218315, + "number": 4, + "period": 2, + "phase": "Solid", + "symbol": "Be" + }, + { + "name": "Boron", + "mass": 10.81, + "number": 5, + "period": 2, + "phase": "Solid", + "symbol": "B" + }, + { + "name": "Carbon", + "mass": 12.011, + "number": 6, + "period": 2, + "phase": "Solid", + "symbol": "C" + }, + { + "name": "Nitrogen", + "mass": 14.007, + "number": 7, + "period": 2, + "phase": "Gas", + "symbol": "N" + }, + { + "name": "Oxygen", + "mass": 15.999, + "number": 8, + "period": 2, + "phase": "Gas", + "symbol": "O" + }, + { + "name": "Fluorine", + "mass": 18.9984031636, + "number": 9, + "period": 2, + "phase": "Gas", + "symbol": "F" + }, + { + "name": "Neon", + "mass": 20.17976, + "number": 10, + "period": 2, + "phase": "Gas", + "symbol": "Ne" + }, + { + "name": "Sodium", + "mass": 22.989769282, + "number": 11, + "period": 3, + "phase": "Solid", + "symbol": "Na" + }, + { + "name": "Magnesium", + "mass": 24.305, + "number": 12, + "period": 3, + "phase": "Solid", + "symbol": "Mg" + }, + { + "name": "Aluminium", + "mass": 26.98153857, + "number": 13, + "period": 3, + "phase": "Solid", + "symbol": "Al" + }, + { + "name": "Silicon", + "mass": 28.085, + "number": 14, + "period": 3, + "phase": "Solid", + "symbol": "Si" + }, + { + "name": "Phosphorus", + "mass": 30.9737619985, + "number": 15, + "period": 3, + "phase": "Solid", + "symbol": "P" + }, + { + "name": "Sulfur", + "mass": 32.06, + "number": 16, + "period": 3, + "phase": "Solid", + "symbol": "S" + }, + { + "name": "Chlorine", + "mass": 35.45, + "number": 17, + "period": 3, + "phase": "Gas", + "symbol": "Cl" + }, + { + "name": "Argon", + "mass": 39.9481, + "number": 18, + "period": 3, + "phase": "Gas", + "symbol": "Ar" + }, + { + "name": "Potassium", + "mass": 39.09831, + "number": 19, + "period": 4, + "phase": "Solid", + "symbol": "K" + }, + { + "name": "Calcium", + "mass": 40.0784, + "number": 20, + "period": 4, + "phase": "Solid", + "symbol": "Ca" + }, + { + "name": "Scandium", + "mass": 44.9559085, + "number": 21, + "period": 4, + "phase": "Solid", + "symbol": "Sc" + }, + { + "name": "Titanium", + "mass": 47.8671, + "number": 22, + "period": 4, + "phase": "Solid", + "symbol": "Ti" + }, + { + "name": "Vanadium", + "mass": 50.94151, + "number": 23, + "period": 4, + "phase": "Solid", + "symbol": "V" + }, + { + "name": "Chromium", + "mass": 51.99616, + "number": 24, + "period": 4, + "phase": "Solid", + "symbol": "Cr" + }, + { + "name": "Manganese", + "mass": 54.9380443, + "number": 25, + "period": 4, + "phase": "Solid", + "symbol": "Mn" + }, + { + "name": "Iron", + "mass": 55.8452, + "number": 26, + "period": 4, + "phase": "Solid", + "symbol": "Fe" + }, + { + "name": "Cobalt", + "mass": 58.9331944, + "number": 27, + "period": 4, + "phase": "Solid", + "symbol": "Co" + }, + { + "name": "Nickel", + "mass": 58.69344, + "number": 28, + "period": 4, + "phase": "Solid", + "symbol": "Ni" + }, + { + "name": "Copper", + "mass": 63.5463, + "number": 29, + "period": 4, + "phase": "Solid", + "symbol": "Cu" + }, + { + "name": "Zinc", + "mass": 65.382, + "number": 30, + "period": 4, + "phase": "Solid", + "symbol": "Zn" + }, + { + "name": "Gallium", + "mass": 69.7231, + "number": 31, + "period": 4, + "phase": "Solid", + "symbol": "Ga" + }, + { + "name": "Germanium", + "mass": 72.6308, + "number": 32, + "period": 4, + "phase": "Solid", + "symbol": "Ge" + }, + { + "name": "Arsenic", + "mass": 74.9215956, + "number": 33, + "period": 4, + "phase": "Solid", + "symbol": "As" + }, + { + "name": "Selenium", + "mass": 78.9718, + "number": 34, + "period": 4, + "phase": "Solid", + "symbol": "Se" + }, + { + "name": "Bromine", + "mass": 79.904, + "number": 35, + "period": 4, + "phase": "Liquid", + "symbol": "Br" + }, + { + "name": "Krypton", + "mass": 83.7982, + "number": 36, + "period": 4, + "phase": "Gas", + "symbol": "Kr" + }, + { + "name": "Rubidium", + "mass": 85.46783, + "number": 37, + "period": 5, + "phase": "Solid", + "symbol": "Rb" + }, + { + "name": "Strontium", + "mass": 87.621, + "number": 38, + "period": 5, + "phase": "Solid", + "symbol": "Sr" + }, + { + "name": "Yttrium", + "mass": 88.905842, + "number": 39, + "period": 5, + "phase": "Solid", + "symbol": "Y" + }, + { + "name": "Zirconium", + "mass": 91.2242, + "number": 40, + "period": 5, + "phase": "Solid", + "symbol": "Zr" + }, + { + "name": "Niobium", + "mass": 92.906372, + "number": 41, + "period": 5, + "phase": "Solid", + "symbol": "Nb" + }, + { + "name": "Molybdenum", + "mass": 95.951, + "number": 42, + "period": 5, + "phase": "Solid", + "symbol": "Mo" + }, + { + "name": "Technetium", + "mass": 98, + "number": 43, + "period": 5, + "phase": "Solid", + "symbol": "Tc" + }, + { + "name": "Ruthenium", + "mass": 101.072, + "number": 44, + "period": 5, + "phase": "Solid", + "symbol": "Ru" + }, + { + "name": "Rhodium", + "mass": 102.905502, + "number": 45, + "period": 5, + "phase": "Solid", + "symbol": "Rh" + }, + { + "name": "Palladium", + "mass": 106.421, + "number": 46, + "period": 5, + "phase": "Solid", + "symbol": "Pd" + }, + { + "name": "Silver", + "mass": 107.86822, + "number": 47, + "period": 5, + "phase": "Solid", + "symbol": "Ag" + }, + { + "name": "Cadmium", + "mass": 112.4144, + "number": 48, + "period": 5, + "phase": "Solid", + "symbol": "Cd" + }, + { + "name": "Indium", + "mass": 114.8181, + "number": 49, + "period": 5, + "phase": "Solid", + "symbol": "In" + }, + { + "name": "Tin", + "mass": 118.7107, + "number": 50, + "period": 5, + "phase": "Solid", + "symbol": "Sn" + }, + { + "name": "Antimony", + "mass": 121.7601, + "number": 51, + "period": 5, + "phase": "Solid", + "symbol": "Sb" + }, + { + "name": "Tellurium", + "mass": 127.603, + "number": 52, + "period": 5, + "phase": "Solid", + "symbol": "Te" + }, + { + "name": "Iodine", + "mass": 126.904473, + "number": 53, + "period": 5, + "phase": "Solid", + "symbol": "I" + }, + { + "name": "Xenon", + "mass": 131.2936, + "number": 54, + "period": 5, + "phase": "Gas", + "symbol": "Xe" + }, + { + "name": "Cesium", + "mass": 132.905451966, + "number": 55, + "period": 6, + "phase": "Solid", + "symbol": "Cs" + }, + { + "name": "Barium", + "mass": 137.3277, + "number": 56, + "period": 6, + "phase": "Solid", + "symbol": "Ba" + }, + { + "name": "Lanthanum", + "mass": 138.905477, + "number": 57, + "period": 6, + "phase": "Solid", + "symbol": "La" + }, + { + "name": "Cerium", + "mass": 140.1161, + "number": 58, + "period": 6, + "phase": "Solid", + "symbol": "Ce" + }, + { + "name": "Praseodymium", + "mass": 140.907662, + "number": 59, + "period": 6, + "phase": "Solid", + "symbol": "Pr" + }, + { + "name": "Neodymium", + "mass": 144.2423, + "number": 60, + "period": 6, + "phase": "Solid", + "symbol": "Nd" + }, + { + "name": "Promethium", + "mass": 145, + "number": 61, + "period": 6, + "phase": "Solid", + "symbol": "Pm" + }, + { + "name": "Samarium", + "mass": 150.362, + "number": 62, + "period": 6, + "phase": "Solid", + "symbol": "Sm" + }, + { + "name": "Europium", + "mass": 151.9641, + "number": 63, + "period": 6, + "phase": "Solid", + "symbol": "Eu" + }, + { + "name": "Gadolinium", + "mass": 157.253, + "number": 64, + "period": 6, + "phase": "Solid", + "symbol": "Gd" + }, + { + "name": "Terbium", + "mass": 158.925352, + "number": 65, + "period": 6, + "phase": "Solid", + "symbol": "Tb" + }, + { + "name": "Dysprosium", + "mass": 162.5001, + "number": 66, + "period": 6, + "phase": "Solid", + "symbol": "Dy" + }, + { + "name": "Holmium", + "mass": 164.930332, + "number": 67, + "period": 6, + "phase": "Solid", + "symbol": "Ho" + }, + { + "name": "Erbium", + "mass": 167.2593, + "number": 68, + "period": 6, + "phase": "Solid", + "symbol": "Er" + }, + { + "name": "Thulium", + "mass": 168.934222, + "number": 69, + "period": 6, + "phase": "Solid", + "symbol": "Tm" + }, + { + "name": "Ytterbium", + "mass": 173.0451, + "number": 70, + "period": 6, + "phase": "Solid", + "symbol": "Yb" + }, + { + "name": "Lutetium", + "mass": 174.96681, + "number": 71, + "period": 6, + "phase": "Solid", + "symbol": "Lu" + }, + { + "name": "Hafnium", + "mass": 178.492, + "number": 72, + "period": 6, + "phase": "Solid", + "symbol": "Hf" + }, + { + "name": "Tantalum", + "mass": 180.947882, + "number": 73, + "period": 6, + "phase": "Solid", + "symbol": "Ta" + }, + { + "name": "Tungsten", + "mass": 183.841, + "number": 74, + "period": 6, + "phase": "Solid", + "symbol": "W" + }, + { + "name": "Rhenium", + "mass": 186.2071, + "number": 75, + "period": 6, + "phase": "Solid", + "symbol": "Re" + }, + { + "name": "Osmium", + "mass": 190.233, + "number": 76, + "period": 6, + "phase": "Solid", + "symbol": "Os" + }, + { + "name": "Iridium", + "mass": 192.2173, + "number": 77, + "period": 6, + "phase": "Solid", + "symbol": "Ir" + }, + { + "name": "Platinum", + "mass": 195.0849, + "number": 78, + "period": 6, + "phase": "Solid", + "symbol": "Pt" + }, + { + "name": "Gold", + "mass": 196.9665695, + "number": 79, + "period": 6, + "phase": "Solid", + "symbol": "Au" + }, + { + "name": "Mercury", + "mass": 200.5923, + "number": 80, + "period": 6, + "phase": "Liquid", + "symbol": "Hg" + }, + { + "name": "Thallium", + "mass": 204.38, + "number": 81, + "period": 6, + "phase": "Solid", + "symbol": "Tl" + }, + { + "name": "Lead", + "mass": 207.21, + "number": 82, + "period": 6, + "phase": "Solid", + "symbol": "Pb" + }, + { + "name": "Bismuth", + "mass": 208.980401, + "number": 83, + "period": 6, + "phase": "Solid", + "symbol": "Bi" + }, + { + "name": "Polonium", + "mass": 209, + "number": 84, + "period": 6, + "phase": "Solid", + "symbol": "Po" + }, + { + "name": "Astatine", + "mass": 210, + "number": 85, + "period": 6, + "phase": "Solid", + "symbol": "At" + }, + { + "name": "Radon", + "mass": 222, + "number": 86, + "period": 6, + "phase": "Gas", + "symbol": "Rn" + }, + { + "name": "Francium", + "mass": 223, + "number": 87, + "period": 7, + "phase": "Solid", + "symbol": "Fr" + }, + { + "name": "Radium", + "mass": 226, + "number": 88, + "period": 7, + "phase": "Solid", + "symbol": "Ra" + }, + { + "name": "Actinium", + "mass": 227, + "number": 89, + "period": 7, + "phase": "Solid", + "symbol": "Ac" + }, + { + "name": "Thorium", + "mass": 232.03774, + "number": 90, + "period": 7, + "phase": "Solid", + "symbol": "Th" + }, + { + "name": "Protactinium", + "mass": 231.035882, + "number": 91, + "period": 7, + "phase": "Solid", + "symbol": "Pa" + }, + { + "name": "Uranium", + "mass": 238.028913, + "number": 92, + "period": 7, + "phase": "Solid", + "symbol": "U" + }, + { + "name": "Neptunium", + "mass": 237, + "number": 93, + "period": 7, + "phase": "Solid", + "symbol": "Np" + }, + { + "name": "Plutonium", + "mass": 244, + "number": 94, + "period": 7, + "phase": "Solid", + "symbol": "Pu" + }, + { + "name": "Americium", + "mass": 243, + "number": 95, + "period": 7, + "phase": "Solid", + "symbol": "Am" + }, + { + "name": "Curium", + "mass": 247, + "number": 96, + "period": 7, + "phase": "Solid", + "symbol": "Cm" + }, + { + "name": "Berkelium", + "mass": 247, + "number": 97, + "period": 7, + "phase": "Solid", + "symbol": "Bk" + }, + { + "name": "Californium", + "mass": 251, + "number": 98, + "period": 7, + "phase": "Solid", + "symbol": "Cf" + }, + { + "name": "Einsteinium", + "mass": 252, + "number": 99, + "period": 7, + "phase": "Solid", + "symbol": "Es" + }, + { + "name": "Fermium", + "mass": 257, + "number": 100, + "period": 7, + "phase": "Solid", + "symbol": "Fm" + }, + { + "name": "Mendelevium", + "mass": 258, + "number": 101, + "period": 7, + "phase": "Solid", + "symbol": "Md" + }, + { + "name": "Nobelium", + "mass": 259, + "number": 102, + "period": 7, + "phase": "Solid", + "symbol": "No" + }, + { + "name": "Lawrencium", + "mass": 266, + "number": 103, + "period": 7, + "phase": "Solid", + "symbol": "Lr" + }, + { + "name": "Rutherfordium", + "mass": 267, + "number": 104, + "period": 7, + "phase": "Solid", + "symbol": "Rf" + }, + { + "name": "Dubnium", + "mass": 268, + "number": 105, + "period": 7, + "phase": "Solid", + "symbol": "Db" + }, + { + "name": "Seaborgium", + "mass": 269, + "number": 106, + "period": 7, + "phase": "Solid", + "symbol": "Sg" + }, + { + "name": "Bohrium", + "mass": 270, + "number": 107, + "period": 7, + "phase": "Solid", + "symbol": "Bh" + }, + { + "name": "Hassium", + "mass": 269, + "number": 108, + "period": 7, + "phase": "Solid", + "symbol": "Hs" + }, + { + "name": "Meitnerium", + "mass": 278, + "number": 109, + "period": 7, + "phase": "Solid", + "symbol": "Mt" + }, + { + "name": "Darmstadtium", + "mass": 281, + "number": 110, + "period": 7, + "phase": "Solid", + "symbol": "Ds" + }, + { + "name": "Roentgenium", + "mass": 282, + "number": 111, + "period": 7, + "phase": "Solid", + "symbol": "Rg" + }, + { + "name": "Copernicium", + "mass": 285, + "number": 112, + "period": 7, + "phase": "Gas", + "symbol": "Cn" + }, + { + "name": "Nihonium", + "mass": 286, + "number": 113, + "period": 7, + "phase": "Solid", + "symbol": "Nh" + }, + { + "name": "Flerovium", + "mass": 289, + "number": 114, + "period": 7, + "phase": "Solid", + "symbol": "Fl" + }, + { + "name": "Moscovium", + "mass": 289, + "number": 115, + "period": 7, + "phase": "Solid", + "symbol": "Mc" + }, + { + "name": "Livermorium", + "mass": 293, + "number": 116, + "period": 7, + "phase": "Solid", + "symbol": "Lv" + }, + { + "name": "Tennessine", + "mass": 294, + "number": 117, + "period": 7, + "phase": "Solid", + "symbol": "Ts" + }, + { + "name": "Oganesson", + "mass": 294, + "number": 118, + "period": 7, + "phase": "Solid", + "symbol": "Og" + } + ], + "colors": { + "Solid": "black", + "Liquid": "blue", + "Gas": "green" } -] +} diff --git a/commands/search/periodic-table.js b/commands/search/periodic-table.js new file mode 100644 index 00000000..aac70f18 --- /dev/null +++ b/commands/search/periodic-table.js @@ -0,0 +1,68 @@ +const { Command } = require('discord.js-commando'); +const { createCanvas, registerFont } = require('canvas'); +const path = require('path'); +const { elements, colors } = require('../../assets/json/periodic-table'); +registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Noto-Regular.ttf'), { family: 'Noto' }); +registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Noto-CJK.otf'), { family: 'Noto' }); +registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Noto-Emoji.ttf'), { family: 'Noto' }); + +module.exports = class PeriodicTableCommand extends Command { + constructor(client) { + super(client, { + name: 'periodic-table', + aliases: ['periodic-table-of-elements', 'element'], + group: 'search', + memberName: 'periodic-table', + description: 'Finds an element on the periodic table.', + throttling: { + usages: 1, + duration: 10 + }, + clientPermissions: ['ATTACH_FILES'], + args: [ + { + key: 'element', + prompt: 'What element do you want to find? You can enter the name, symbol, or atomic number.', + type: 'string', + validate: element => { + const num = parseInt(element, 10); + if (!isNaN(num) && num >= 0 && num <= elements.length) return true; + const search = element.toLowerCase(); + if (elements.find(e => e.name.toLowerCase() === search || e.symbol.toLowerCase() === search)) return true; + return 'Invalid element, please enter a valid element symbol, name, or atomic number.'; + }, + parse: element => { + const num = parseInt(element, 10); + if (!isNaN(num)) return elements[num]; + const search = element.toLowerCase(); + return elements.find(e => e.name.toLowerCase() === search || e.symbol.toLowerCase() === search); + } + } + ] + }); + } + + run(msg, { element }) { + const canvas = createCanvas(500, 500); + const ctx = canvas.getContext('2d'); + ctx.fillStyle = 'black'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = 'white'; + ctx.fillRect(10, 10, canvas.width - 20, canvas.height - 20); + ctx.font = '210px Noto'; + ctx.textAlign = 'center'; + ctx.fillStyle = colors[element.phase]; + ctx.fillText(element.symbol, 250, 320); + ctx.fillStyle = 'black'; + ctx.font = '45px Noto'; + ctx.fillText(element.number, 250, 100); + ctx.fillText(element.name, 250, 450); + ctx.font = '30px Noto'; + ctx.fillText(element.mass, 250, 400); + return msg.say( + `**${element.name} (${element.symbol})** is a ${element.phase} in period ${element.period}.`, + { files: [{ attachment: canvas.toBuffer(), name: `${element.name}.png` }] } + ); + } +}; + diff --git a/package.json b/package.json index 41463736..cd7fa717 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "62.2.0", + "version": "62.3.0", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": {