matterviz 0.1.0

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.
Files changed (131) hide show
  1. package/dist/BohrAtom.svelte +105 -0
  2. package/dist/BohrAtom.svelte.d.ts +21 -0
  3. package/dist/ControlPanel.svelte +158 -0
  4. package/dist/ControlPanel.svelte.d.ts +18 -0
  5. package/dist/Icon.svelte +23 -0
  6. package/dist/Icon.svelte.d.ts +8 -0
  7. package/dist/InfoCard.svelte +79 -0
  8. package/dist/InfoCard.svelte.d.ts +23 -0
  9. package/dist/Nucleus.svelte +64 -0
  10. package/dist/Nucleus.svelte.d.ts +16 -0
  11. package/dist/Spinner.svelte +44 -0
  12. package/dist/Spinner.svelte.d.ts +7 -0
  13. package/dist/api.d.ts +6 -0
  14. package/dist/api.js +30 -0
  15. package/dist/colors/alloy-colors.json +111 -0
  16. package/dist/colors/dark-mode-colors.json +111 -0
  17. package/dist/colors/index.d.ts +26 -0
  18. package/dist/colors/index.js +72 -0
  19. package/dist/colors/jmol-colors.json +111 -0
  20. package/dist/colors/muted-colors.json +111 -0
  21. package/dist/colors/pastel-colors.json +111 -0
  22. package/dist/colors/vesta-colors.json +111 -0
  23. package/dist/composition/BarChart.svelte +260 -0
  24. package/dist/composition/BarChart.svelte.d.ts +33 -0
  25. package/dist/composition/BubbleChart.svelte +166 -0
  26. package/dist/composition/BubbleChart.svelte.d.ts +30 -0
  27. package/dist/composition/Composition.svelte +73 -0
  28. package/dist/composition/Composition.svelte.d.ts +27 -0
  29. package/dist/composition/PieChart.svelte +236 -0
  30. package/dist/composition/PieChart.svelte.d.ts +36 -0
  31. package/dist/composition/index.d.ts +5 -0
  32. package/dist/composition/index.js +5 -0
  33. package/dist/composition/parse.d.ts +14 -0
  34. package/dist/composition/parse.js +307 -0
  35. package/dist/element/ElementHeading.svelte +21 -0
  36. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  37. package/dist/element/ElementPhoto.svelte +56 -0
  38. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  39. package/dist/element/ElementStats.svelte +73 -0
  40. package/dist/element/ElementStats.svelte.d.ts +8 -0
  41. package/dist/element/ElementTile.svelte +449 -0
  42. package/dist/element/ElementTile.svelte.d.ts +25 -0
  43. package/dist/element/data.d.ts +4958 -0
  44. package/dist/element/data.js +5628 -0
  45. package/dist/element/index.d.ts +4 -0
  46. package/dist/element/index.js +4 -0
  47. package/dist/icons.d.ts +435 -0
  48. package/dist/icons.js +435 -0
  49. package/dist/index.d.ts +82 -0
  50. package/dist/index.js +43 -0
  51. package/dist/io/decompress.d.ts +16 -0
  52. package/dist/io/decompress.js +78 -0
  53. package/dist/io/export.d.ts +9 -0
  54. package/dist/io/export.js +205 -0
  55. package/dist/io/parse.d.ts +53 -0
  56. package/dist/io/parse.js +747 -0
  57. package/dist/labels.d.ts +31 -0
  58. package/dist/labels.js +209 -0
  59. package/dist/material/MaterialCard.svelte +135 -0
  60. package/dist/material/MaterialCard.svelte.d.ts +10 -0
  61. package/dist/material/SymmetryCard.svelte +23 -0
  62. package/dist/material/SymmetryCard.svelte.d.ts +9 -0
  63. package/dist/material/index.d.ts +2 -0
  64. package/dist/material/index.js +2 -0
  65. package/dist/math.d.ts +24 -0
  66. package/dist/math.js +216 -0
  67. package/dist/periodic-table/PeriodicTable.svelte +284 -0
  68. package/dist/periodic-table/PeriodicTable.svelte.d.ts +50 -0
  69. package/dist/periodic-table/PropertySelect.svelte +20 -0
  70. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  71. package/dist/periodic-table/TableInset.svelte +18 -0
  72. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  73. package/dist/periodic-table/index.d.ts +9 -0
  74. package/dist/periodic-table/index.js +3 -0
  75. package/dist/plot/ColorBar.svelte +414 -0
  76. package/dist/plot/ColorBar.svelte.d.ts +22 -0
  77. package/dist/plot/ColorScaleSelect.svelte +31 -0
  78. package/dist/plot/ColorScaleSelect.svelte.d.ts +15 -0
  79. package/dist/plot/ElementScatter.svelte +38 -0
  80. package/dist/plot/ElementScatter.svelte.d.ts +14 -0
  81. package/dist/plot/Line.svelte +42 -0
  82. package/dist/plot/Line.svelte.d.ts +15 -0
  83. package/dist/plot/PlotLegend.svelte +206 -0
  84. package/dist/plot/PlotLegend.svelte.d.ts +18 -0
  85. package/dist/plot/ScatterPlot.svelte +1753 -0
  86. package/dist/plot/ScatterPlot.svelte.d.ts +114 -0
  87. package/dist/plot/ScatterPlotControls.svelte +505 -0
  88. package/dist/plot/ScatterPlotControls.svelte.d.ts +33 -0
  89. package/dist/plot/ScatterPoint.svelte +72 -0
  90. package/dist/plot/ScatterPoint.svelte.d.ts +17 -0
  91. package/dist/plot/index.d.ts +168 -0
  92. package/dist/plot/index.js +46 -0
  93. package/dist/state.svelte.d.ts +12 -0
  94. package/dist/state.svelte.js +11 -0
  95. package/dist/structure/Bond.svelte +68 -0
  96. package/dist/structure/Bond.svelte.d.ts +13 -0
  97. package/dist/structure/Lattice.svelte +115 -0
  98. package/dist/structure/Lattice.svelte.d.ts +15 -0
  99. package/dist/structure/Structure.svelte +298 -0
  100. package/dist/structure/Structure.svelte.d.ts +28 -0
  101. package/dist/structure/StructureCard.svelte +26 -0
  102. package/dist/structure/StructureCard.svelte.d.ts +9 -0
  103. package/dist/structure/StructureControls.svelte +383 -0
  104. package/dist/structure/StructureControls.svelte.d.ts +23 -0
  105. package/dist/structure/StructureLegend.svelte +130 -0
  106. package/dist/structure/StructureLegend.svelte.d.ts +17 -0
  107. package/dist/structure/StructureScene.svelte +331 -0
  108. package/dist/structure/StructureScene.svelte.d.ts +47 -0
  109. package/dist/structure/bonding.d.ts +16 -0
  110. package/dist/structure/bonding.js +150 -0
  111. package/dist/structure/index.d.ts +98 -0
  112. package/dist/structure/index.js +114 -0
  113. package/dist/structure/pbc.d.ts +6 -0
  114. package/dist/structure/pbc.js +72 -0
  115. package/dist/trajectory/Sidebar.svelte +412 -0
  116. package/dist/trajectory/Sidebar.svelte.d.ts +14 -0
  117. package/dist/trajectory/Trajectory.svelte +1084 -0
  118. package/dist/trajectory/Trajectory.svelte.d.ts +49 -0
  119. package/dist/trajectory/TrajectoryError.svelte +120 -0
  120. package/dist/trajectory/TrajectoryError.svelte.d.ts +12 -0
  121. package/dist/trajectory/extract.d.ts +5 -0
  122. package/dist/trajectory/extract.js +157 -0
  123. package/dist/trajectory/index.d.ts +16 -0
  124. package/dist/trajectory/index.js +49 -0
  125. package/dist/trajectory/parse.d.ts +13 -0
  126. package/dist/trajectory/parse.js +1093 -0
  127. package/dist/trajectory/plotting.d.ts +12 -0
  128. package/dist/trajectory/plotting.js +148 -0
  129. package/license +21 -0
  130. package/package.json +131 -0
  131. package/readme.md +95 -0
