@chemistry/formula 2.9.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -12
- package/dist/formula.d.ts +1 -0
- package/dist/formula.d.ts.map +1 -0
- package/dist/formula.js +59 -1
- package/dist/formula.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +48 -37
- package/LICENSE.md +0 -22
- package/package-lock.json +0 -13
package/README.md
CHANGED
|
@@ -1,29 +1,48 @@
|
|
|
1
1
|
# @chemistry/formula
|
|
2
|
-
|
|
3
|
-
[](https://codecov.io/gh/chemistry/chemical-libraries)
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/js/%40chemistry%2Fformula)
|
|
5
4
|
[](https://opensource.org/licenses/MIT)
|
|
6
5
|
|
|
7
|
-
Library for
|
|
6
|
+
Library for parsing and formatting chemical formulas.
|
|
8
7
|
|
|
9
8
|
## Install
|
|
9
|
+
|
|
10
10
|
```bash
|
|
11
11
|
npm install @chemistry/formula
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
##
|
|
15
|
-
* Formula
|
|
14
|
+
## Usage
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
import { Formula } from "@chemistry/formula";
|
|
16
|
+
```typescript
|
|
17
|
+
import { Formula } from '@chemistry/formula';
|
|
20
18
|
|
|
19
|
+
// Parse a chemical formula into element counts
|
|
21
20
|
const formula = Formula.parse('C2H5OH');
|
|
22
|
-
console.log(formula); // { C: 2, H: 6, O:1 }
|
|
21
|
+
console.log(formula); // { C: 2, H: 6, O: 1 }
|
|
23
22
|
|
|
23
|
+
// Convert element counts back to a formula string
|
|
24
24
|
const str = Formula.convertToString(formula);
|
|
25
25
|
console.log(str); // C2H6O
|
|
26
|
+
|
|
27
|
+
// Calculate molecular weight
|
|
28
|
+
const weight = Formula.convertToWeight(formula);
|
|
29
|
+
console.log(weight); // 46.069...
|
|
26
30
|
```
|
|
27
31
|
|
|
28
|
-
##
|
|
29
|
-
|
|
32
|
+
## API
|
|
33
|
+
|
|
34
|
+
### `Formula.parse(formula: string): Record<string, number>`
|
|
35
|
+
|
|
36
|
+
Parses a chemical formula string and returns an object mapping element symbols to their counts.
|
|
37
|
+
|
|
38
|
+
### `Formula.convertToString(formula: Record<string, number>): string`
|
|
39
|
+
|
|
40
|
+
Converts an element count object back to a formatted formula string (Hill system order: C first, H second, then alphabetical).
|
|
41
|
+
|
|
42
|
+
### `Formula.convertToWeight(formula: Record<string, number>): number`
|
|
43
|
+
|
|
44
|
+
Calculates the molecular weight from an element count object using standard atomic masses.
|
|
45
|
+
|
|
46
|
+
## License
|
|
47
|
+
|
|
48
|
+
MIT
|
package/dist/formula.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../src/formula.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,qBAAa,OAAO;WACJ,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;WAmBvC,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;CAuBhE"}
|
package/dist/formula.js
CHANGED
|
@@ -1,2 +1,60 @@
|
|
|
1
|
-
!function(o,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define("formula",[],s):"object"==typeof exports?exports.formula=s():o.formula=s()}("undefined"!=typeof self?self:this,(function(){return function(o){var s={};function m(n){if(s[n])return s[n].exports;var r=s[n]={i:n,l:!1,exports:{}};return o[n].call(r.exports,r,r.exports,m),r.l=!0,r.exports}return m.m=o,m.c=s,m.d=function(o,s,n){m.o(o,s)||Object.defineProperty(o,s,{enumerable:!0,get:n})},m.r=function(o){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},m.t=function(o,s){if(1&s&&(o=m(o)),8&s)return o;if(4&s&&"object"==typeof o&&o&&o.__esModule)return o;var n=Object.create(null);if(m.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:o}),2&s&&"string"!=typeof o)for(var r in o)m.d(n,r,function(s){return o[s]}.bind(null,r));return n},m.n=function(o){var s=o&&o.__esModule?function(){return o.default}:function(){return o};return m.d(s,"a",s),s},m.o=function(o,s){return Object.prototype.hasOwnProperty.call(o,s)},m.p="",m(m.s=0)}([function(o,s,m){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),function(o){for(var m in o)s.hasOwnProperty(m)||(s[m]=o[m])}(m(1))},function(o,s,m){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var n=m(2).ChemElements.getAllSymbols(),r="("+n.slice(0).sort((function(o,s){return s.length-o.length})).join("|")+"){1,1}([*0-9]{0,20})",l=function(){function o(){}return o.parse=function(o){for(var s,m={},n=new RegExp(r,"g");s=n.exec(o);){var l=s[1],a=""===s[2]?1:parseFloat(s[2]);m[l]?m[l]=m[l]+a:m[l]=a}return m},o.convertToString=function(o){var s=Object.keys(o).filter((function(o){return-1!==n.indexOf(o)})).map((function(s){return{element:s,count:o[s]}}));return s.sort((function(o,s){return function(o,s){if("C"===o||"H"===o||"C"===s||"H"===s){var m=["H","C"].indexOf(o),n=["H","C"].indexOf(s);return m===n?0:m>n?-1:1}if(o===s)return 0;return o<s?-1:1}(o.element,s.element)})),s.map((function(o){return o.element+(1===o.count?"":o.count)})).join("")},o}();s.Formula=l},function(o,s,m){"undefined"!=typeof self&&self,o.exports=function(o){var s={};function m(n){if(s[n])return s[n].exports;var r=s[n]={i:n,l:!1,exports:{}};return o[n].call(r.exports,r,r.exports,m),r.l=!0,r.exports}return m.m=o,m.c=s,m.d=function(o,s,n){m.o(o,s)||Object.defineProperty(o,s,{enumerable:!0,get:n})},m.r=function(o){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},m.t=function(o,s){if(1&s&&(o=m(o)),8&s)return o;if(4&s&&"object"==typeof o&&o&&o.__esModule)return o;var n=Object.create(null);if(m.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:o}),2&s&&"string"!=typeof o)for(var r in o)m.d(n,r,function(s){return o[s]}.bind(null,r));return n},m.n=function(o){var s=o&&o.__esModule?function(){return o.default}:function(){return o};return m.d(s,"a",s),s},m.o=function(o,s){return Object.prototype.hasOwnProperty.call(o,s)},m.p="",m(m.s=1)}([function(o,s,m){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.ChemElementData=[{id:0,symbol:"Q",RCow:.77,RVdW:0,maxBonds:0,mass:0,name:"Dummy",posX:1,posY:7,color:"#FFFFFF",color2:"#808080"},{id:1,symbol:"H",RCow:.37,RVdW:1.2,maxBonds:1,mass:1.00794,name:"Hydrogen",posX:1,posY:1,color:"#FFFFFF",color2:"#808080"},{id:1,symbol:"D",RCow:.37,RVdW:1.2,maxBonds:1,mass:2,name:"Diyterium",posX:1,posY:8,color:"#FFFFFF",color2:"#808080"},{id:2,symbol:"He",RCow:.32,RVdW:1.4,maxBonds:0,mass:4.002602,name:"Helium",posX:1,posY:18,color:"#D9FFFF",color2:"#849B9B"},{id:3,symbol:"Li",RCow:1.34,RVdW:2.2,maxBonds:1,mass:6.941,name:"Lithium",posX:2,posY:1,color:"#CC80FF",color2:"#C87EFA"},{id:4,symbol:"Be",RCow:.9,RVdW:1.9,maxBonds:2,mass:9.012182,name:"Beryllium",posX:2,posY:2,color:"#C2FF00",color2:"#82AB00"},{id:5,symbol:"B",RCow:.82,RVdW:1.8,maxBonds:3,mass:10.811,name:"Boron",posX:2,posY:13,color:"#FFB5B5",color2:"#F090A0"},{id:6,symbol:"C",RCow:.77,RVdW:1.7,maxBonds:4,mass:12.0107,name:"Carbon",posX:2,posY:14,color:"#909090",color2:"#000000"},{id:7,symbol:"N",RCow:.75,RVdW:1.6,maxBonds:4,mass:14.0067,name:"Nitrogen",posX:2,posY:15,color:"#3050F8",color2:"#304FF7"},{id:8,symbol:"O",RCow:.73,RVdW:1.55,maxBonds:2,mass:15.9994,name:"Oxygen",posX:2,posY:16,color:"#FF0D0D",color2:"#FF0D0D"},{id:9,symbol:"F",RCow:.71,RVdW:1.5,maxBonds:1,mass:18.9984032,name:"Fluorine",posX:2,posY:17,color:"#90E050",color2:"#228B22"},{id:10,symbol:"Ne",RCow:.69,RVdW:1.54,maxBonds:0,mass:20.1797,name:"Neon",posX:2,posY:18,color:"#B3E3F5",color2:"#7B9CA8"},{id:11,symbol:"Na",RCow:1.54,RVdW:2.4,maxBonds:1,mass:22.98977,name:"Sodium",posX:3,posY:1,color:"#AB5CF2",color2:"#AB5CF2"},{id:12,symbol:"Mg",RCow:1.3,RVdW:2.2,maxBonds:2,mass:24.305,name:"Magnesium",posX:3,posY:2,color:"#8AFF00",color2:"#61B400"},{id:13,symbol:"Al",RCow:1.18,RVdW:2.1,maxBonds:6,mass:26.981538,name:"Aluminium",posX:3,posY:13,color:"#BFA6A6",color2:"#A79191"},{id:14,symbol:"Si",RCow:1.11,RVdW:2.1,maxBonds:6,mass:28.0855,name:"Silicon",posX:3,posY:14,color:"#F0C8A0",color2:"#B09276"},{id:15,symbol:"P",RCow:1.06,RVdW:1.95,maxBonds:5,mass:30.973761,name:"Phosphorus",posX:3,posY:15,color:"#FF8000",color2:"#FF8000"},{id:16,symbol:"S",RCow:1.02,RVdW:1.8,maxBonds:6,mass:32.065,name:"Sulfur",posX:3,posY:16,color:"#FFFF30",color2:"#FFC832"},{id:17,symbol:"Cl",RCow:.99,RVdW:1.8,maxBonds:1,mass:35.453,name:"Chlorine",posX:3,posY:17,color:"#1FF01F",color2:"#1DC51D"},{id:18,symbol:"Ar",RCow:.97,RVdW:1.88,maxBonds:0,mass:39.948,name:"Argon",posX:3,posY:18,color:"#80D1E3",color2:"#63A2B0"},{id:19,symbol:"K",RCow:1.96,RVdW:2.8,maxBonds:1,mass:39.0983,name:"Potassium",posX:4,posY:1,color:"#8F40D4",color2:"#8F40D4"},{id:20,symbol:"Ca",RCow:1.74,RVdW:2.4,maxBonds:2,mass:40.078,name:"Calcium",posX:4,posY:2,color:"#3DFF00",color2:"#2FC300"},{id:21,symbol:"Sc",RCow:1.44,RVdW:2.3,maxBonds:6,mass:44.95591,name:"Scandium",posX:4,posY:3,color:"#E6E6E6",color2:"#969696"},{id:22,symbol:"Ti",RCow:1.36,RVdW:2.15,maxBonds:6,mass:47.867,name:"Titanium",posX:4,posY:4,color:"#BFC2C7",color2:"#94969A"},{id:23,symbol:"V",RCow:1.25,RVdW:2.05,maxBonds:6,mass:50.9415,name:"Vanadium",posX:4,posY:5,color:"#A6A6AB",color2:"#96969A"},{id:24,symbol:"Cr",RCow:1.27,RVdW:2.05,maxBonds:6,mass:51.9961,name:"Chromium",posX:4,posY:6,color:"#8A99C7",color2:"#8796C3"},{id:25,symbol:"Mn",RCow:1.39,RVdW:2.05,maxBonds:8,mass:54.938049,name:"Manganese",posX:4,posY:7,color:"#9C7AC7",color2:"#9C7AC7"},{id:26,symbol:"Fe",RCow:1.25,RVdW:2.05,maxBonds:6,mass:55.845,name:"Iron",posX:4,posY:8,color:"#E06633",color2:"#E06633"},{id:27,symbol:"Co",RCow:1.26,RVdW:2,maxBonds:6,mass:58.9332,name:"Cobalt",posX:4,posY:9,color:"#F090A0",color2:"#DB8293"},{id:28,symbol:"Ni",RCow:1.21,RVdW:2,maxBonds:6,mass:58.6934,name:"Nickel",posX:4,posY:10,color:"#50D050",color2:"#45B645"},{id:29,symbol:"Cu",RCow:1.38,RVdW:2,maxBonds:6,mass:63.546,name:"Copper",posX:4,posY:11,color:"#C88033",color2:"#C78033"},{id:30,symbol:"Zn",RCow:1.31,RVdW:2.1,maxBonds:6,mass:65.409,name:"Zinc",posX:4,posY:12,color:"#7D80B0",color2:"#7D80B0"},{id:31,symbol:"Ga",RCow:1.26,RVdW:2.1,maxBonds:3,mass:69.723,name:"Gallium",posX:4,posY:13,color:"#C28F8F",color2:"#BD8C8C"},{id:32,symbol:"Ge",RCow:1.22,RVdW:2.1,maxBonds:4,mass:72.64,name:"Germanium",posX:4,posY:14,color:"#668F8F",color2:"#668F8F"},{id:33,symbol:"As",RCow:1.19,RVdW:2.05,maxBonds:3,mass:74.9216,name:"Arsenic",posX:4,posY:15,color:"#BD80E3",color2:"#BD80E3"},{id:34,symbol:"Se",RCow:1.16,RVdW:1.9,maxBonds:2,mass:78.96,name:"Selenium",posX:4,posY:16,color:"#FFA100",color2:"#E28F00"},{id:35,symbol:"Br",RCow:1.14,RVdW:1.9,maxBonds:1,mass:79.904,name:"Bromine",posX:4,posY:17,color:"#A62929",color2:"#A62929"},{id:36,symbol:"Kr",RCow:1.1,RVdW:2.02,maxBonds:0,mass:83.798,name:"Krypton",posX:4,posY:18,color:"#5CB8D1",color2:"#53A6BC"},{id:37,symbol:"Rb",RCow:2.11,RVdW:2.9,maxBonds:1,mass:85.4678,name:"Rubidium",posX:5,posY:1,color:"#702EB0",color2:"#702EB0"},{id:38,symbol:"Sr",RCow:1.92,RVdW:2.55,maxBonds:2,mass:87.62,name:"Strontium",posX:5,posY:2,color:"#00FF00",color2:"#00D000"},{id:39,symbol:"Y",RCow:1.62,RVdW:2.4,maxBonds:6,mass:88.90585,name:"Yttrium",posX:5,posY:3,color:"#94FFFF",color2:"#5FA4A4"},{id:40,symbol:"Zr",RCow:1.48,RVdW:2.3,maxBonds:6,mass:91.224,name:"Zirconium",posX:5,posY:4,color:"#94E0E0",color2:"#6BA2A2"},{id:41,symbol:"Nb",RCow:1.37,RVdW:2.15,maxBonds:6,mass:92.90638,name:"Niobium",posX:5,posY:5,color:"#73C2C9",color2:"#61A4A9"},{id:42,symbol:"Mo",RCow:1.45,RVdW:2.1,maxBonds:6,mass:95.94,name:"Molybdenum",posX:5,posY:6,color:"#54B5B5",color2:"#4EA9A9"},{id:43,symbol:"Tc",RCow:1.56,RVdW:2.05,maxBonds:6,mass:98,name:"Technetium",posX:5,posY:7,color:"#3B9E9E",color2:"#4EA9A9"},{id:44,symbol:"Ru",RCow:1.26,RVdW:2.05,maxBonds:6,mass:101.07,name:"Ruthenium",posX:5,posY:8,color:"#248F8F",color2:"#248F8F"},{id:45,symbol:"Rh",RCow:1.35,RVdW:2,maxBonds:6,mass:102.9055,name:"Rhodium",posX:5,posY:9,color:"#0A7D8C",color2:"#0A7D8C"},{id:46,symbol:"Pd",RCow:1.31,RVdW:2.05,maxBonds:6,mass:106.42,name:"Palladium",posX:5,posY:10,color:"#006985",color2:"#006985"},{id:47,symbol:"Ag",RCow:1.53,RVdW:2.1,maxBonds:6,mass:107.8682,name:"Silver",posX:5,posY:11,color:"#C0C0C0",color2:"#969696"},{id:48,symbol:"Cd",RCow:1.48,RVdW:2.2,maxBonds:6,mass:112.411,name:"Cadmium",posX:5,posY:12,color:"#FFD98F",color2:"#AE9462"},{id:49,symbol:"In",RCow:1.44,RVdW:2.2,maxBonds:3,mass:114.818,name:"Indium",posX:5,posY:13,color:"#A67573",color2:"#A67573"},{id:50,symbol:"Sn",RCow:1.41,RVdW:2.25,maxBonds:4,mass:118.71,name:"Tin",posX:5,posY:14,color:"#668080",color2:"#668080"},{id:51,symbol:"Sb",RCow:1.38,RVdW:2.2,maxBonds:3,mass:121.76,name:"Antimony",posX:5,posY:15,color:"#9E63B5",color2:"#9E63B5"},{id:52,symbol:"Te",RCow:1.35,RVdW:2.1,maxBonds:2,mass:127.6,name:"Tellurium",posX:5,posY:16,color:"#D47A00",color2:"#D47A00"},{id:53,symbol:"I",RCow:1.33,RVdW:2.1,maxBonds:1,mass:126.90447,name:"Iodine",posX:5,posY:17,color:"#940094",color2:"#940094"},{id:54,symbol:"Xe",RCow:1.3,RVdW:2.16,maxBonds:0,mass:131.293,name:"Xenon",posX:5,posY:18,color:"#429EB0",color2:"#429EB0"},{id:55,symbol:"Cs",RCow:2.25,RVdW:3,maxBonds:1,mass:132.90545,name:"Cesium",posX:6,posY:1,color:"#57178F",color2:"#57178F"},{id:56,symbol:"Ba",RCow:1.98,RVdW:2.7,maxBonds:2,mass:137.327,name:"Barium",posX:6,posY:2,color:"#00C900",color2:"#00C900"},{id:57,symbol:"La",RCow:1.69,RVdW:2.5,maxBonds:12,mass:138.9055,name:"Lanthanum",posX:9,posY:3,color:"#70D4FF",color2:"#57A4C5"},{id:58,symbol:"Ce",RCow:1.6,RVdW:2.48,maxBonds:6,mass:140.116,name:"Cerium",posX:9,posY:4,color:"#FFFFC7",color2:"#989877"},{id:59,symbol:"Pr",RCow:1.6,RVdW:2.47,maxBonds:6,mass:140.90765,name:"Praseodymium",posX:9,posY:5,color:"#D9FFC7",color2:"#869D7B"},{id:60,symbol:"Nd",RCow:1.6,RVdW:2.45,maxBonds:6,mass:144.24,name:"Neodymium",posX:9,posY:6,color:"#C7FFC7",color2:"#7DA07D"},{id:61,symbol:"Pm",RCow:1.6,RVdW:2.43,maxBonds:6,mass:145,name:"Promethium",posX:9,posY:7,color:"#A3FFC7",color2:"#69A581"},{id:62,symbol:"Sm",RCow:1.6,RVdW:2.42,maxBonds:6,mass:150.36,name:"Samarium",posX:9,posY:8,color:"#8FFFC7",color2:"#5EA883"},{id:63,symbol:"Eu",RCow:1.6,RVdW:2.4,maxBonds:6,mass:151.964,name:"Europium",posX:9,posY:9,color:"#61FFC7",color2:"#43B089"},{id:64,symbol:"Gd",RCow:1.6,RVdW:2.38,maxBonds:6,mass:157.25,name:"Gadolinium",posX:9,posY:10,color:"#45FFC7",color2:"#31B48D"},{id:65,symbol:"Tb",RCow:1.6,RVdW:2.37,maxBonds:6,mass:158.92534,name:"Terbium",posX:9,posY:11,color:"#30FFC7",color2:"#23B890"},{id:66,symbol:"Dy",RCow:1.6,RVdW:2.35,maxBonds:6,mass:162.5,name:"Dysprosium",posX:9,posY:12,color:"#1FFFC7",color2:"#17BB92"},{id:67,symbol:"Ho",RCow:1.6,RVdW:2.33,maxBonds:6,mass:164.93032,name:"Holmium",posX:9,posY:13,color:"#00FF9C",color2:"#00C578"},{id:68,symbol:"Er",RCow:1.6,RVdW:2.32,maxBonds:6,mass:167.259,name:"Erbium",posX:9,posY:14,color:"#00E675",color2:"#00C765"},{id:69,symbol:"Tm",RCow:1.6,RVdW:2.3,maxBonds:6,mass:168.93421,name:"Thulium",posX:9,posY:15,color:"#00D452",color2:"#00C94E"},{id:70,symbol:"Yb",RCow:1.6,RVdW:2.28,maxBonds:6,mass:173.04,name:"Ytterbium",posX:9,posY:16,color:"#00BF38",color2:"#00BF38"},{id:71,symbol:"Lu",RCow:1.6,RVdW:2.27,maxBonds:6,mass:174.967,name:"Lutetium",posX:9,posY:17,color:"#00AB24",color2:"#00AB24"},{id:72,symbol:"Hf",RCow:1.5,RVdW:2.25,maxBonds:6,mass:178.49,name:"Hafnium",posX:6,posY:4,color:"#4DC2FF",color2:"#42A8DC"},{id:73,symbol:"Ta",RCow:1.38,RVdW:2.2,maxBonds:6,mass:180.9479,name:"Tantalum",posX:6,posY:5,color:"#4DA6FF",color2:"#4BA2F9"},{id:74,symbol:"W",RCow:1.46,RVdW:2.1,maxBonds:6,mass:183.84,name:"Tungsten",posX:6,posY:6,color:"#2194D6",color2:"#2194D6"},{id:75,symbol:"Re",RCow:1.59,RVdW:2.05,maxBonds:6,mass:186.207,name:"Rhenium",posX:6,posY:7,color:"#267DAB",color2:"#267DAB"},{id:76,symbol:"Os",RCow:1.28,RVdW:2,maxBonds:6,mass:190.23,name:"Osmium",posX:6,posY:8,color:"#266696",color2:"#266696"},{id:77,symbol:"Ir",RCow:1.37,RVdW:2,maxBonds:6,mass:192.217,name:"Iridium",posX:6,posY:9,color:"#175487",color2:"#175487"},{id:78,symbol:"Pt",RCow:1.28,RVdW:2.05,maxBonds:6,mass:195.078,name:"Platinum",posX:6,posY:10,color:"#D0D0E0",color2:"#9595A0"},{id:79,symbol:"Au",RCow:1.44,RVdW:2.1,maxBonds:6,mass:196.96655,name:"Gold",posX:6,posY:11,color:"#FFD123",color2:"#B9981A"},{id:80,symbol:"Hg",RCow:1.49,RVdW:2.05,maxBonds:6,mass:200.59,name:"Mercury",posX:6,posY:12,color:"#B8B8D0",color2:"#9595A9"},{id:81,symbol:"Tl",RCow:1.48,RVdW:2.2,maxBonds:3,mass:204.3833,name:"Thallium",posX:6,posY:13,color:"#A6544D",color2:"#A6544D"},{id:82,symbol:"Pb",RCow:1.47,RVdW:2.3,maxBonds:4,mass:207.2,name:"Lead",posX:6,posY:14,color:"#575961",color2:"#575961"},{id:83,symbol:"Bi",RCow:1.46,RVdW:2.3,maxBonds:3,mass:208.98038,name:"Bismuth",posX:6,posY:15,color:"#9E4FB5",color2:"#9E4FB5"},{id:84,symbol:"Po",RCow:1.6,RVdW:2,maxBonds:2,mass:209,name:"Polonium",posX:6,posY:16,color:"#AB5C00",color2:"#AB5C00"},{id:85,symbol:"At",RCow:1.6,RVdW:2,maxBonds:1,mass:210,name:"Astatine",posX:6,posY:17,color:"#754F45",color2:"#754F45"},{id:86,symbol:"Rn",RCow:1.45,RVdW:2,maxBonds:0,mass:222,name:"Radon",posX:6,posY:18,color:"#428296",color2:"#428296"},{id:87,symbol:"Fr",RCow:1.6,RVdW:2,maxBonds:1,mass:223,name:"Francium",posX:7,posY:1,color:"#420066",color2:"#420066"},{id:88,symbol:"Ra",RCow:1.6,RVdW:2,maxBonds:2,mass:226,name:"Radium",posX:7,posY:2,color:"#007D00",color2:"#007D00"},{id:89,symbol:"Ac",RCow:1.6,RVdW:2,maxBonds:6,mass:227,name:"Actinium",posX:10,posY:3,color:"#70ABFA",color2:"#669CE4"},{id:90,symbol:"Th",RCow:1.6,RVdW:2.4,maxBonds:6,mass:232.0381,name:"Thorium",posX:10,posY:4,color:"#00BAFF",color2:"#00B8FC"},{id:91,symbol:"Pa",RCow:1.6,RVdW:2,maxBonds:6,mass:231.03588,name:"Protactinium",posX:10,posY:5,color:"#00A1FF",color2:"#00A1FF"},{id:92,symbol:"U",RCow:1.6,RVdW:2.3,maxBonds:6,mass:238.02891,name:"Uranium",posX:10,posY:6,color:"#008FFF",color2:"#008FFF"},{id:93,symbol:"Np",RCow:1.6,RVdW:2,maxBonds:6,mass:237,name:"Neptunium",posX:10,posY:7,color:"#0080FF",color2:"#0080FF"},{id:94,symbol:"Pu",RCow:1.6,RVdW:2,maxBonds:6,mass:244,name:"Plutonium",posX:10,posY:8,color:"#006BFF",color2:"#006BFF"},{id:95,symbol:"Am",RCow:1.6,RVdW:2,maxBonds:6,mass:243,name:"Americium",posX:10,posY:9,color:"#545CF2",color2:"#545CF2"},{id:96,symbol:"Cm",RCow:1.6,RVdW:2,maxBonds:6,mass:247,name:"Curium",posX:10,posY:10,color:"#785CE3",color2:"#785CE3"},{id:97,symbol:"Bk",RCow:1.6,RVdW:2,maxBonds:6,mass:247,name:"Berkelium",posX:10,posY:11,color:"#8A4FE3",color2:"#8A4FE3"},{id:98,symbol:"Cf",RCow:1.6,RVdW:2,maxBonds:6,mass:251,name:"Californium",posX:10,posY:12,color:"#A136D4",color2:"#A136D4"},{id:99,symbol:"Es",RCow:1.6,RVdW:2,maxBonds:6,mass:252,name:"Einsteinium",posX:10,posY:13,color:"#B31FD4",color2:"#B31FD4"},{id:100,symbol:"Fm",RCow:1.6,RVdW:2,maxBonds:6,mass:257,name:"Fermium",posX:10,posY:14,color:"#B31FBA",color2:"#B31FBA"},{id:101,symbol:"Md",RCow:1.6,RVdW:2,maxBonds:6,mass:258,name:"Mendelevium",posX:10,posY:15,color:"#B30DA6",color2:"#B30DA6"},{id:102,symbol:"No",RCow:1.6,RVdW:2,maxBonds:6,mass:259,name:"Nobelium",posX:10,posY:16,color:"#BD0D87",color2:"#BD0D87"},{id:103,symbol:"Lr",RCow:1.6,RVdW:2,maxBonds:6,mass:262,name:"Lawrencium",posX:10,posY:17,color:"#C70066",color2:"#C70066"},{id:104,symbol:"Rf",RCow:1.6,RVdW:2,maxBonds:6,mass:261,name:"Rutherfordium",posX:7,posY:4,color:"#CC0059",color2:"#42A8DC"},{id:105,symbol:"Db",RCow:1.6,RVdW:2,maxBonds:6,mass:262,name:"Dubnium",posX:7,posY:5,color:"#D1004F",color2:"#4BA2F9"},{id:106,symbol:"Sg",RCow:1.6,RVdW:2,maxBonds:6,mass:266,name:"Seaborgium",posX:7,posY:6,color:"#D90045",color2:"#2194D6"},{id:107,symbol:"Bh",RCow:1.6,RVdW:2,maxBonds:6,mass:264,name:"Bohrium",posX:7,posY:7,color:"#E00038",color2:"#267DAB"},{id:108,symbol:"Hs",RCow:1.6,RVdW:2,maxBonds:6,mass:277,name:"Hassium",posX:7,posY:8,color:"#E6002E",color2:"#266696"},{id:109,symbol:"Mt",RCow:1.6,RVdW:2,maxBonds:6,mass:268,name:"Meitnerium",posX:7,posY:9,color:"#EB0026",color2:"#175487"},{id:110,symbol:"Ds",RCow:1.6,RVdW:2,maxBonds:6,mass:281,name:"Darmstadtium",posX:7,posY:10,color:"#FF1493",color2:"#9595A0"},{id:111,symbol:"Rg",RCow:1.6,RVdW:2,maxBonds:6,mass:272,name:"Roentgenium",posX:7,posY:11,color:"#FF1494",color2:"#B9981A"},{id:112,symbol:"Cn",RCow:1.6,RVdW:2,maxBonds:6,mass:277,name:"Copernicium",posX:7,posY:12,color:"#FF1495",color2:"#9595A9"}]},function(o,s,m){"use strict";function n(o){for(var m in o)s.hasOwnProperty(m)||(s[m]=o[m])}Object.defineProperty(s,"__esModule",{value:!0}),n(m(2)),n(m(0))},function(o,s,m){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var n=m(0),r=function(){function o(){}return o.getById=function(o){for(var s=0,m=n.ChemElementData;s<m.length;s++){var r=m[s];if(r.id===o)return r}return null},o.getBySymbol=function(o){for(var s=(o||"").replace(/[^a-z]/gim,"").toLowerCase(),m=s.charAt(0).toUpperCase()+s.slice(1),r=0,l=n.ChemElementData;r<l.length;r++){var a=l[r];if(a.symbol===m)return a}return null},o.getAll=function(){return n.ChemElementData.filter((function(o){return"Q"!==o.symbol&&"D"!==o.symbol}))},o.getAllSymbols=function(){return o.getAll().map((function(o){return o.symbol}))},o}();s.ChemElements=r}])}])}));
|
|
1
|
+
import { ChemElements } from '@chemistry/elements';
|
|
2
|
+
const ELEMENTS = ChemElements.getAllSymbols();
|
|
3
|
+
const ELEMENTS_LIST = ELEMENTS.slice(0)
|
|
4
|
+
.sort((a, b) => b.length - a.length)
|
|
5
|
+
.join('|');
|
|
6
|
+
const FORMULA_QUERY_REGEX_STR = `(${ELEMENTS_LIST}){1,1}([*0-9]{0,20})`;
|
|
7
|
+
export class Formula {
|
|
8
|
+
static parse(formula) {
|
|
9
|
+
let found;
|
|
10
|
+
const formulaObj = {};
|
|
11
|
+
const FORMULA_QUERY_REGEX = new RegExp(FORMULA_QUERY_REGEX_STR, 'g');
|
|
12
|
+
while ((found = FORMULA_QUERY_REGEX.exec(formula))) {
|
|
13
|
+
const element = found[1];
|
|
14
|
+
const count = found[2] === '' ? 1 : parseFloat(found[2]);
|
|
15
|
+
if (formulaObj[element]) {
|
|
16
|
+
formulaObj[element] = formulaObj[element] + count;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
formulaObj[element] = count;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return formulaObj;
|
|
23
|
+
}
|
|
24
|
+
static convertToString(formula) {
|
|
25
|
+
const formulaDataArray = Object.keys(formula)
|
|
26
|
+
.filter((key) => {
|
|
27
|
+
return ELEMENTS.includes(key);
|
|
28
|
+
})
|
|
29
|
+
.map((key) => {
|
|
30
|
+
return {
|
|
31
|
+
element: key,
|
|
32
|
+
count: formula[key],
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
// sorted formula
|
|
36
|
+
formulaDataArray.sort((a, b) => {
|
|
37
|
+
return elementCompare(a.element, b.element);
|
|
38
|
+
});
|
|
39
|
+
return formulaDataArray
|
|
40
|
+
.map((item) => {
|
|
41
|
+
return item.element + (item.count === 1 ? '' : item.count);
|
|
42
|
+
})
|
|
43
|
+
.join('');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function elementCompare(a, b) {
|
|
47
|
+
if (a === 'C' || a === 'H' || b === 'C' || b === 'H') {
|
|
48
|
+
const a1 = ['H', 'C'].indexOf(a); // C => 2, H=> 1, ? =>-1
|
|
49
|
+
const b1 = ['H', 'C'].indexOf(b); // C => 2, H=> 1, ? =>-1
|
|
50
|
+
if (a1 === b1) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
return a1 > b1 ? -1 : 1;
|
|
54
|
+
}
|
|
55
|
+
if (a === b) {
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
return a < b ? -1 : 1;
|
|
59
|
+
}
|
|
2
60
|
//# sourceMappingURL=formula.js.map
|
package/dist/formula.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://formula/webpack/universalModuleDefinition","webpack://formula/webpack/bootstrap","webpack://formula/./src/index.ts","webpack://formula/./src/formula.ts","webpack://formula/./node_modules/@chemistry/elements/dist/chem-elements.js"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ELEMENTS","ChemElements","getAllSymbols","FORMULA_QUERY_REGEX_STR","slice","sort","a","b","length","join","parse","formula","found","formulaObj","FORMULA_QUERY_REGEX","RegExp","exec","element","count","parseFloat","convertToString","formulaDataArray","keys","filter","indexOf","map","a1","b1","elementCompare","item","Formula","default","ChemElementData","id","symbol","RCow","RVdW","maxBonds","mass","posX","posY","color","color2","getById","getBySymbol","replace","toLowerCase","charAt","toUpperCase","getAll"],"mappings":"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","file":"formula.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"formula\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"formula\"] = factory();\n\telse\n\t\troot[\"formula\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export * from \"./formula\";\n","import { ChemElements } from \"@chemistry/elements\";\n\nconst ELEMENTS: string[] = ChemElements.getAllSymbols();\nconst ELEMENTS_LIST = ELEMENTS.slice(0).sort((a, b) => b.length - a.length).join(\"|\");\nconst FORMULA_QUERY_REGEX_STR = `(${ELEMENTS_LIST}){1,1}([*0-9]{0,20})`;\n\nexport interface ChemComposition {\n [element: string]: number;\n}\n\nexport class Formula {\n\n public static parse(formula: string): ChemComposition {\n let found;\n const formulaObj: ChemComposition = {};\n const FORMULA_QUERY_REGEX = new RegExp(FORMULA_QUERY_REGEX_STR, \"g\");\n\n // tslint:disable-next-line\n while ((found = FORMULA_QUERY_REGEX.exec(formula))) {\n const element = found[1];\n const count = (found[2] === \"\") ? 1 : parseFloat(found[2]);\n\n if (formulaObj[element]) {\n formulaObj[element] = formulaObj[element] + count;\n } else {\n formulaObj[element] = count;\n }\n }\n\n return formulaObj;\n }\n\n public static convertToString(formula: ChemComposition): string {\n const formulaDataArray = Object.keys(formula)\n .filter((key) => {\n return ELEMENTS.indexOf(key) !== -1;\n })\n .map((key) => {\n return {\n element: key,\n count: formula[key],\n };\n });\n\n // sorted formula\n formulaDataArray.sort((a, b) => {\n return elementCompare(a.element, b.element);\n });\n\n return formulaDataArray.map((item) => {\n return item.element + ((item.count === 1) ? \"\" : item.count);\n }).join(\"\");\n }\n}\n\nfunction elementCompare(a: string, b: string): number {\n if (a === \"C\" || a === \"H\" || b === \"C\" || b === \"H\") {\n const a1 = [\"H\", \"C\"].indexOf(a); // C => 2, H=> 1, ? =>-1\n const b1 = [\"H\", \"C\"].indexOf(b); // C => 2, H=> 1, ? =>-1\n\n if (a1 === b1) {\n return 0;\n }\n return (a1 > b1) ? -1 : 1;\n }\n\n if (a === b) {\n return 0;\n }\n return (a < b) ? -1 : 1;\n}\n","!function(o,s){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(\"chem-elements\",[],s):\"object\"==typeof exports?exports[\"chem-elements\"]=s():o[\"chem-elements\"]=s()}(\"undefined\"!=typeof self?self:this,function(){return function(o){var s={};function m(l){if(s[l])return s[l].exports;var a=s[l]={i:l,l:!1,exports:{}};return o[l].call(a.exports,a,a.exports,m),a.l=!0,a.exports}return m.m=o,m.c=s,m.d=function(o,s,l){m.o(o,s)||Object.defineProperty(o,s,{enumerable:!0,get:l})},m.r=function(o){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(o,\"__esModule\",{value:!0})},m.t=function(o,s){if(1&s&&(o=m(o)),8&s)return o;if(4&s&&\"object\"==typeof o&&o&&o.__esModule)return o;var l=Object.create(null);if(m.r(l),Object.defineProperty(l,\"default\",{enumerable:!0,value:o}),2&s&&\"string\"!=typeof o)for(var a in o)m.d(l,a,function(s){return o[s]}.bind(null,a));return l},m.n=function(o){var s=o&&o.__esModule?function(){return o.default}:function(){return o};return m.d(s,\"a\",s),s},m.o=function(o,s){return Object.prototype.hasOwnProperty.call(o,s)},m.p=\"\",m(m.s=1)}([function(o,s,m){\"use strict\";Object.defineProperty(s,\"__esModule\",{value:!0}),s.ChemElementData=[{id:0,symbol:\"Q\",RCow:.77,RVdW:0,maxBonds:0,mass:0,name:\"Dummy\",posX:1,posY:7,color:\"#FFFFFF\",color2:\"#808080\"},{id:1,symbol:\"H\",RCow:.37,RVdW:1.2,maxBonds:1,mass:1.00794,name:\"Hydrogen\",posX:1,posY:1,color:\"#FFFFFF\",color2:\"#808080\"},{id:1,symbol:\"D\",RCow:.37,RVdW:1.2,maxBonds:1,mass:2,name:\"Diyterium\",posX:1,posY:8,color:\"#FFFFFF\",color2:\"#808080\"},{id:2,symbol:\"He\",RCow:.32,RVdW:1.4,maxBonds:0,mass:4.002602,name:\"Helium\",posX:1,posY:18,color:\"#D9FFFF\",color2:\"#849B9B\"},{id:3,symbol:\"Li\",RCow:1.34,RVdW:2.2,maxBonds:1,mass:6.941,name:\"Lithium\",posX:2,posY:1,color:\"#CC80FF\",color2:\"#C87EFA\"},{id:4,symbol:\"Be\",RCow:.9,RVdW:1.9,maxBonds:2,mass:9.012182,name:\"Beryllium\",posX:2,posY:2,color:\"#C2FF00\",color2:\"#82AB00\"},{id:5,symbol:\"B\",RCow:.82,RVdW:1.8,maxBonds:3,mass:10.811,name:\"Boron\",posX:2,posY:13,color:\"#FFB5B5\",color2:\"#F090A0\"},{id:6,symbol:\"C\",RCow:.77,RVdW:1.7,maxBonds:4,mass:12.0107,name:\"Carbon\",posX:2,posY:14,color:\"#909090\",color2:\"#000000\"},{id:7,symbol:\"N\",RCow:.75,RVdW:1.6,maxBonds:4,mass:14.0067,name:\"Nitrogen\",posX:2,posY:15,color:\"#3050F8\",color2:\"#304FF7\"},{id:8,symbol:\"O\",RCow:.73,RVdW:1.55,maxBonds:2,mass:15.9994,name:\"Oxygen\",posX:2,posY:16,color:\"#FF0D0D\",color2:\"#FF0D0D\"},{id:9,symbol:\"F\",RCow:.71,RVdW:1.5,maxBonds:1,mass:18.9984032,name:\"Fluorine\",posX:2,posY:17,color:\"#90E050\",color2:\"#228B22\"},{id:10,symbol:\"Ne\",RCow:.69,RVdW:1.54,maxBonds:0,mass:20.1797,name:\"Neon\",posX:2,posY:18,color:\"#B3E3F5\",color2:\"#7B9CA8\"},{id:11,symbol:\"Na\",RCow:1.54,RVdW:2.4,maxBonds:1,mass:22.98977,name:\"Sodium\",posX:3,posY:1,color:\"#AB5CF2\",color2:\"#AB5CF2\"},{id:12,symbol:\"Mg\",RCow:1.3,RVdW:2.2,maxBonds:2,mass:24.305,name:\"Magnesium\",posX:3,posY:2,color:\"#8AFF00\",color2:\"#61B400\"},{id:13,symbol:\"Al\",RCow:1.18,RVdW:2.1,maxBonds:6,mass:26.981538,name:\"Aluminium\",posX:3,posY:13,color:\"#BFA6A6\",color2:\"#A79191\"},{id:14,symbol:\"Si\",RCow:1.11,RVdW:2.1,maxBonds:6,mass:28.0855,name:\"Silicon\",posX:3,posY:14,color:\"#F0C8A0\",color2:\"#B09276\"},{id:15,symbol:\"P\",RCow:1.06,RVdW:1.95,maxBonds:5,mass:30.973761,name:\"Phosphorus\",posX:3,posY:15,color:\"#FF8000\",color2:\"#FF8000\"},{id:16,symbol:\"S\",RCow:1.02,RVdW:1.8,maxBonds:6,mass:32.065,name:\"Sulfur\",posX:3,posY:16,color:\"#FFFF30\",color2:\"#FFC832\"},{id:17,symbol:\"Cl\",RCow:.99,RVdW:1.8,maxBonds:1,mass:35.453,name:\"Chlorine\",posX:3,posY:17,color:\"#1FF01F\",color2:\"#1DC51D\"},{id:18,symbol:\"Ar\",RCow:.97,RVdW:1.88,maxBonds:0,mass:39.948,name:\"Argon\",posX:3,posY:18,color:\"#80D1E3\",color2:\"#63A2B0\"},{id:19,symbol:\"K\",RCow:1.96,RVdW:2.8,maxBonds:1,mass:39.0983,name:\"Potassium\",posX:4,posY:1,color:\"#8F40D4\",color2:\"#8F40D4\"},{id:20,symbol:\"Ca\",RCow:1.74,RVdW:2.4,maxBonds:2,mass:40.078,name:\"Calcium\",posX:4,posY:2,color:\"#3DFF00\",color2:\"#2FC300\"},{id:21,symbol:\"Sc\",RCow:1.44,RVdW:2.3,maxBonds:6,mass:44.95591,name:\"Scandium\",posX:4,posY:3,color:\"#E6E6E6\",color2:\"#969696\"},{id:22,symbol:\"Ti\",RCow:1.36,RVdW:2.15,maxBonds:6,mass:47.867,name:\"Titanium\",posX:4,posY:4,color:\"#BFC2C7\",color2:\"#94969A\"},{id:23,symbol:\"V\",RCow:1.25,RVdW:2.05,maxBonds:6,mass:50.9415,name:\"Vanadium\",posX:4,posY:5,color:\"#A6A6AB\",color2:\"#96969A\"},{id:24,symbol:\"Cr\",RCow:1.27,RVdW:2.05,maxBonds:6,mass:51.9961,name:\"Chromium\",posX:4,posY:6,color:\"#8A99C7\",color2:\"#8796C3\"},{id:25,symbol:\"Mn\",RCow:1.39,RVdW:2.05,maxBonds:8,mass:54.938049,name:\"Manganese\",posX:4,posY:7,color:\"#9C7AC7\",color2:\"#9C7AC7\"},{id:26,symbol:\"Fe\",RCow:1.25,RVdW:2.05,maxBonds:6,mass:55.845,name:\"Iron\",posX:4,posY:8,color:\"#E06633\",color2:\"#E06633\"},{id:27,symbol:\"Co\",RCow:1.26,RVdW:2,maxBonds:6,mass:58.9332,name:\"Cobalt\",posX:4,posY:9,color:\"#F090A0\",color2:\"#DB8293\"},{id:28,symbol:\"Ni\",RCow:1.21,RVdW:2,maxBonds:6,mass:58.6934,name:\"Nickel\",posX:4,posY:10,color:\"#50D050\",color2:\"#45B645\"},{id:29,symbol:\"Cu\",RCow:1.38,RVdW:2,maxBonds:6,mass:63.546,name:\"Copper\",posX:4,posY:11,color:\"#C88033\",color2:\"#C78033\"},{id:30,symbol:\"Zn\",RCow:1.31,RVdW:2.1,maxBonds:6,mass:65.409,name:\"Zinc\",posX:4,posY:12,color:\"#7D80B0\",color2:\"#7D80B0\"},{id:31,symbol:\"Ga\",RCow:1.26,RVdW:2.1,maxBonds:3,mass:69.723,name:\"Gallium\",posX:4,posY:13,color:\"#C28F8F\",color2:\"#BD8C8C\"},{id:32,symbol:\"Ge\",RCow:1.22,RVdW:2.1,maxBonds:4,mass:72.64,name:\"Germanium\",posX:4,posY:14,color:\"#668F8F\",color2:\"#668F8F\"},{id:33,symbol:\"As\",RCow:1.19,RVdW:2.05,maxBonds:3,mass:74.9216,name:\"Arsenic\",posX:4,posY:15,color:\"#BD80E3\",color2:\"#BD80E3\"},{id:34,symbol:\"Se\",RCow:1.16,RVdW:1.9,maxBonds:2,mass:78.96,name:\"Selenium\",posX:4,posY:16,color:\"#FFA100\",color2:\"#E28F00\"},{id:35,symbol:\"Br\",RCow:1.14,RVdW:1.9,maxBonds:1,mass:79.904,name:\"Bromine\",posX:4,posY:17,color:\"#A62929\",color2:\"#A62929\"},{id:36,symbol:\"Kr\",RCow:1.1,RVdW:2.02,maxBonds:0,mass:83.798,name:\"Krypton\",posX:4,posY:18,color:\"#5CB8D1\",color2:\"#53A6BC\"},{id:37,symbol:\"Rb\",RCow:2.11,RVdW:2.9,maxBonds:1,mass:85.4678,name:\"Rubidium\",posX:5,posY:1,color:\"#702EB0\",color2:\"#702EB0\"},{id:38,symbol:\"Sr\",RCow:1.92,RVdW:2.55,maxBonds:2,mass:87.62,name:\"Strontium\",posX:5,posY:2,color:\"#00FF00\",color2:\"#00D000\"},{id:39,symbol:\"Y\",RCow:1.62,RVdW:2.4,maxBonds:6,mass:88.90585,name:\"Yttrium\",posX:5,posY:3,color:\"#94FFFF\",color2:\"#5FA4A4\"},{id:40,symbol:\"Zr\",RCow:1.48,RVdW:2.3,maxBonds:6,mass:91.224,name:\"Zirconium\",posX:5,posY:4,color:\"#94E0E0\",color2:\"#6BA2A2\"},{id:41,symbol:\"Nb\",RCow:1.37,RVdW:2.15,maxBonds:6,mass:92.90638,name:\"Niobium\",posX:5,posY:5,color:\"#73C2C9\",color2:\"#61A4A9\"},{id:42,symbol:\"Mo\",RCow:1.45,RVdW:2.1,maxBonds:6,mass:95.94,name:\"Molybdenum\",posX:5,posY:6,color:\"#54B5B5\",color2:\"#4EA9A9\"},{id:43,symbol:\"Tc\",RCow:1.56,RVdW:2.05,maxBonds:6,mass:98,name:\"Technetium\",posX:5,posY:7,color:\"#3B9E9E\",color2:\"#4EA9A9\"},{id:44,symbol:\"Ru\",RCow:1.26,RVdW:2.05,maxBonds:6,mass:101.07,name:\"Ruthenium\",posX:5,posY:8,color:\"#248F8F\",color2:\"#248F8F\"},{id:45,symbol:\"Rh\",RCow:1.35,RVdW:2,maxBonds:6,mass:102.9055,name:\"Rhodium\",posX:5,posY:9,color:\"#0A7D8C\",color2:\"#0A7D8C\"},{id:46,symbol:\"Pd\",RCow:1.31,RVdW:2.05,maxBonds:6,mass:106.42,name:\"Palladium\",posX:5,posY:10,color:\"#006985\",color2:\"#006985\"},{id:47,symbol:\"Ag\",RCow:1.53,RVdW:2.1,maxBonds:6,mass:107.8682,name:\"Silver\",posX:5,posY:11,color:\"#C0C0C0\",color2:\"#969696\"},{id:48,symbol:\"Cd\",RCow:1.48,RVdW:2.2,maxBonds:6,mass:112.411,name:\"Cadmium\",posX:5,posY:12,color:\"#FFD98F\",color2:\"#AE9462\"},{id:49,symbol:\"In\",RCow:1.44,RVdW:2.2,maxBonds:3,mass:114.818,name:\"Indium\",posX:5,posY:13,color:\"#A67573\",color2:\"#A67573\"},{id:50,symbol:\"Sn\",RCow:1.41,RVdW:2.25,maxBonds:4,mass:118.71,name:\"Tin\",posX:5,posY:14,color:\"#668080\",color2:\"#668080\"},{id:51,symbol:\"Sb\",RCow:1.38,RVdW:2.2,maxBonds:3,mass:121.76,name:\"Antimony\",posX:5,posY:15,color:\"#9E63B5\",color2:\"#9E63B5\"},{id:52,symbol:\"Te\",RCow:1.35,RVdW:2.1,maxBonds:2,mass:127.6,name:\"Tellurium\",posX:5,posY:16,color:\"#D47A00\",color2:\"#D47A00\"},{id:53,symbol:\"I\",RCow:1.33,RVdW:2.1,maxBonds:1,mass:126.90447,name:\"Iodine\",posX:5,posY:17,color:\"#940094\",color2:\"#940094\"},{id:54,symbol:\"Xe\",RCow:1.3,RVdW:2.16,maxBonds:0,mass:131.293,name:\"Xenon\",posX:5,posY:18,color:\"#429EB0\",color2:\"#429EB0\"},{id:55,symbol:\"Cs\",RCow:2.25,RVdW:3,maxBonds:1,mass:132.90545,name:\"Cesium\",posX:6,posY:1,color:\"#57178F\",color2:\"#57178F\"},{id:56,symbol:\"Ba\",RCow:1.98,RVdW:2.7,maxBonds:2,mass:137.327,name:\"Barium\",posX:6,posY:2,color:\"#00C900\",color2:\"#00C900\"},{id:57,symbol:\"La\",RCow:1.69,RVdW:2.5,maxBonds:12,mass:138.9055,name:\"Lanthanum\",posX:9,posY:3,color:\"#70D4FF\",color2:\"#57A4C5\"},{id:58,symbol:\"Ce\",RCow:1.6,RVdW:2.48,maxBonds:6,mass:140.116,name:\"Cerium\",posX:9,posY:4,color:\"#FFFFC7\",color2:\"#989877\"},{id:59,symbol:\"Pr\",RCow:1.6,RVdW:2.47,maxBonds:6,mass:140.90765,name:\"Praseodymium\",posX:9,posY:5,color:\"#D9FFC7\",color2:\"#869D7B\"},{id:60,symbol:\"Nd\",RCow:1.6,RVdW:2.45,maxBonds:6,mass:144.24,name:\"Neodymium\",posX:9,posY:6,color:\"#C7FFC7\",color2:\"#7DA07D\"},{id:61,symbol:\"Pm\",RCow:1.6,RVdW:2.43,maxBonds:6,mass:145,name:\"Promethium\",posX:9,posY:7,color:\"#A3FFC7\",color2:\"#69A581\"},{id:62,symbol:\"Sm\",RCow:1.6,RVdW:2.42,maxBonds:6,mass:150.36,name:\"Samarium\",posX:9,posY:8,color:\"#8FFFC7\",color2:\"#5EA883\"},{id:63,symbol:\"Eu\",RCow:1.6,RVdW:2.4,maxBonds:6,mass:151.964,name:\"Europium\",posX:9,posY:9,color:\"#61FFC7\",color2:\"#43B089\"},{id:64,symbol:\"Gd\",RCow:1.6,RVdW:2.38,maxBonds:6,mass:157.25,name:\"Gadolinium\",posX:9,posY:10,color:\"#45FFC7\",color2:\"#31B48D\"},{id:65,symbol:\"Tb\",RCow:1.6,RVdW:2.37,maxBonds:6,mass:158.92534,name:\"Terbium\",posX:9,posY:11,color:\"#30FFC7\",color2:\"#23B890\"},{id:66,symbol:\"Dy\",RCow:1.6,RVdW:2.35,maxBonds:6,mass:162.5,name:\"Dysprosium\",posX:9,posY:12,color:\"#1FFFC7\",color2:\"#17BB92\"},{id:67,symbol:\"Ho\",RCow:1.6,RVdW:2.33,maxBonds:6,mass:164.93032,name:\"Holmium\",posX:9,posY:13,color:\"#00FF9C\",color2:\"#00C578\"},{id:68,symbol:\"Er\",RCow:1.6,RVdW:2.32,maxBonds:6,mass:167.259,name:\"Erbium\",posX:9,posY:14,color:\"#00E675\",color2:\"#00C765\"},{id:69,symbol:\"Tm\",RCow:1.6,RVdW:2.3,maxBonds:6,mass:168.93421,name:\"Thulium\",posX:9,posY:15,color:\"#00D452\",color2:\"#00C94E\"},{id:70,symbol:\"Yb\",RCow:1.6,RVdW:2.28,maxBonds:6,mass:173.04,name:\"Ytterbium\",posX:9,posY:16,color:\"#00BF38\",color2:\"#00BF38\"},{id:71,symbol:\"Lu\",RCow:1.6,RVdW:2.27,maxBonds:6,mass:174.967,name:\"Lutetium\",posX:9,posY:17,color:\"#00AB24\",color2:\"#00AB24\"},{id:72,symbol:\"Hf\",RCow:1.5,RVdW:2.25,maxBonds:6,mass:178.49,name:\"Hafnium\",posX:6,posY:4,color:\"#4DC2FF\",color2:\"#42A8DC\"},{id:73,symbol:\"Ta\",RCow:1.38,RVdW:2.2,maxBonds:6,mass:180.9479,name:\"Tantalum\",posX:6,posY:5,color:\"#4DA6FF\",color2:\"#4BA2F9\"},{id:74,symbol:\"W\",RCow:1.46,RVdW:2.1,maxBonds:6,mass:183.84,name:\"Tungsten\",posX:6,posY:6,color:\"#2194D6\",color2:\"#2194D6\"},{id:75,symbol:\"Re\",RCow:1.59,RVdW:2.05,maxBonds:6,mass:186.207,name:\"Rhenium\",posX:6,posY:7,color:\"#267DAB\",color2:\"#267DAB\"},{id:76,symbol:\"Os\",RCow:1.28,RVdW:2,maxBonds:6,mass:190.23,name:\"Osmium\",posX:6,posY:8,color:\"#266696\",color2:\"#266696\"},{id:77,symbol:\"Ir\",RCow:1.37,RVdW:2,maxBonds:6,mass:192.217,name:\"Iridium\",posX:6,posY:9,color:\"#175487\",color2:\"#175487\"},{id:78,symbol:\"Pt\",RCow:1.28,RVdW:2.05,maxBonds:6,mass:195.078,name:\"Platinum\",posX:6,posY:10,color:\"#D0D0E0\",color2:\"#9595A0\"},{id:79,symbol:\"Au\",RCow:1.44,RVdW:2.1,maxBonds:6,mass:196.96655,name:\"Gold\",posX:6,posY:11,color:\"#FFD123\",color2:\"#B9981A\"},{id:80,symbol:\"Hg\",RCow:1.49,RVdW:2.05,maxBonds:6,mass:200.59,name:\"Mercury\",posX:6,posY:12,color:\"#B8B8D0\",color2:\"#9595A9\"},{id:81,symbol:\"Tl\",RCow:1.48,RVdW:2.2,maxBonds:3,mass:204.3833,name:\"Thallium\",posX:6,posY:13,color:\"#A6544D\",color2:\"#A6544D\"},{id:82,symbol:\"Pb\",RCow:1.47,RVdW:2.3,maxBonds:4,mass:207.2,name:\"Lead\",posX:6,posY:14,color:\"#575961\",color2:\"#575961\"},{id:83,symbol:\"Bi\",RCow:1.46,RVdW:2.3,maxBonds:3,mass:208.98038,name:\"Bismuth\",posX:6,posY:15,color:\"#9E4FB5\",color2:\"#9E4FB5\"},{id:84,symbol:\"Po\",RCow:1.6,RVdW:2,maxBonds:2,mass:209,name:\"Polonium\",posX:6,posY:16,color:\"#AB5C00\",color2:\"#AB5C00\"},{id:85,symbol:\"At\",RCow:1.6,RVdW:2,maxBonds:1,mass:210,name:\"Astatine\",posX:6,posY:17,color:\"#754F45\",color2:\"#754F45\"},{id:86,symbol:\"Rn\",RCow:1.45,RVdW:2,maxBonds:0,mass:222,name:\"Radon\",posX:6,posY:18,color:\"#428296\",color2:\"#428296\"},{id:87,symbol:\"Fr\",RCow:1.6,RVdW:2,maxBonds:1,mass:223,name:\"Francium\",posX:7,posY:1,color:\"#420066\",color2:\"#420066\"},{id:88,symbol:\"Ra\",RCow:1.6,RVdW:2,maxBonds:2,mass:226,name:\"Radium\",posX:7,posY:2,color:\"#007D00\",color2:\"#007D00\"},{id:89,symbol:\"Ac\",RCow:1.6,RVdW:2,maxBonds:6,mass:227,name:\"Actinium\",posX:10,posY:3,color:\"#70ABFA\",color2:\"#669CE4\"},{id:90,symbol:\"Th\",RCow:1.6,RVdW:2.4,maxBonds:6,mass:232.0381,name:\"Thorium\",posX:10,posY:4,color:\"#00BAFF\",color2:\"#00B8FC\"},{id:91,symbol:\"Pa\",RCow:1.6,RVdW:2,maxBonds:6,mass:231.03588,name:\"Protactinium\",posX:10,posY:5,color:\"#00A1FF\",color2:\"#00A1FF\"},{id:92,symbol:\"U\",RCow:1.6,RVdW:2.3,maxBonds:6,mass:238.02891,name:\"Uranium\",posX:10,posY:6,color:\"#008FFF\",color2:\"#008FFF\"},{id:93,symbol:\"Np\",RCow:1.6,RVdW:2,maxBonds:6,mass:237,name:\"Neptunium\",posX:10,posY:7,color:\"#0080FF\",color2:\"#0080FF\"},{id:94,symbol:\"Pu\",RCow:1.6,RVdW:2,maxBonds:6,mass:244,name:\"Plutonium\",posX:10,posY:8,color:\"#006BFF\",color2:\"#006BFF\"},{id:95,symbol:\"Am\",RCow:1.6,RVdW:2,maxBonds:6,mass:243,name:\"Americium\",posX:10,posY:9,color:\"#545CF2\",color2:\"#545CF2\"},{id:96,symbol:\"Cm\",RCow:1.6,RVdW:2,maxBonds:6,mass:247,name:\"Curium\",posX:10,posY:10,color:\"#785CE3\",color2:\"#785CE3\"},{id:97,symbol:\"Bk\",RCow:1.6,RVdW:2,maxBonds:6,mass:247,name:\"Berkelium\",posX:10,posY:11,color:\"#8A4FE3\",color2:\"#8A4FE3\"},{id:98,symbol:\"Cf\",RCow:1.6,RVdW:2,maxBonds:6,mass:251,name:\"Californium\",posX:10,posY:12,color:\"#A136D4\",color2:\"#A136D4\"},{id:99,symbol:\"Es\",RCow:1.6,RVdW:2,maxBonds:6,mass:252,name:\"Einsteinium\",posX:10,posY:13,color:\"#B31FD4\",color2:\"#B31FD4\"},{id:100,symbol:\"Fm\",RCow:1.6,RVdW:2,maxBonds:6,mass:257,name:\"Fermium\",posX:10,posY:14,color:\"#B31FBA\",color2:\"#B31FBA\"},{id:101,symbol:\"Md\",RCow:1.6,RVdW:2,maxBonds:6,mass:258,name:\"Mendelevium\",posX:10,posY:15,color:\"#B30DA6\",color2:\"#B30DA6\"},{id:102,symbol:\"No\",RCow:1.6,RVdW:2,maxBonds:6,mass:259,name:\"Nobelium\",posX:10,posY:16,color:\"#BD0D87\",color2:\"#BD0D87\"},{id:103,symbol:\"Lr\",RCow:1.6,RVdW:2,maxBonds:6,mass:262,name:\"Lawrencium\",posX:10,posY:17,color:\"#C70066\",color2:\"#C70066\"},{id:104,symbol:\"Rf\",RCow:1.6,RVdW:2,maxBonds:6,mass:261,name:\"Rutherfordium\",posX:7,posY:4,color:\"#CC0059\",color2:\"#42A8DC\"},{id:105,symbol:\"Db\",RCow:1.6,RVdW:2,maxBonds:6,mass:262,name:\"Dubnium\",posX:7,posY:5,color:\"#D1004F\",color2:\"#4BA2F9\"},{id:106,symbol:\"Sg\",RCow:1.6,RVdW:2,maxBonds:6,mass:266,name:\"Seaborgium\",posX:7,posY:6,color:\"#D90045\",color2:\"#2194D6\"},{id:107,symbol:\"Bh\",RCow:1.6,RVdW:2,maxBonds:6,mass:264,name:\"Bohrium\",posX:7,posY:7,color:\"#E00038\",color2:\"#267DAB\"},{id:108,symbol:\"Hs\",RCow:1.6,RVdW:2,maxBonds:6,mass:277,name:\"Hassium\",posX:7,posY:8,color:\"#E6002E\",color2:\"#266696\"},{id:109,symbol:\"Mt\",RCow:1.6,RVdW:2,maxBonds:6,mass:268,name:\"Meitnerium\",posX:7,posY:9,color:\"#EB0026\",color2:\"#175487\"},{id:110,symbol:\"Ds\",RCow:1.6,RVdW:2,maxBonds:6,mass:281,name:\"Darmstadtium\",posX:7,posY:10,color:\"#FF1493\",color2:\"#9595A0\"},{id:111,symbol:\"Rg\",RCow:1.6,RVdW:2,maxBonds:6,mass:272,name:\"Roentgenium\",posX:7,posY:11,color:\"#FF1494\",color2:\"#B9981A\"},{id:112,symbol:\"Cn\",RCow:1.6,RVdW:2,maxBonds:6,mass:277,name:\"Copernicium\",posX:7,posY:12,color:\"#FF1495\",color2:\"#9595A9\"}]},function(o,s,m){\"use strict\";function l(o){for(var m in o)s.hasOwnProperty(m)||(s[m]=o[m])}Object.defineProperty(s,\"__esModule\",{value:!0}),l(m(2)),l(m(0))},function(o,s,m){\"use strict\";Object.defineProperty(s,\"__esModule\",{value:!0});var l=m(0),a=function(){function o(){}return o.getById=function(o){for(var s=0,m=l.ChemElementData;s<m.length;s++){var a=m[s];if(a.id===o)return a}return null},o.getBySymbol=function(o){for(var s=(o||\"\").replace(/[^a-z]/gim,\"\").toLowerCase(),m=s.charAt(0).toUpperCase()+s.slice(1),a=0,n=l.ChemElementData;a<n.length;a++){var d=n[a];if(d.symbol===m)return d}return null},o.getAll=function(){return l.ChemElementData.filter(function(o){return\"Q\"!==o.symbol&&\"D\"!==o.symbol})},o.getAllSymbols=function(){return o.getAll().map(function(o){return o.symbol})},o}();s.ChemElements=a}])});\n//# sourceMappingURL=chem-elements.js.map"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"formula.js","sourceRoot":"","sources":["../src/formula.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './formula';
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,39 +1,50 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
2
|
+
"name": "@chemistry/formula",
|
|
3
|
+
"version": "3.0.1",
|
|
4
|
+
"description": "Chemical formula parser",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Volodymyr Vreshch",
|
|
8
|
+
"url": "https://vreshch.com/"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"formula",
|
|
13
|
+
"chemical composition",
|
|
14
|
+
"cheminformatics"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20.0.0"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/chemistry/chemical-libraries.git",
|
|
22
|
+
"directory": "packages/formula"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"registry": "https://registry.npmjs.org/",
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"private": false,
|
|
29
|
+
"sideEffects": false,
|
|
30
|
+
"files": [
|
|
31
|
+
"package.json",
|
|
32
|
+
"dist",
|
|
33
|
+
"README.md"
|
|
34
|
+
],
|
|
35
|
+
"main": "./dist/index.js",
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"exports": {
|
|
38
|
+
".": {
|
|
39
|
+
"types": "./dist/index.d.ts",
|
|
40
|
+
"import": "./dist/index.js"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "tsc",
|
|
45
|
+
"type-check": "tsc --noEmit"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@chemistry/elements": "^3.0.0"
|
|
49
|
+
}
|
|
39
50
|
}
|
package/LICENSE.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2019 Volodymyr Vreshch
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
-
a copy of this software and associated documentation files (the
|
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
-
the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
|
14
|
-
included in all copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/package-lock.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@chemistry/formula",
|
|
3
|
-
"version": "2.9.0",
|
|
4
|
-
"lockfileVersion": 1,
|
|
5
|
-
"requires": true,
|
|
6
|
-
"dependencies": {
|
|
7
|
-
"@chemistry/elements": {
|
|
8
|
-
"version": "2.7.0",
|
|
9
|
-
"resolved": "https://registry.npmjs.org/@chemistry/elements/-/elements-2.7.0.tgz",
|
|
10
|
-
"integrity": "sha512-cSF6+Whx96kbowgiQn2DzHvYYNCiZPDXnWR7iYy5NFA3GRskvK7DYaBtdKvVkObWA0i/KHToeFe8tnaRBtoXCw=="
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|