package/dist/icons.js ADDED
@@ -0,0 +1,435 @@
1
+ export const icon_data = {
2
+ Alert: {
3
+ viewBox: `0 0 16 16`,
4
+ width: `32`,
5
+ height: `32`,
6
+ path: `M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z`,
7
+ },
8
+ Check: {
9
+ viewBox: `0 0 12 16`,
10
+ width: `24`,
11
+ height: `32`,
12
+ path: `M12 5l-8 8l-4-4l1.5-1.5L4 10l6.5-6.5L12 5z`,
13
+ },
14
+ Collapse: {
15
+ viewBox: `0 0 24 24`,
16
+ width: `32`,
17
+ height: `32`,
18
+ path: `M12 7.59L7.05 2.64L5.64 4.05L12 10.41l6.36-6.36l-1.41-1.41L12 7.59zM5.64 19.95l1.41 1.41L12 16.41l4.95 4.95l1.41-1.41L12 13.59l-6.36 6.36z`,
19
+ },
20
+ Copy: {
21
+ viewBox: `0 0 16 16`,
22
+ width: `32`,
23
+ height: `32`,
24
+ path: `M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z`,
25
+ },
26
+ Cross: {
27
+ viewBox: `0 0 24 24`,
28
+ width: `24`,
29
+ height: `24`,
30
+ path: `M18.3 5.71a.996.996 0 0 0-1.41 0L12 10.59L7.11 5.7A.996.996 0 1 0 5.7 7.11L10.59 12L5.7 16.89a.996.996 0 1 0 1.41 1.41L12 13.41l4.89 4.89a.996.996 0 1 0 1.41-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z`,
31
+ },
32
+ Disabled: {
33
+ viewBox: `0 0 24 24`,
34
+ width: `24`,
35
+ height: `24`,
36
+ path: `M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2S2 6.477 2 12s4.477 10 10 10Zm-4.906-3.68L18.32 7.094A8 8 0 0 1 7.094 18.32ZM5.68 16.906A8 8 0 0 1 16.906 5.68L5.68 16.906Z`,
37
+ },
38
+ Expand: {
39
+ viewBox: `0 0 24 24`,
40
+ width: `32`,
41
+ height: `32`,
42
+ path: `m12 19.24l-4.95-4.95l-1.41 1.42L12 22.07l6.36-6.36l-1.41-1.42L12 19.24zM5.64 8.29l1.41 1.42L12 4.76l4.95 4.95l1.41-1.42L12 1.93L5.64 8.29z`,
43
+ },
44
+ GitHub: {
45
+ viewBox: `0 0 24 24`,
46
+ width: `24`,
47
+ height: `24`,
48
+ path: `M8.422 20.081c0 .896.01 1.753.016 2.285a.617.617 0 0 0 .422.58c2.078.686 4.317.718 6.414.091l.292-.087a.67.67 0 0 0 .478-.638c.005-.733.017-2.017.017-3.53c0-1.372-.477-2.25-1.031-2.707c3.399-.366 6.97-1.61 6.97-7.227c0-1.61-.592-2.91-1.566-3.934c.153-.366.688-1.866-.153-3.878c0 0-1.28-.403-4.201 1.5a14.76 14.76 0 0 0-3.82-.494c-1.298 0-2.597.165-3.819.494C5.52.65 4.24 1.036 4.24 1.036c-.84 2.012-.306 3.512-.153 3.878a5.565 5.565 0 0 0-1.566 3.934c0 5.598 3.552 6.86 6.951 7.227c-.439.366-.84 1.006-.973 1.957c-.879.384-3.075 1.006-4.45-1.207c-.286-.44-1.146-1.519-2.349-1.5c-1.28.018-.516.695.02.97c.648.347 1.393 1.646 1.565 2.067c.306.823 1.299 2.396 5.137 1.72Z`,
49
+ },
50
+ StackBlitz: {
51
+ viewBox: `0 0 24 24`,
52
+ width: `32`,
53
+ height: `32`,
54
+ path: `M10.797 14.182H3.635L16.728 0l-3.525 9.818h7.162L7.272 24l3.524-9.818Z`,
55
+ },
56
+ Svelte: {
57
+ viewBox: `0 0 24 24`,
58
+ width: `32`,
59
+ height: `32`,
60
+ path: `M10.354 21.125a4.44 4.44 0 0 1-4.765-1.767a4.109 4.109 0 0 1-.703-3.107a3.898 3.898 0 0 1 .134-.522l.105-.321l.287.21a7.21 7.21 0 0 0 2.186 1.092l.208.063l-.02.208a1.253 1.253 0 0 0 .226.83a1.337 1.337 0 0 0 1.435.533a1.231 1.231 0 0 0 .343-.15l5.59-3.562a1.164 1.164 0 0 0 .524-.778a1.242 1.242 0 0 0-.211-.937a1.338 1.338 0 0 0-1.435-.533a1.23 1.23 0 0 0-.343.15l-2.133 1.36a4.078 4.078 0 0 1-1.135.499a4.44 4.44 0 0 1-4.765-1.766a4.108 4.108 0 0 1-.702-3.108a3.855 3.855 0 0 1 1.742-2.582l5.589-3.563a4.072 4.072 0 0 1 1.135-.499a4.44 4.44 0 0 1 4.765 1.767a4.109 4.109 0 0 1 .703 3.107a3.943 3.943 0 0 1-.134.522l-.105.321l-.286-.21a7.204 7.204 0 0 0-2.187-1.093l-.208-.063l.02-.207a1.255 1.255 0 0 0-.226-.831a1.337 1.337 0 0 0-1.435-.532a1.231 1.231 0 0 0-.343.15L8.62 9.368a1.162 1.162 0 0 0-.524.778a1.24 1.24 0 0 0 .211.937a1.338 1.338 0 0 0 1.435.533a1.235 1.235 0 0 0 .344-.151l2.132-1.36a4.067 4.067 0 0 1 1.135-.498a4.44 4.44 0 0 1 4.765 1.766a4.108 4.108 0 0 1 .702 3.108a3.857 3.857 0 0 1-1.742 2.583l-5.589 3.562a4.072 4.072 0 0 1-1.135.499m10.358-17.95C18.484-.015 14.082-.96 10.9 1.068L5.31 4.63a6.412 6.412 0 0 0-2.896 4.295a6.753 6.753 0 0 0 .666 4.336a6.43 6.43 0 0 0-.96 2.396a6.833 6.833 0 0 0 1.168 5.167c2.229 3.19 6.63 4.135 9.812 2.108l5.59-3.562a6.41 6.41 0 0 0 2.896-4.295a6.756 6.756 0 0 0-.665-4.336a6.429 6.429 0 0 0 .958-2.396a6.831 6.831 0 0 0-1.167-5.168Z`,
61
+ },
62
+ // Icons from app.html
63
+ Link: {
64
+ viewBox: `0 0 16 16`,
65
+ width: `24`,
66
+ height: `24`,
67
+ path: `M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0z`,
68
+ },
69
+ RSS: {
70
+ viewBox: `0 0 24 24`,
71
+ width: `24`,
72
+ height: `24`,
73
+ path: `M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16M7 19a2 2 0 1 1 0-4 2 2 0 0 1 0 4z`,
74
+ },
75
+ Issues: {
76
+ viewBox: `0 0 24 24`,
77
+ width: `24`,
78
+ height: `24`,
79
+ path: `M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4M9 18c-4.51 2-5-2-7-2`,
80
+ },
81
+ Contact: {
82
+ viewBox: `0 0 24 24`,
83
+ width: `24`,
84
+ height: `24`,
85
+ path: `M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2zM22 7l-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,
86
+ },
87
+ Changelog: {
88
+ viewBox: `0 0 24 24`,
89
+ width: `24`,
90
+ height: `24`,
91
+ path: `M13 3a9 9 0 0 0-9 9H1l4 4l4-4H6c0-3.87 3.13-7 7-7s7 3.13 7 7s-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42A8.95 8.95 0 0 0 13 21a9 9 0 0 0 0-18m-1 5v5l4.25 2.52l.77-1.28l-3.52-2.09V8z`,
92
+ },
93
+ GitHubMark: {
94
+ viewBox: `0 0 16 16`,
95
+ width: `24`,
96
+ height: `24`,
97
+ path: `M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z`,
98
+ },
99
+ Info: {
100
+ viewBox: `0 0 24 24`,
101
+ width: `24`,
102
+ height: `24`,
103
+ path: `M11 9h2V7h-2m1 13c-4.41 0-8-3.59-8-8s3.59-8 8-8s8 3.59 8 8s-3.59 8-8 8m0-18A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m-1 15h2v-6h-2z`,
104
+ },
105
+ Edit: {
106
+ viewBox: `0 0 24 24`,
107
+ width: `24`,
108
+ height: `24`,
109
+ path: `M14 21v-1.65q0-.2.075-.387t.225-.338l5.225-5.2q.225-.225.5-.325t.55-.1q.3 0 .575.113t.5.337l.925.925q.2.225.313.5t.112.55t-.1.563t-.325.512l-5.2 5.2q-.15.15-.337.225T16.65 22H15q-.425 0-.712-.287T14 21m7.5-5.575l-.925-.925zm-6 5.075h.95l3.025-3.05l-.925-.925l-3.05 3.025zM6 22q-.825 0-1.412-.587T4 20V4q0-.825.588-1.412T6 2h7.175q.4 0 .763.15t.637.425l4.85 4.85q.275.275.425.638t.15.762v1.425q0 .425-.288.713T19 11.25t-.712-.288T18 10.25V9h-4q-.425 0-.712-.288T13 8V4H6v16h5q.425 0 .713.288T12 21t-.288.713T11 22zm0-2V4zm13.025-3.025l-.475-.45l.925.925z`,
110
+ },
111
+ Mail: {
112
+ viewBox: `0 0 24 24`,
113
+ width: `24`,
114
+ height: `24`,
115
+ path: `M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z M22 6l-10 7L2 6`,
116
+ },
117
+ Globe: {
118
+ viewBox: `0 0 24 24`,
119
+ width: `24`,
120
+ height: `24`,
121
+ path: `M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20zM2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z`,
122
+ },
123
+ CheckCircle: {
124
+ viewBox: `0 0 24 24`,
125
+ width: `24`,
126
+ height: `24`,
127
+ path: `m10.6 13.8l-2.15-2.15q-.275-.275-.7-.275t-.7.275t-.275.7t.275.7L9.9 15.9q.3.3.7.3t.7-.3l5.65-5.65q.275-.275.275-.7t-.275-.7t-.7-.275t-.7.275zM12 22q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22`,
128
+ },
129
+ XCircle: {
130
+ viewBox: `0 0 16 16`,
131
+ width: `24`,
132
+ height: `24`,
133
+ path: `M7.5 1C3.36 1 0 4.36 0 8.5S3.36 16 7.5 16S15 12.64 15 8.5S11.64 1 7.5 1m3.44 10.06c.24.24.24.64 0 .88c-.12.12-.28.18-.44.18s-.32-.06-.44-.18L7.5 9.38l-2.56 2.56c-.12.12-.28.18-.44.18s-.32-.06-.44-.18a.63.63 0 0 1 0-.88L6.62 8.5L4.06 5.94c-.24-.24-.24-.64 0-.88s.64-.24.88 0L7.5 7.62l2.56-2.56c.24-.24.64-.24.88 0s.24.64 0 .88L8.38 8.5z`,
134
+ },
135
+ Calendar: {
136
+ viewBox: `0 0 24 24`,
137
+ width: `24`,
138
+ height: `24`,
139
+ path: `M19 19H5V8h14m-3-7v2H8V1H6v2H5c-1.11 0-2 .89-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2h-1V1m-1 11h-5v5h5z`,
140
+ },
141
+ CalendarBlank: {
142
+ viewBox: `0 0 24 24`,
143
+ width: `24`,
144
+ height: `24`,
145
+ path: `M19 19H5V8h14m-3-7v2H8V1H6v2H5c-1.11 0-2 .89-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2h-1V1`,
146
+ },
147
+ CalendarPlus: {
148
+ viewBox: `0 0 24 24`,
149
+ width: `24`,
150
+ height: `24`,
151
+ path: `M17 19h-2q-.425 0-.712-.288T14 18t.288-.712T15 17h2v-2q0-.425.288-.712T18 14t.713.288T19 15v2h2q.425 0 .713.288T22 18t-.288.713T21 19h-2v2q0 .425-.288.713T18 22t-.712-.288T17 21zM5 20q-.825 0-1.412-.587T3 18V6q0-.825.588-1.412T5 4h1V3q0-.425.288-.712T7 2t.713.288T8 3v1h6V3q0-.425.288-.712T15 2t.713.288T16 3v1h1q.825 0 1.413.588T19 6v5q0 .425-.288.713T18 12t-.712-.288T17 11v-1H5v8h6q.425 0 .713.288T12 19t-.288.713T11 20zM5 8h12V6H5zm0 0V6z`,
152
+ },
153
+ CalendarCheck: {
154
+ viewBox: `0 0 24 24`,
155
+ width: `24`,
156
+ height: `24`,
157
+ path: `M3 4h18a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2zM16 2v4M8 2v4M3 10h18M9 16l2 2 4-4`,
158
+ },
159
+ NeuralNetwork: {
160
+ viewBox: `0 0 24 24`,
161
+ width: `24`,
162
+ height: `24`,
163
+ path: `M21.5 12a2.5 2.5 0 1 1-5 0a2.5 2.5 0 0 1 5 0m-8-8a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-1 7.5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-6-4a2 2 0 1 1-4 0a2 2 0 0 1 4 0m4 12a2 2 0 1 1-4 0a2 2 0 0 1 4 0m3-14.5l4 5m-3 5.5l-4 3m-2.5-1l-3-8m1.313-2.846L10.5 4.5m2 7l4.005.344M12 5.5L11 10`,
164
+ },
165
+ Forest: {
166
+ viewBox: `0 0 24 24`,
167
+ width: `24`,
168
+ height: `24`,
169
+ path: `M12 2L7 10h10L12 2zM17 10l-3 4h6l-3-4zM7 10l-3 4h6l-3-4zM12 14v8M17 14v8M7 14v8`,
170
+ },
171
+ MissingMetadata: {
172
+ viewBox: `0 0 24 24`,
173
+ width: `24`,
174
+ height: `24`,
175
+ path: `M19.75 2A2.25 2.25 0 0 1 22 4.25v5.462a3.25 3.25 0 0 1-.952 2.298l-.026.026a6.476 6.476 0 0 0-1.43-.692l.396-.395a1.75 1.75 0 0 0 .512-1.237V4.25a.75.75 0 0 0-.75-.75h-5.465c-.465 0-.91.185-1.239.513l-8.512 8.523a1.75 1.75 0 0 0 .015 2.462l4.461 4.454a1.755 1.755 0 0 0 2.33.13c.165.487.386.947.654 1.375a3.256 3.256 0 0 1-4.043-.443L3.489 16.06a3.25 3.25 0 0 1-.003-4.596l8.5-8.51A3.25 3.25 0 0 1 14.284 2h5.465zM17 5.502a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3zM23 17.5a5.5 5.5 0 1 0-11 0a5.5 5.5 0 0 0 11 0zm-6.125 3.005a.625.625 0 1 1 1.25 0a.625.625 0 0 1-1.25 0zm-1.228-4.548c-.011-1.137.805-1.954 1.853-1.954c1.031 0 1.853.846 1.853 1.95c0 .566-.185.913-.663 1.447l-.265.29l-.101.116c-.248.292-.324.462-.324.695a.5.5 0 1 1-1 0c0-.576.187-.926.671-1.468l.265-.29l.1-.113c.242-.286.317-.453.317-.677c0-.558-.38-.95-.853-.95c-.494 0-.859.366-.853.945a.5.5 0 1 1-1 .01z`,
176
+ },
177
+ Paper: {
178
+ viewBox: `0 0 24 24`,
179
+ width: `24`,
180
+ height: `24`,
181
+ path: `M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6M16 13H8M16 17H8M10 9H8`,
182
+ },
183
+ Download: {
184
+ viewBox: `0 0 24 24`,
185
+ width: `24`,
186
+ height: `24`,
187
+ path: `M8 17v-2h8v2zm8-7l-4 4l-4-4h2.5V7h3v3zM5 3h14a2 2 0 0 1 2 2v14c0 1.11-.89 2-2 2H5a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2m0 2v14h14V5z`,
188
+ },
189
+ Directory: {
190
+ viewBox: `0 0 24 24`,
191
+ width: `24`,
192
+ height: `24`,
193
+ path: `M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`,
194
+ },
195
+ Graph: {
196
+ viewBox: `0 0 16 16`,
197
+ width: `24`,
198
+ height: `24`,
199
+ path: `M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z`,
200
+ },
201
+ ArrowUp: {
202
+ viewBox: `0 0 24 24`,
203
+ width: `24`,
204
+ height: `24`,
205
+ path: `M19.707 16.207a1 1 0 0 1-1.414 0L12 9.914l-6.293 6.293a1 1 0 0 1-1.414-1.414L10.586 8.5a2 2 0 0 1 2.828 0l6.293 6.293a1 1 0 0 1 0 1.414`,
206
+ },
207
+ ArrowDown: {
208
+ viewBox: `0 0 24 24`,
209
+ width: `24`,
210
+ height: `24`,
211
+ path: `M4.293 7.793a1 1 0 0 1 1.414 0L12 14.086l6.293-6.293a1 1 0 1 1 1.414 1.414L13.414 15.5a2 2 0 0 1-2.828 0L4.293 9.207a1 1 0 0 1 0-1.414`,
212
+ },
213
+ Database: {
214
+ viewBox: `0 0 24 24`,
215
+ width: `24`,
216
+ height: `24`,
217
+ path: `M12 5a9 3 0 0 1 9 3M21 12c0 1.66-4 3-9 3s-9-1.34-9-3M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5`,
218
+ },
219
+ ORCID: {
220
+ viewBox: `0 0 24 24`,
221
+ width: `24`,
222
+ height: `24`,
223
+ path: `M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12s12-5.372 12-12S18.628 0 12 0M7.369 4.378c.525 0 .947.431.947.947s-.422.947-.947.947a.95.95 0 0 1-.947-.947c0-.525.422-.947.947-.947m-.722 3.038h1.444v10.041H6.647zm3.562 0h3.9c3.712 0 5.344 2.653 5.344 5.025c0 2.578-2.016 5.025-5.325 5.025h-3.919zm1.444 1.303v7.444h2.297c3.272 0 4.022-2.484 4.022-3.722c0-2.016-1.284-3.722-4.097-3.722z`,
224
+ },
225
+ DOI: {
226
+ viewBox: `0 0 24 24`,
227
+ width: `24`,
228
+ height: `24`,
229
+ path: `M24 12c0 6.633-5.367 12-12 12S0 18.633 0 12S5.367 0 12 0s12 5.367 12 12M7.588 6.097v4.471c-.663-.925-1.403-1.373-2.406-1.373c-2.046 0-3.244 1.441-3.244 3.847c0 2.357 1.325 3.848 3.166 3.848c1.12 0 1.88-.4 2.445-1.325l-.039 1.042h2.045V6.097Zm-1.763 8.942c-1.12 0-1.802-.76-1.802-2.045c0-1.325.682-2.085 1.802-2.085c1.081 0 1.802.76 1.802 2.085c0 1.285-.672 2.045-1.802 2.045m12.253-1.948c0-2.172-1.578-3.789-3.906-3.789s-3.945 1.695-3.945 3.789c0 2.133 1.578 3.789 3.945 3.789c2.289 0 3.906-1.656 3.906-3.789m-2.094-.01c0 1.14-.711 1.89-1.851 1.89c-1.139 0-1.851-.75-1.851-1.89s.712-1.89 1.851-1.89c1.149 0 1.861.751 1.851 1.89m2.6-5.795c0 .633.517 1.227 1.189 1.227c.633 0 1.188-.555 1.188-1.227a1.17 1.17 0 0 0-1.188-1.189c-.672 0-1.179.556-1.189 1.189m.166 9.341h2.055V9.604H18.75Z`,
230
+ },
231
+ PyPI: {
232
+ viewBox: `0 0 454 512`,
233
+ width: `24`,
234
+ height: `24`,
235
+ path: `m454 305.83l-91.12 33.691v106.481L181.946 512V298.297l179.884-66.863V58.824L454 92.497zm-177.16 57.555c-15.718 5.724-28.458 23.924-28.453 40.648c.007 16.717 12.753 25.633 28.464 19.92c15.718-5.725 28.46-23.922 28.455-40.647c-.003-16.725-12.75-25.642-28.467-19.921M334.615 212.5l-180.392 66.878l.296 135.76l-64.21 22.992L0 405.26V191.926l90.704-33.692V51.755L232.972 0l101.644 32.464zM215.214 94.833c-15.717 5.722-28.462 23.925-28.458 40.65c.002 16.725 12.75 25.646 28.468 19.925c15.718-5.722 28.462-23.925 28.46-40.65c-.003-16.725-12.752-25.646-28.47-19.925`,
236
+ },
237
+ PullRequest: {
238
+ viewBox: `0 0 12 16`,
239
+ width: `24`,
240
+ height: `24`,
241
+ path: `M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31c.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2c0-.65.55-1.2 1.2-1.2c.65 0 1.2.55 1.2 1.2c0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2c-.65 0-1.2-.55-1.2-1.2c0-.65.55-1.2 1.2-1.2c.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2c.65 0 1.2.55 1.2 1.2c0 .65-.55 1.2-1.2 1.2z`,
242
+ },
243
+ Code: {
244
+ viewBox: `0 0 24 24`,
245
+ width: `24`,
246
+ height: `24`,
247
+ path: `M14.486 3.143a1 1 0 0 1 .692 1.233l-4.43 15.788a1 1 0 0 1-1.926-.54l4.43-15.788a1 1 0 0 1 1.234-.693M7.207 7.05a1 1 0 0 1 0 1.414L3.672 12l3.535 3.535a1 1 0 1 1-1.414 1.415L1.55 12.707a1 1 0 0 1 0-1.414L5.793 7.05a1 1 0 0 1 1.414 0m9.586 1.414a1 1 0 1 1 1.414-1.414l4.243 4.243a1 1 0 0 1 0 1.414l-4.243 4.243a1 1 0 0 1-1.414-1.415L20.328 12z`,
248
+ },
249
+ License: {
250
+ viewBox: `0 0 512 512`,
251
+ width: `24`,
252
+ height: `24`,
253
+ path: `m268.078 387.728l.393.3l.115.087za85.7 85.7 0 0 0 12.6 8.028a85 85 0 0 0 4.824 2.319l.058.025l.145.064a85 85 0 0 0 16.477 5.307a85 85 0 0 0 5.17.932L281.29 465.8l-39.274-16.671zm103.846-.004l26.063 61.402l-39.275 16.672l-26.06-61.396a85 85 0 0 0 11.796-2.623a84.7 84.7 0 0 0 17.16-7.26a85 85 0 0 0 4.308-2.579l.147-.094l.073-.047a85 85 0 0 0 5.443-3.811zM319.996 256C355.35 256 384 284.652 384 319.999c0 35.35-28.651 64.001-64.004 64.001C284.65 384 256 355.348 256 319.999C256 284.652 284.649 256 319.996 256M448 64v298.667h-54.081a85 85 0 0 0 6.102-12.961a84.7 84.7 0 0 0 4.886-21.123l.02-.203l.015-.153a86 86 0 0 0 .391-8.229V106.667H106.667V320h127.999l.012 1.41a87 87 0 0 0 .55 8.437a85 85 0 0 0 2.237 11.909a84 84 0 0 0 2.012 6.562a85 85 0 0 0 1.286 3.42l.1.248l.048.119a85 85 0 0 0 5.17 10.561H64V64zM319.999 298.667c-11.783 0-21.332 9.55-21.332 21.333s9.55 21.333 21.332 21.333c11.784 0 21.334-9.55 21.334-21.333s-9.55-21.333-21.334-21.333M149.333 149.333h213.334V192H149.333zm0 85.334h85.334v42.666h-85.334z`,
254
+ },
255
+ Lock: {
256
+ viewBox: `0 0 24 24`,
257
+ width: `24`,
258
+ height: `24`,
259
+ path: `M6 22q-.825 0-1.412-.587T4 20V10q0-.825.588-1.412T6 8h1V6q0-2.075 1.463-3.537T12 1t3.538 1.463T17 6v2h1q.825 0 1.413.588T20 10v10q0 .825-.587 1.413T18 22zm6-5q.825 0 1.413-.587T14 15t-.587-1.412T12 13t-1.412.588T10 15t.588 1.413T12 17M9 8h6V6q0-1.25-.875-2.125T12 3t-2.125.875T9 6z`,
260
+ },
261
+ Unlock: {
262
+ viewBox: `0 0 24 24`,
263
+ width: `24`,
264
+ height: `24`,
265
+ path: `M12 17q.825 0 1.413-.587T14 15t-.587-1.412T12 13t-1.412.588T10 15t.588 1.413T12 17m-6 5q-.825 0-1.412-.587T4 20V10q0-.825.588-1.412T6 8h7V6q0-2.075 1.463-3.537T18 1q1.875 0 3.263 1.213T22.925 5.2q.05.325-.225.563T22 6t-.7-.175t-.4-.575q-.275-.95-1.062-1.6T18 3q-1.25 0-2.125.875T15 6v2h3q.825 0 1.413.588T20 10v10q0 .825-.587 1.413T18 22z`,
266
+ },
267
+ Lattice: {
268
+ viewBox: `0 0 24 24`,
269
+ width: `24`,
270
+ height: `24`,
271
+ path: `m6.953 7.244l3.458-1.97a1.9 1.9 0 0 1-.108-.608c0-.835.608-1.525 1.407-1.67V0h.58v2.995a1.704 1.704 0 0 1 1.407 1.67c0 .219-.045.418-.118.609l3.468 1.97q.192-.219.454-.382a1.705 1.705 0 0 1 2.151.382l2.596-1.498l.29.508l-2.595 1.498a1.69 1.69 0 0 1-1.244 2.242v4.012a1.69 1.69 0 0 1 1.244 2.242l2.596 1.498l-.29.508l-2.597-1.498a1.705 1.705 0 0 1-2.151.382a2 2 0 0 1-.454-.382c-1.153.654-2.306 1.317-3.468 1.97c.073.19.118.39.118.608c0 .835-.608 1.525-1.407 1.67V24h-.58v-2.995a1.704 1.704 0 0 1-1.407-1.67c0-.219.045-.418.108-.609l-3.458-1.97a2 2 0 0 1-.454.382a1.705 1.705 0 0 1-2.151-.382l-2.596 1.498l-.29-.508l2.595-1.498a1.69 1.69 0 0 1 1.244-2.242V9.994a1.69 1.69 0 0 1-1.244-2.242L1.461 6.254l.29-.508l2.597 1.498a1.705 1.705 0 0 1 2.151-.382c.173.11.327.236.454.382m9.803 9.004a1.68 1.68 0 0 1 .128-1.425a1.7 1.7 0 0 1 1.234-.835v-3.976a1.7 1.7 0 0 1-1.234-.835a1.68 1.68 0 0 1-.128-1.425L13.29 5.773a1.7 1.7 0 0 1-1.289.59a1.7 1.7 0 0 1-1.289-.59L7.244 7.752c.163.454.136.98-.128 1.425a1.7 1.7 0 0 1-1.234.835v3.976a1.7 1.7 0 0 1 1.234.835c.264.445.291.971.128 1.425l3.467 1.979a1.7 1.7 0 0 1 1.289-.59a1.7 1.7 0 0 1 1.289.59z`,
272
+ },
273
+ Columns: {
274
+ viewBox: `0 0 16 16`,
275
+ width: `24`,
276
+ height: `24`,
277
+ path: `M2.75 0h2.5C6.216 0 7 .784 7 1.75v12.5A1.75 1.75 0 0 1 5.25 16h-2.5A1.75 1.75 0 0 1 1 14.25V1.75C1 .784 1.784 0 2.75 0m8 0h2.5C14.216 0 15 .784 15 1.75v12.5A1.75 1.75 0 0 1 13.25 16h-2.5A1.75 1.75 0 0 1 9 14.25V1.75C9 .784 9.784 0 10.75 0M2.5 1.75v12.5c0 .138.112.25.25.25h2.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25m8 0v12.5c0 .138.112.25.25.25h2.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25`,
278
+ },
279
+ Docs: {
280
+ viewBox: `0 0 16 16`,
281
+ width: `24`,
282
+ height: `24`,
283
+ path: `M9 3.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0M9 5v3h1v1H8V6H7V5zM13.855 14.147a1.3 1.3 0 0 1-.158-.246A2 2 0 0 1 13.5 13c0-.414.103-.713.197-.901a1.3 1.3 0 0 1 .158-.246l.003-.005A.5.5 0 0 0 14 11.5V.5a.5.5 0 0 0-.5-.5H3.461l-.083.005a3 3 0 0 0-1.102.298a2.26 2.26 0 0 0-.88.763C1.148 1.44 1 1.913 1 2.5V13c0 .463.117.843.318 1.145c.2.298.462.491.708.615a2.3 2.3 0 0 0 .94.24H3v-1l-.029-.002a1.3 1.3 0 0 1-.498-.133a.8.8 0 0 1-.323-.275C2.07 13.47 2 13.287 2 13s.07-.47.15-.59a.8.8 0 0 1 .324-.275A1.3 1.3 0 0 1 3 12h9.658c-.091.27-.158.605-.158 1s.067.73.158 1H8v1h5.5a.5.5 0 0 0 .359-.848zm-.001 0l.002.002zM2.724 1.197q.14-.068.276-.11C3 2.918 3.001 11 2.999 11h-.033a2 2 0 0 0-.283.30a2.3 2.3 0 0 0-.657.21L2 11.254V2.5c0-.413.102-.689.229-.879c.128-.193.304-.328.495-.424M4 11V1h9v10zM7 13H4v2.5a.5.5 0 0 0 .854.354l.646-.647l.646.647A.5.5 0 0 0 7 15.5z`,
284
+ },
285
+ Unavailable: {
286
+ viewBox: `0 0 24 24`,
287
+ width: `24`,
288
+ height: `24`,
289
+ path: `M12 20a8 8 0 0 1-8-8H2c0 5.523 4.477 10 10 10zm0-16a8 8 0 0 1 8 8h2c0-5.523-4.477-10-10-10zm-8 8a7.97 7.97 0 0 1 2.343-5.657L4.93 4.93A9.97 9.97 0 0 0 2 12zm2.343-5.657A7.97 7.97 0 0 1 12 4V2a9.97 9.97 0 0 0-7.071 2.929zm-1.414 0l12.728 12.728l1.414-1.414L6.343 4.929zM20 12a7.97 7.97 0 0 1-2.343 5.657l1.414 1.414A9.97 9.97 0 0 0 22 12zm-2.343 5.657A7.97 7.97 0 0 1 12 20v2a9.97 9.97 0 0 0 7.071-2.929z`,
290
+ },
291
+ Close: {
292
+ viewBox: `0 0 24 24`,
293
+ width: `24`,
294
+ height: `24`,
295
+ path: `M18 6 6 18M6 6l12 12`,
296
+ },
297
+ Maximize: {
298
+ viewBox: `0 0 24 24`,
299
+ width: `24`,
300
+ height: `24`,
301
+ path: `M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3`,
302
+ },
303
+ Settings: {
304
+ viewBox: `0 0 24 24`,
305
+ width: `24`,
306
+ height: `24`,
307
+ path: `M12.22 2h-0.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2zM12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6z`,
308
+ },
309
+ Optimade: {
310
+ viewBox: `0 0 55 55`,
311
+ width: `24`,
312
+ height: `24`,
313
+ path: `M27 14.5 38 7.947M37.825 33.25 38 46.053M16.175 33.25 5 27M49 27 38 46.053M38 46.053H16M16 46.053 5 27M5 27 16 7.947M16 7.947h22M38 7.947 49 27M27 39.5l-10.825-6.25M16.175 33.25v-12.5M16.175 20.75 27 14.5M27 14.5l10.825 6.25M37.825 20.75v12.5M37.825 33.25 27 39.5`,
314
+ },
315
+ API: {
316
+ viewBox: `0 0 24 24`,
317
+ width: `24`,
318
+ height: `24`,
319
+ path: `M7 7H5a2 2 0 0 0-2 2v8h2v-4h2v4h2V9a2 2 0 0 0-2-2m0 4H5V9h2m7-2h-4v10h2v-4h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2m0 4h-2V9h2m6 0v6h1v2h-4v-2h1V9h-1V7h4v2Z`,
320
+ },
321
+ DragIndicator: {
322
+ viewBox: `0 0 24 24`,
323
+ width: `24`,
324
+ height: `24`,
325
+ path: `M9 20q-.825 0-1.412-.587T7 18t.588-1.412T9 16t1.413.588T11 18t-.587 1.413T9 20m6 0q-.825 0-1.412-.587T13 18t.588-1.412T15 16t1.413.588T17 18t-.587 1.413T15 20m-6-6q-.825 0-1.412-.587T7 12t.588-1.412T9 10t1.413.588T11 12t-.587 1.413T9 14m6 0q-.825 0-1.412-.587T13 12t.588-1.412T15 10t1.413.588T17 12t-.587 1.413T15 14M9 8q-.825 0-1.412-.587T7 6t.588-1.412T9 4t1.413.588T11 6t-.587 1.413T9 8m6 0q-.825 0-1.412-.587T13 6t.588-1.412T15 4t1.413.588T17 6t-.587 1.413T15 8`,
326
+ },
327
+ Databases: {
328
+ viewBox: `0 0 32 32`,
329
+ width: `24`,
330
+ height: `24`,
331
+ path: `M21 3H11c-1.1 0-2 .9-2 2v22c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2M11 5h10v6H11zm0 8h10v6H11zm0 14v-6h10v6zM2 10v16c0 1.1.9 2 2 2h3v-2H4v-4h3v-2H4v-4h3v-2H4v-4h3V8H4c-1.1 0-2 .9-2 2m26-2h-3v2h3v4h-3v2h3v4h-3v2h3v4h-3v2h3c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2M14 9c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1m0 8c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1m0 8c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1`,
332
+ },
333
+ HandsClapping: {
334
+ viewBox: `0 0 256 256`,
335
+ width: `24`,
336
+ height: `24`,
337
+ path: `M160.22 24V8a8 8 0 0 1 16 0v16a8 8 0 0 1-16 0m35.88 17a7.9 7.9 0 0 0 4.17 1.17a8 8 0 0 0 6.84-3.83l8-13.11a8 8 0 0 0-13.68-8.33l-8 13.1a8 8 0 0 0 2.67 11m47.51 12.59a8 8 0 0 0-10.08-5.16l-15.06 4.85a8 8 0 0 0 2.46 15.62a8.2 8.2 0 0 0 2.46-.39l15.05-4.85a8 8 0 0 0 5.17-10.11ZM217 97.58a80.22 80.22 0 0 1-10.22 94c-.34 1.73-.72 3.46-1.19 5.18A80.17 80.17 0 0 1 58.77 216L23.5 155a26 26 0 0 1 19.24-38.79l-3-5.2a26 26 0 0 1 19.2-38.78l-.7-1.23a26 26 0 0 1 37.23-34.47a26.06 26.06 0 0 1 44.83.47l12.26 21.2a26.07 26.07 0 0 1 43.25 2.8ZM109.07 55l25 43.17a26 26 0 0 1 17.33-10L126.42 45a10 10 0 1 0-17.35 10m-36.95 8l6.46 11.17a26.05 26.05 0 0 1 17.32-10L89.45 53a10 10 0 1 0-17.33 10m111.54 81l-20.22-35a10 10 0 0 0-17.74 9.25L158.3 140a8 8 0 0 1-13.87 8l-36.5-63a10 10 0 1 0-17.35 10l26.05 45a8 8 0 0 1-13.87 8L71 93a10 10 0 0 0-17.33 10l35.22 61A8 8 0 0 1 75 172l-20.28-35a10 10 0 0 0-17.34 10l35.27 61a64.12 64.12 0 0 0 117.42-15.44a63.52 63.52 0 0 0-6.41-48.56m19.41-38.42L181.93 69a10 10 0 0 0-17.38 10l33 57.05a80.2 80.2 0 0 1 9.45 25.46a64.23 64.23 0 0 0-3.93-55.93`,
338
+ },
339
+ RepoFork: {
340
+ viewBox: `0 0 10 16`,
341
+ width: `24`,
342
+ height: `24`,
343
+ path: `M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8L3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2c.65 0 1.2.55 1.2 1.2c0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2c0-.65.55-1.2 1.2-1.2c.65 0 1.2.55 1.2 1.2c0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2c0-.65.55-1.2 1.2-1.2c.65 0 1.2.55 1.2 1.2c0 .65-.55 1.2-1.2 1.2z`,
344
+ },
345
+ Fullscreen: {
346
+ viewBox: `0 0 16 16`,
347
+ width: `24`,
348
+ height: `24`,
349
+ path: `M1.5 1a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4A1.5 1.5 0 0 1 1.5 0h4a.5.5 0 0 1 0 1zM10 .5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 16 1.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5M.5 10a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 0 14.5v-4a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v4a1.5 1.5 0 0 1-1.5 1.5h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5`,
350
+ },
351
+ Weight: {
352
+ viewBox: `0 0 24 24`,
353
+ width: `24`,
354
+ height: `24`,
355
+ path: `M12 3a4 4 0 0 1 4 4c0 .73-.19 1.41-.54 2H18c.95 0 1.75.67 1.95 1.56C21.96 18.57 22 18.78 22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2c0-.22.04-.43 2.05-8.44C4.25 9.67 5.05 9 6 9h2.54A3.9 3.9 0 0 1 8 7a4 4 0 0 1 4-4m0 2a2 2 0 0 0-2 2a2 2 0 0 0 2 2a2 2 0 0 0 2-2a2 2 0 0 0-2-2`,
356
+ },
357
+ Scale: {
358
+ viewBox: `0 0 512 512`,
359
+ width: `24`,
360
+ height: `24`,
361
+ path: `M48 48h416a48 48 0 0 1 48 48v320a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V96a48 48 0 0 1 48-48zM388.94 151.56c-24.46-22.28-68.72-51.4-132.94-51.4s-108.48 29.12-132.94 51.4a34.66 34.66 0 0 0-3.06 48.08l33.32 39.21a26.07 26.07 0 0 0 33.6 5.21c15.92-9.83 40.91-21.64 69.1-21.64s53.18 11.81 69.1 21.64a26.07 26.07 0 0 0 33.6-5.21L392 199.64a34.66 34.66 0 0 0-3.06-48.08Z`,
362
+ },
363
+ ColorPalette: {
364
+ viewBox: `0 0 512 512`,
365
+ width: `24`,
366
+ height: `24`,
367
+ path: `M430.11 347.9c-6.6-6.1-16.3-7.6-24.6-9c-11.5-1.9-15.9-4-22.6-10c-14.3-12.7-14.3-31.1 0-43.8l30.3-26.9c46.4-41 46.4-108.2 0-149.2c-34.2-30.1-80.1-45-127.8-45c-55.7 0-113.9 20.3-158.8 60.1c-83.5 73.8-83.5 194.7 0 268.5c41.5 36.7 97.5 55 152.9 55.4h1.7c55.4 0 110-17.9 148.8-52.4c14.4-12.7 11.99-36.6.1-47.7ZM144 208a32 32 0 1 1 64 0 32 32 0 0 1-64 0M152 311a32 32 0 1 1 64 0 32 32 0 0 1-64 0M224 144a32 32 0 1 1 64 0 32 32 0 0 1-64 0M256 367a48 48 0 1 1 96 0 48 48 0 0 1-96 0M328 144a32 32 0 1 1 64 0 32 32 0 0 1-64 0z`,
368
+ },
369
+ Solid: {
370
+ viewBox: `0 0 24 24`,
371
+ width: `24`,
372
+ height: `24`,
373
+ path: `M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15L6.04 7.5L12 10.85l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z`,
374
+ },
375
+ Liquid: {
376
+ viewBox: `0 0 24 24`,
377
+ width: `24`,
378
+ height: `24`,
379
+ path: `m12 3.77l-.75.84S9.97 6.06 8.68 7.94S6 12.07 6 14.23a6 6 0 0 0 6 6a6 6 0 0 0 6-6c0-2.16-1.39-4.41-2.68-6.29s-2.57-3.33-2.57-3.33zm0 3.13c.44.52.84.95 1.68 2.17c1.21 1.76 2.32 4 2.32 5.16c0 2.22-1.78 4-4 4s-4-1.78-4-4c0-1.16 1.11-3.4 2.32-5.16c.84-1.22 1.24-1.65 1.68-2.17`,
380
+ },
381
+ Gas: {
382
+ viewBox: `0 0 24 24`,
383
+ width: `24`,
384
+ height: `24`,
385
+ path: `M16 9v11a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2V9c0-1.86 1.27-3.43 3-3.87V4H9V2h6v2h-2v1.13c1.73.44 3 2.01 3 3.87`,
386
+ },
387
+ NoImage: {
388
+ viewBox: `0 0 32 32`,
389
+ width: `24`,
390
+ height: `24`,
391
+ path: `M30 3.414L28.586 2L2 28.586L3.414 30l2-2H26a2.003 2.003 0 0 0 2-2V5.414zM26 26H7.414l7.793-7.793l2.379 2.379a2 2 0 0 0 2.828 0L22 19l4 3.997zm0-5.832l-2.586-2.586a2 2 0 0 0-2.828 0L19 19.168l-2.377-2.377L26 7.414zM6 22v-3l5-4.997l1.373 1.374l1.416-1.416l-1.375-1.375a2 2 0 0 0-2.828 0L6 16.172V6h16V4H6a2 2 0 0 0-2 2v16z`,
392
+ },
393
+ Atom: {
394
+ viewBox: `0 0 24 24`,
395
+ width: `24`,
396
+ height: `24`,
397
+ path: `M18.36 2.64c1.64 0 3 1.36 3 3c0 1.65-1.36 3-3 3c-1.65 0-3-1.35-3-3c0-.3.05-.58.14-.84c-1.07-.51-2.25-.8-3.5-.8a8 8 0 0 0-8 8l.04.84l-1.99.21L2 12A10 10 0 0 1 12 2c1.69 0 3.28.42 4.67 1.16c.49-.33 1.07-.52 1.69-.52m0 2a1 1 0 0 0-1 1a1 1 0 0 0 1 1c.56 0 1-.45 1-1c0-.56-.44-1-1-1M5.64 15.36c1.65 0 3 1.35 3 3c0 .3-.05.58-.14.84c1.07.51 2.25.8 3.5.8a8 8 0 0 0 8-8l-.04-.84l1.99-.21L22 12a10 10 0 0 1-10 10c-1.69 0-3.28-.42-4.67-1.16c-.49.33-1.07.52-1.69.52c-1.64 0-3-1.36-3-3c0-1.65 1.36-3 3-3m0 2c-.56 0-1 .45-1 1c0 .56.44 1 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1M12 8a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4`,
398
+ },
399
+ Orbit: {
400
+ viewBox: `0 0 24 24`,
401
+ width: `24`,
402
+ height: `24`,
403
+ path: `M8 14.25L4.75 11H7c.25-5.61 2.39-10 5-10c2 0 3.77 2.64 4.55 6.45C20.36 8.23 23 10 23 12c0 1.83-2.17 3.43-5.4 4.3l.29-2.03C19.8 13.72 21 12.91 21 12c0-1.06-1.65-2-4.13-2.5c.08.79.13 1.63.13 2.5c0 6.08-2.24 11-5 11c-1.83 0-3.43-2.17-4.3-5.4l2.03.29C10.28 19.8 11.09 21 12 21c1.66 0 3-4.03 3-9q0-1.5-.15-2.85Q13.5 9 12 9l-1.86.06l.29-2.01L12 7c.87 0 1.71.05 2.5.13C14 4.65 13.06 3 12 3c-1.54 0-2.82 3.5-3 8h2.25zM14.25 16L11 19.25V17c-5.61-.25-10-2.39-10-5c0-1.83 2.17-3.43 5.4-4.3l-.29 2.03C4.2 10.28 3 11.09 3 12c0 1.54 3.5 2.82 8 3v-2.25z`,
404
+ },
405
+ Circle: {
406
+ viewBox: `0 0 24 24`,
407
+ width: `24`,
408
+ height: `24`,
409
+ path: `M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10s10-4.47 10-10S17.53 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8s8 3.58 8 8s-3.58 8-8 8`,
410
+ },
411
+ ElectronShells: {
412
+ viewBox: `0 0 24 24`,
413
+ width: `24`,
414
+ height: `24`,
415
+ path: `M12 11c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2m6 2c0-3.31-2.69-6-6-6s-6 2.69-6 6c0 2.22 1.21 4.15 3 5.19l1-1.74c-1.19-.7-2-1.97-2-3.45c0-2.21 1.79-4 4-4s4 1.79 4 4c0 1.48-.81 2.75-2 3.45l1 1.74c1.79-1.04 3-2.97 3-5.19M12 3C6.48 3 2 7.48 2 13c0 3.7 2.01 6.92 4.99 8.65l1-1.73C5.61 18.53 4 15.96 4 13c0-4.42 3.58-8 8-8s8 3.58 8 8c0 2.96-1.61 5.53-4 6.92l1 1.73c2.99-1.73 5-4.95 5-8.65c0-5.52-4.48-10-10-10`,
416
+ },
417
+ Reset: {
418
+ viewBox: `0 0 15 15`,
419
+ width: `24`,
420
+ height: `24`,
421
+ path: `M4.854 2.146a.5.5 0 0 1 0 .708L3.707 4H9a4.5 4.5 0 1 1 0 9H5a.5.5 0 0 1 0-1h4a3.5 3.5 0 1 0 0-7H3.707l1.147 1.146a.5.5 0 1 1-.708.708l-2-2a.5.5 0 0 1 0-.708l2-2a.5.5 0 0 1 .708 0`,
422
+ },
423
+ TwoColumns: {
424
+ viewBox: `0 0 24 24`,
425
+ width: `24`,
426
+ height: `24`,
427
+ path: `M3 5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zm6 0H5v14h4zm4 0a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2zm6 0h-4v14h4z`,
428
+ },
429
+ ScatterPlot: {
430
+ viewBox: `0 0 24 24`,
431
+ width: `24`,
432
+ height: `24`,
433
+ path: `M2 2h2v18h18v2H2zm7 8a3 3 0 0 1 3 3a3 3 0 0 1-3 3a3 3 0 0 1-3-3a3 3 0 0 1 3-3m4-8a3 3 0 0 1 3 3a3 3 0 0 1-3 3a3 3 0 0 1-3-3a3 3 0 0 1 3-3m5 10a3 3 0 0 1 3 3a3 3 0 0 1-3 3a3 3 0 0 1-3-3a3 3 0 0 1 3-3`,
434
+ },
435
+ };
@@ -0,0 +1,82 @@
1
+ import type { categories, elem_symbols } from './labels';
2
+ export { default as BohrAtom } from './BohrAtom.svelte';
3
+ export * from './composition';
4
+ export { default as ControlPanel } from './ControlPanel.svelte';
5
+ export * from './element';
6
+ export { default as element_data } from './element/data';
7
+ export { default as Icon } from './Icon.svelte';
8
+ export { default as InfoCard } from './InfoCard.svelte';
9
+ export * from './labels';
10
+ export * from './material';
11
+ export * from './math';
12
+ export { default as Nucleus } from './Nucleus.svelte';
13
+ export * from './periodic-table';
14
+ export * from './plot';
15
+ export { default as Spinner } from './Spinner.svelte';
16
+ export { default as Structure } from './structure/Structure.svelte';
17
+ export { default as Trajectory } from './trajectory/Trajectory.svelte';
18
+ export * from './structure';
19
+ export type Category = (typeof categories)[number];
20
+ export type ElementSymbol = (typeof elem_symbols)[number];
21
+ export type CompositionType = Partial<Record<ElementSymbol, number>>;
22
+ export type ChemicalElement = {
23
+ 'cpk-hex': string | null;
24
+ appearance: string | null;
25
+ atomic_mass: number;
26
+ atomic_radius: number | null;
27
+ boiling_point: number | null;
28
+ category: Category;
29
+ column: number;
30
+ covalent_radius: number | null;
31
+ density: number;
32
+ discoverer: string;
33
+ electron_affinity: number | null;
34
+ electron_configuration_semantic: string;
35
+ electron_configuration: string;
36
+ electronegativity_pauling: number | null;
37
+ electronegativity: number | null;
38
+ first_ionization: number | null;
39
+ ionization_energies: number[];
40
+ melting_point: number | null;
41
+ metal: boolean | null;
42
+ metalloid: boolean | null;
43
+ molar_heat: number | null;
44
+ electrons: number;
45
+ neutrons: number;
46
+ protons: number;
47
+ n_shells: number;
48
+ n_valence: number | null;
49
+ name: string;
50
+ natural: boolean | null;
51
+ nonmetal: boolean | null;
52
+ number_of_isotopes: number | null;
53
+ number: number;
54
+ period: number;
55
+ phase: `Gas` | `Liquid` | `Solid`;
56
+ radioactive: boolean | null;
57
+ row: number;
58
+ shells: number[];
59
+ specific_heat: number | null;
60
+ spectral_img: string | null;
61
+ summary: string;
62
+ symbol: ElementSymbol;
63
+ year: number | string;
64
+ };
65
+ export type DispatchPayload = CustomEvent<{
66
+ element: ChemicalElement;
67
+ active: boolean;
68
+ dom_event: Event;
69
+ }>;
70
+ export type PeriodicTableEvents = {
71
+ click: DispatchPayload;
72
+ mouseenter: DispatchPayload;
73
+ mouseleave: DispatchPayload;
74
+ keyup: DispatchPayload;
75
+ keydown: DispatchPayload;
76
+ focus: DispatchPayload;
77
+ blur: DispatchPayload;
78
+ };
79
+ export declare const crystal_systems: readonly ["triclinic", "monoclinic", "orthorhombic", "tetragonal", "trigonal", "hexagonal", "cubic"];
80
+ export type CrystalSystem = (typeof crystal_systems)[number];
81
+ export declare function escape_html(unsafe_string: string): string;
82
+ export declare function is_binary(content: string): boolean;
package/dist/index.js ADDED
@@ -0,0 +1,43 @@
1
+ export { default as BohrAtom } from './BohrAtom.svelte';
2
+ export * from './composition';
3
+ export { default as ControlPanel } from './ControlPanel.svelte';
4
+ export * from './element';
5
+ export { default as element_data } from './element/data';
6
+ export { default as Icon } from './Icon.svelte';
7
+ export { default as InfoCard } from './InfoCard.svelte';
8
+ export * from './labels';
9
+ export * from './material';
10
+ export * from './math';
11
+ export { default as Nucleus } from './Nucleus.svelte';
12
+ export * from './periodic-table';
13
+ export * from './plot';
14
+ export { default as Spinner } from './Spinner.svelte';
15
+ export { default as Structure } from './structure/Structure.svelte';
16
+ export { default as Trajectory } from './trajectory/Trajectory.svelte';
17
+ export * from './structure';
18
+ export const crystal_systems = [
19
+ `triclinic`,
20
+ `monoclinic`,
21
+ `orthorhombic`,
22
+ `tetragonal`,
23
+ `trigonal`,
24
+ `hexagonal`,
25
+ `cubic`,
26
+ ];
27
+ // Helper function to escape HTML special characters to prevent XSS
28
+ export function escape_html(unsafe_string) {
29
+ return unsafe_string
30
+ .replaceAll(`&`, `&amp;`)
31
+ .replaceAll(`<`, `&lt;`)
32
+ .replaceAll(`>`, `&gt;`)
33
+ .replaceAll(`"`, `&quot;`)
34
+ .replaceAll(`'`, `&#39;`);
35
+ }
36
+ // Simplified binary detection
37
+ export function is_binary(content) {
38
+ return (content.includes(`\0`) ||
39
+ // deno-lint-ignore no-control-regex
40
+ (content.match(/[\u0000-\u0008\u000E-\u001F\u007F-\u00FF]/g) || []).length /
41
+ content.length > 0.1 ||
42
+ (content.match(/[\u0020-\u007E]/g) || []).length / content.length < 0.7);
43
+ }
@@ -0,0 +1,16 @@
1
+ declare const COMPRESSION_FORMATS: {
2
+ readonly gzip: readonly [".gz", ".gzip"];
3
+ readonly deflate: readonly [".deflate"];
4
+ readonly 'deflate-raw': readonly [".z"];
5
+ };
6
+ export type CompressionFormat = keyof typeof COMPRESSION_FORMATS;
7
+ export declare function is_compressed_file(filename: string): boolean;
8
+ export declare function remove_compression_extension(filename: string): string;
9
+ export declare function detect_compression_format(filename: string): CompressionFormat | null;
10
+ export declare function decompress_data(data: ArrayBuffer, format: CompressionFormat): Promise<string>;
11
+ export declare const decompress_gzip: (data: ArrayBuffer) => Promise<string>;
12
+ export declare function decompress_file(file: File): Promise<{
13
+ content: string;
14
+ filename: string;
15
+ }>;
16
+ export {};
@@ -0,0 +1,78 @@
1
+ // Browser-supported compression formats and their file extensions
2
+ const COMPRESSION_FORMATS = {
3
+ gzip: [`.gz`, `.gzip`],
4
+ deflate: [`.deflate`],
5
+ 'deflate-raw': [`.z`],
6
+ };
7
+ export function is_compressed_file(filename) {
8
+ return Object.values(COMPRESSION_FORMATS)
9
+ .flat()
10
+ .some((ext) => filename.endsWith(ext));
11
+ }
12
+ export function remove_compression_extension(filename) {
13
+ const extensions = Object.values(COMPRESSION_FORMATS)
14
+ .flat()
15
+ .map((ext) => ext.slice(1));
16
+ return filename.replace(new RegExp(`\\.(${extensions.join(`|`)})$`), ``);
17
+ }
18
+ export function detect_compression_format(filename) {
19
+ for (const [format, extensions] of Object.entries(COMPRESSION_FORMATS)) {
20
+ if (extensions.some((ext) => filename.endsWith(ext))) {
21
+ return format;
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ export async function decompress_data(data, format) {
27
+ if (!(`DecompressionStream` in window)) {
28
+ throw `DecompressionStream API not supported`;
29
+ }
30
+ try {
31
+ const stream = new ReadableStream({
32
+ start(controller) {
33
+ controller.enqueue(new Uint8Array(data));
34
+ controller.close();
35
+ },
36
+ });
37
+ return await new Response(stream.pipeThrough(new DecompressionStream(format))).text();
38
+ }
39
+ catch (error) {
40
+ throw `Failed to decompress ${format} file: ${error}`;
41
+ }
42
+ }
43
+ // Legacy compatibility
44
+ export const decompress_gzip = (data) => decompress_data(data, `gzip`);
45
+ export function decompress_file(file) {
46
+ const compressed = is_compressed_file(file.name);
47
+ return new Promise((resolve, reject) => {
48
+ const reader = new FileReader();
49
+ reader.onload = async (event) => {
50
+ try {
51
+ const result = event.target?.result;
52
+ if (!result)
53
+ throw `Failed to read file`;
54
+ if (compressed) {
55
+ const format = detect_compression_format(file.name);
56
+ if (!format)
57
+ throw `Unsupported compression format: ${file.name}`;
58
+ const content = await decompress_data(result, format);
59
+ resolve({
60
+ content,
61
+ filename: remove_compression_extension(file.name),
62
+ });
63
+ }
64
+ else {
65
+ resolve({ content: result, filename: file.name });
66
+ }
67
+ }
68
+ catch (error) {
69
+ reject(error);
70
+ }
71
+ };
72
+ reader.onerror = () => reject(new Error(`Failed to read file`));
73
+ if (compressed)
74
+ reader.readAsArrayBuffer(file);
75
+ else
76
+ reader.readAsText(file);
77
+ });
78
+ }