@mat3ra/prode 2025.11.25-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 (276) hide show
  1. package/.babelrc +17 -0
  2. package/LICENSE.md +15 -0
  3. package/README.md +93 -0
  4. package/dist/js/MetaProperty.d.ts +3 -0
  5. package/dist/js/MetaProperty.js +9 -0
  6. package/dist/js/Property.d.ts +25 -0
  7. package/dist/js/Property.js +25 -0
  8. package/dist/js/PropertyFactory.d.ts +54 -0
  9. package/dist/js/PropertyFactory.js +137 -0
  10. package/dist/js/ProtoProperty.d.ts +5 -0
  11. package/dist/js/ProtoProperty.js +11 -0
  12. package/dist/js/charts/highcharts.d.ts +57 -0
  13. package/dist/js/charts/highcharts.js +96 -0
  14. package/dist/js/generated/AtomicConstraintsPropertySchemaMixin.d.ts +5 -0
  15. package/dist/js/generated/AtomicConstraintsPropertySchemaMixin.js +15 -0
  16. package/dist/js/generated/AtomicForcesPropertySchemaMixin.d.ts +5 -0
  17. package/dist/js/generated/AtomicForcesPropertySchemaMixin.js +18 -0
  18. package/dist/js/generated/AveragePotentialProfilePropertySchemaMixin.d.ts +5 -0
  19. package/dist/js/generated/AveragePotentialProfilePropertySchemaMixin.js +24 -0
  20. package/dist/js/generated/BandGapsPropertySchemaMixin.d.ts +5 -0
  21. package/dist/js/generated/BandGapsPropertySchemaMixin.js +18 -0
  22. package/dist/js/generated/BandStructurePropertySchemaMixin.d.ts +5 -0
  23. package/dist/js/generated/BandStructurePropertySchemaMixin.js +27 -0
  24. package/dist/js/generated/BoundaryConditionsPropertySchemaMixin.d.ts +5 -0
  25. package/dist/js/generated/BoundaryConditionsPropertySchemaMixin.js +18 -0
  26. package/dist/js/generated/ChargeDensityProfilePropertySchemaMixin.d.ts +5 -0
  27. package/dist/js/generated/ChargeDensityProfilePropertySchemaMixin.js +24 -0
  28. package/dist/js/generated/ConvergenceElectronicPropertySchemaMixin.d.ts +5 -0
  29. package/dist/js/generated/ConvergenceElectronicPropertySchemaMixin.js +18 -0
  30. package/dist/js/generated/ConvergenceIonicPropertySchemaMixin.d.ts +5 -0
  31. package/dist/js/generated/ConvergenceIonicPropertySchemaMixin.js +21 -0
  32. package/dist/js/generated/DensityOfStatesPropertySchemaMixin.d.ts +5 -0
  33. package/dist/js/generated/DensityOfStatesPropertySchemaMixin.js +27 -0
  34. package/dist/js/generated/DielectricTensorPropertySchemaMixin.d.ts +5 -0
  35. package/dist/js/generated/DielectricTensorPropertySchemaMixin.js +15 -0
  36. package/dist/js/generated/FermiEnergyPropertySchemaMixin.d.ts +5 -0
  37. package/dist/js/generated/FermiEnergyPropertySchemaMixin.js +18 -0
  38. package/dist/js/generated/FileContentPropertySchemaMixin.d.ts +5 -0
  39. package/dist/js/generated/FileContentPropertySchemaMixin.js +24 -0
  40. package/dist/js/generated/FinalStructurePropertySchemaMixin.d.ts +5 -0
  41. package/dist/js/generated/FinalStructurePropertySchemaMixin.js +18 -0
  42. package/dist/js/generated/HubbardUPropertySchemaMixin.d.ts +5 -0
  43. package/dist/js/generated/HubbardUPropertySchemaMixin.js +18 -0
  44. package/dist/js/generated/HubbardVNNPropertySchemaMixin.d.ts +5 -0
  45. package/dist/js/generated/HubbardVNNPropertySchemaMixin.js +18 -0
  46. package/dist/js/generated/HubbardVPropertySchemaMixin.d.ts +5 -0
  47. package/dist/js/generated/HubbardVPropertySchemaMixin.js +18 -0
  48. package/dist/js/generated/IonizationPotentialElementalPropertySchemaMixin.d.ts +5 -0
  49. package/dist/js/generated/IonizationPotentialElementalPropertySchemaMixin.js +18 -0
  50. package/dist/js/generated/IsRelaxedPropertySchemaMixin.d.ts +5 -0
  51. package/dist/js/generated/IsRelaxedPropertySchemaMixin.js +18 -0
  52. package/dist/js/generated/JupyterNotebookEndpointPropertySchemaMixin.d.ts +5 -0
  53. package/dist/js/generated/JupyterNotebookEndpointPropertySchemaMixin.js +21 -0
  54. package/dist/js/generated/MagneticMomentsPropertySchemaMixin.d.ts +5 -0
  55. package/dist/js/generated/MagneticMomentsPropertySchemaMixin.js +18 -0
  56. package/dist/js/generated/MetaPropertyHolderSchemaMixin.d.ts +5 -0
  57. package/dist/js/generated/MetaPropertyHolderSchemaMixin.js +15 -0
  58. package/dist/js/generated/PhononDOSPropertySchemaMixin.d.ts +5 -0
  59. package/dist/js/generated/PhononDOSPropertySchemaMixin.js +24 -0
  60. package/dist/js/generated/PhononDispersionsPropertySchemaMixin.d.ts +5 -0
  61. package/dist/js/generated/PhononDispersionsPropertySchemaMixin.js +24 -0
  62. package/dist/js/generated/PotentialProfilePropertySchemaMixin.d.ts +5 -0
  63. package/dist/js/generated/PotentialProfilePropertySchemaMixin.js +24 -0
  64. package/dist/js/generated/PressurePropertySchemaMixin.d.ts +5 -0
  65. package/dist/js/generated/PressurePropertySchemaMixin.js +18 -0
  66. package/dist/js/generated/PropertyHolderSchemaMixin.d.ts +5 -0
  67. package/dist/js/generated/PropertyHolderSchemaMixin.js +30 -0
  68. package/dist/js/generated/ProtoPropertyHolderSchemaMixin.d.ts +5 -0
  69. package/dist/js/generated/ProtoPropertyHolderSchemaMixin.js +15 -0
  70. package/dist/js/generated/PseudopotentialMetaPropertySchemaMixin.d.ts +5 -0
  71. package/dist/js/generated/PseudopotentialMetaPropertySchemaMixin.js +45 -0
  72. package/dist/js/generated/ReactionEnergyBarrierPropertySchemaMixin.d.ts +5 -0
  73. package/dist/js/generated/ReactionEnergyBarrierPropertySchemaMixin.js +18 -0
  74. package/dist/js/generated/ReactionEnergyProfilePropertySchemaMixin.d.ts +5 -0
  75. package/dist/js/generated/ReactionEnergyProfilePropertySchemaMixin.js +24 -0
  76. package/dist/js/generated/StressTensorPropertySchemaMixin.d.ts +5 -0
  77. package/dist/js/generated/StressTensorPropertySchemaMixin.js +18 -0
  78. package/dist/js/generated/SurfaceEnergyPropertySchemaMixin.d.ts +5 -0
  79. package/dist/js/generated/SurfaceEnergyPropertySchemaMixin.js +18 -0
  80. package/dist/js/generated/TotalEnergyContributionsPropertySchemaMixin.d.ts +5 -0
  81. package/dist/js/generated/TotalEnergyContributionsPropertySchemaMixin.js +57 -0
  82. package/dist/js/generated/TotalEnergyPropertySchemaMixin.d.ts +5 -0
  83. package/dist/js/generated/TotalEnergyPropertySchemaMixin.js +18 -0
  84. package/dist/js/generated/TotalForcePropertySchemaMixin.d.ts +5 -0
  85. package/dist/js/generated/TotalForcePropertySchemaMixin.js +18 -0
  86. package/dist/js/generated/ValenceBandOffsetPropertySchemaMixin.d.ts +5 -0
  87. package/dist/js/generated/ValenceBandOffsetPropertySchemaMixin.js +18 -0
  88. package/dist/js/generated/WorkflowPropertySchemaMixin.d.ts +5 -0
  89. package/dist/js/generated/WorkflowPropertySchemaMixin.js +33 -0
  90. package/dist/js/generated/ZeroPointEnergyPropertySchemaMixin.d.ts +5 -0
  91. package/dist/js/generated/ZeroPointEnergyPropertySchemaMixin.js +18 -0
  92. package/dist/js/holders/MetaPropertyHolder.d.ts +10 -0
  93. package/dist/js/holders/MetaPropertyHolder.js +12 -0
  94. package/dist/js/holders/PropertyHolder.d.ts +10 -0
  95. package/dist/js/holders/PropertyHolder.js +12 -0
  96. package/dist/js/holders/ProtoPropertyHolder.d.ts +10 -0
  97. package/dist/js/holders/ProtoPropertyHolder.js +12 -0
  98. package/dist/js/holders/mixins/MetaPropertyHolderMixin.d.ts +12 -0
  99. package/dist/js/holders/mixins/MetaPropertyHolderMixin.js +18 -0
  100. package/dist/js/holders/mixins/PropertyHolderMixin.d.ts +16 -0
  101. package/dist/js/holders/mixins/PropertyHolderMixin.js +37 -0
  102. package/dist/js/holders/mixins/ProtoPropertyHolderMixin.d.ts +12 -0
  103. package/dist/js/holders/mixins/ProtoPropertyHolderMixin.js +18 -0
  104. package/dist/js/index.d.ts +20 -0
  105. package/dist/js/index.js +60 -0
  106. package/dist/js/meta_properties/PseudopotentialMetaProperty.d.ts +78 -0
  107. package/dist/js/meta_properties/PseudopotentialMetaProperty.js +157 -0
  108. package/dist/js/properties/include/mixins/2d_plot.d.ts +27 -0
  109. package/dist/js/properties/include/mixins/2d_plot.js +79 -0
  110. package/dist/js/properties/non-scalar/AveragePotentialProfileProperty.d.ts +38 -0
  111. package/dist/js/properties/non-scalar/AveragePotentialProfileProperty.js +54 -0
  112. package/dist/js/properties/non-scalar/BandGapsProperty.d.ts +59 -0
  113. package/dist/js/properties/non-scalar/BandGapsProperty.js +52 -0
  114. package/dist/js/properties/non-scalar/BandStructureProperty.d.ts +186 -0
  115. package/dist/js/properties/non-scalar/BandStructureProperty.js +218 -0
  116. package/dist/js/properties/non-scalar/ChargeDensityProfileProperty.d.ts +25 -0
  117. package/dist/js/properties/non-scalar/ChargeDensityProfileProperty.js +34 -0
  118. package/dist/js/properties/non-scalar/DensityOfStatesProperty.d.ts +145 -0
  119. package/dist/js/properties/non-scalar/DensityOfStatesProperty.js +126 -0
  120. package/dist/js/properties/non-scalar/DielectricTensorProperty.d.ts +49 -0
  121. package/dist/js/properties/non-scalar/DielectricTensorProperty.js +119 -0
  122. package/dist/js/properties/non-scalar/FileContentProperty.d.ts +15 -0
  123. package/dist/js/properties/non-scalar/FileContentProperty.js +18 -0
  124. package/dist/js/properties/non-scalar/FinalStructureProperty.d.ts +14 -0
  125. package/dist/js/properties/non-scalar/FinalStructureProperty.js +17 -0
  126. package/dist/js/properties/non-scalar/HubbardUProperty.d.ts +14 -0
  127. package/dist/js/properties/non-scalar/HubbardUProperty.js +17 -0
  128. package/dist/js/properties/non-scalar/HubbardVNNProperty.d.ts +14 -0
  129. package/dist/js/properties/non-scalar/HubbardVNNProperty.js +17 -0
  130. package/dist/js/properties/non-scalar/HubbardVProperty.d.ts +14 -0
  131. package/dist/js/properties/non-scalar/HubbardVProperty.js +17 -0
  132. package/dist/js/properties/non-scalar/IsRelaxedProperty.d.ts +15 -0
  133. package/dist/js/properties/non-scalar/IsRelaxedProperty.js +18 -0
  134. package/dist/js/properties/non-scalar/JupyterNotebookEndpointProperty.d.ts +14 -0
  135. package/dist/js/properties/non-scalar/JupyterNotebookEndpointProperty.js +17 -0
  136. package/dist/js/properties/non-scalar/PhononDOSProperty.d.ts +19 -0
  137. package/dist/js/properties/non-scalar/PhononDOSProperty.js +37 -0
  138. package/dist/js/properties/non-scalar/PhononDispersionsProperty.d.ts +21 -0
  139. package/dist/js/properties/non-scalar/PhononDispersionsProperty.js +28 -0
  140. package/dist/js/properties/non-scalar/PotentialProfileProperty.d.ts +38 -0
  141. package/dist/js/properties/non-scalar/PotentialProfileProperty.js +58 -0
  142. package/dist/js/properties/non-scalar/ReactionEnergyProfileProperty.d.ts +25 -0
  143. package/dist/js/properties/non-scalar/ReactionEnergyProfileProperty.js +34 -0
  144. package/dist/js/properties/non-scalar/WorkflowProperty.d.ts +14 -0
  145. package/dist/js/properties/non-scalar/WorkflowProperty.js +17 -0
  146. package/dist/js/properties/non-scalar/convergence/ConvergenceElectronicProperty.d.ts +17 -0
  147. package/dist/js/properties/non-scalar/convergence/ConvergenceElectronicProperty.js +63 -0
  148. package/dist/js/properties/non-scalar/convergence/ConvergenceIonicProperty.d.ts +17 -0
  149. package/dist/js/properties/non-scalar/convergence/ConvergenceIonicProperty.js +45 -0
  150. package/dist/js/properties/object/TotalEnergyContributionsProperty.d.ts +18 -0
  151. package/dist/js/properties/object/TotalEnergyContributionsProperty.js +20 -0
  152. package/dist/js/properties/scalar/FermiEnergyProperty.d.ts +14 -0
  153. package/dist/js/properties/scalar/FermiEnergyProperty.js +17 -0
  154. package/dist/js/properties/scalar/IonizationPotentialElementalProperty.d.ts +14 -0
  155. package/dist/js/properties/scalar/IonizationPotentialElementalProperty.js +17 -0
  156. package/dist/js/properties/scalar/PressureProperty.d.ts +15 -0
  157. package/dist/js/properties/scalar/PressureProperty.js +18 -0
  158. package/dist/js/properties/scalar/ReactionEnergyBarrierProperty.d.ts +15 -0
  159. package/dist/js/properties/scalar/ReactionEnergyBarrierProperty.js +18 -0
  160. package/dist/js/properties/scalar/SurfaceEnergyProperty.d.ts +15 -0
  161. package/dist/js/properties/scalar/SurfaceEnergyProperty.js +18 -0
  162. package/dist/js/properties/scalar/TotalEnergyProperty.d.ts +15 -0
  163. package/dist/js/properties/scalar/TotalEnergyProperty.js +18 -0
  164. package/dist/js/properties/scalar/TotalForceProperty.d.ts +14 -0
  165. package/dist/js/properties/scalar/TotalForceProperty.js +17 -0
  166. package/dist/js/properties/scalar/ValenceBandOffsetProperty.d.ts +15 -0
  167. package/dist/js/properties/scalar/ValenceBandOffsetProperty.js +18 -0
  168. package/dist/js/properties/scalar/ZeroPointEnergyProperty.d.ts +14 -0
  169. package/dist/js/properties/scalar/ZeroPointEnergyProperty.js +17 -0
  170. package/dist/js/properties/tensor/AtomicForcesProperty.d.ts +14 -0
  171. package/dist/js/properties/tensor/AtomicForcesProperty.js +17 -0
  172. package/dist/js/properties/tensor/MagneticMomentsProperty.d.ts +14 -0
  173. package/dist/js/properties/tensor/MagneticMomentsProperty.js +17 -0
  174. package/dist/js/properties/tensor/StressTensorProperty.d.ts +14 -0
  175. package/dist/js/properties/tensor/StressTensorProperty.js +17 -0
  176. package/dist/js/proto_properties/AtomicConstraintsProperty.d.ts +13 -0
  177. package/dist/js/proto_properties/AtomicConstraintsProperty.js +16 -0
  178. package/dist/js/proto_properties/BoundaryConditionsProperty.d.ts +13 -0
  179. package/dist/js/proto_properties/BoundaryConditionsProperty.js +16 -0
  180. package/dist/js/settings.d.ts +48 -0
  181. package/dist/js/settings.js +56 -0
  182. package/dist/js/types.d.ts +14 -0
  183. package/dist/js/types.js +2 -0
  184. package/package.json +101 -0
  185. package/src/js/MetaProperty.ts +3 -0
  186. package/src/js/Property.ts +49 -0
  187. package/src/js/PropertyFactory.ts +208 -0
  188. package/src/js/ProtoProperty.ts +6 -0
  189. package/src/js/charts/highcharts.ts +172 -0
  190. package/src/js/generated/AtomicConstraintsPropertySchemaMixin.ts +24 -0
  191. package/src/js/generated/AtomicForcesPropertySchemaMixin.ts +26 -0
  192. package/src/js/generated/AveragePotentialProfilePropertySchemaMixin.ts +37 -0
  193. package/src/js/generated/BandGapsPropertySchemaMixin.ts +26 -0
  194. package/src/js/generated/BandStructurePropertySchemaMixin.ts +35 -0
  195. package/src/js/generated/BoundaryConditionsPropertySchemaMixin.ts +27 -0
  196. package/src/js/generated/ChargeDensityProfilePropertySchemaMixin.ts +37 -0
  197. package/src/js/generated/ConvergenceElectronicPropertySchemaMixin.ts +27 -0
  198. package/src/js/generated/ConvergenceIonicPropertySchemaMixin.ts +30 -0
  199. package/src/js/generated/DensityOfStatesPropertySchemaMixin.ts +36 -0
  200. package/src/js/generated/DielectricTensorPropertySchemaMixin.ts +24 -0
  201. package/src/js/generated/FermiEnergyPropertySchemaMixin.ts +26 -0
  202. package/src/js/generated/FileContentPropertySchemaMixin.ts +32 -0
  203. package/src/js/generated/FinalStructurePropertySchemaMixin.ts +27 -0
  204. package/src/js/generated/HubbardUPropertySchemaMixin.ts +26 -0
  205. package/src/js/generated/HubbardVNNPropertySchemaMixin.ts +26 -0
  206. package/src/js/generated/HubbardVPropertySchemaMixin.ts +26 -0
  207. package/src/js/generated/IonizationPotentialElementalPropertySchemaMixin.ts +27 -0
  208. package/src/js/generated/IsRelaxedPropertySchemaMixin.ts +26 -0
  209. package/src/js/generated/JupyterNotebookEndpointPropertySchemaMixin.ts +30 -0
  210. package/src/js/generated/MagneticMomentsPropertySchemaMixin.ts +27 -0
  211. package/src/js/generated/MetaPropertyHolderSchemaMixin.ts +23 -0
  212. package/src/js/generated/PhononDOSPropertySchemaMixin.ts +36 -0
  213. package/src/js/generated/PhononDispersionsPropertySchemaMixin.ts +35 -0
  214. package/src/js/generated/PotentialProfilePropertySchemaMixin.ts +33 -0
  215. package/src/js/generated/PressurePropertySchemaMixin.ts +26 -0
  216. package/src/js/generated/PropertyHolderSchemaMixin.ts +38 -0
  217. package/src/js/generated/ProtoPropertyHolderSchemaMixin.ts +23 -0
  218. package/src/js/generated/PseudopotentialMetaPropertySchemaMixin.ts +54 -0
  219. package/src/js/generated/README.md +27 -0
  220. package/src/js/generated/ReactionEnergyBarrierPropertySchemaMixin.ts +27 -0
  221. package/src/js/generated/ReactionEnergyProfilePropertySchemaMixin.ts +37 -0
  222. package/src/js/generated/StressTensorPropertySchemaMixin.ts +26 -0
  223. package/src/js/generated/SurfaceEnergyPropertySchemaMixin.ts +26 -0
  224. package/src/js/generated/TotalEnergyContributionsPropertySchemaMixin.ts +80 -0
  225. package/src/js/generated/TotalEnergyPropertySchemaMixin.ts +26 -0
  226. package/src/js/generated/TotalForcePropertySchemaMixin.ts +26 -0
  227. package/src/js/generated/ValenceBandOffsetPropertySchemaMixin.ts +27 -0
  228. package/src/js/generated/WorkflowPropertySchemaMixin.ts +41 -0
  229. package/src/js/generated/ZeroPointEnergyPropertySchemaMixin.ts +27 -0
  230. package/src/js/holders/MetaPropertyHolder.ts +19 -0
  231. package/src/js/holders/PropertyHolder.ts +17 -0
  232. package/src/js/holders/ProtoPropertyHolder.ts +17 -0
  233. package/src/js/holders/mixins/MetaPropertyHolderMixin.ts +31 -0
  234. package/src/js/holders/mixins/PropertyHolderMixin.ts +55 -0
  235. package/src/js/holders/mixins/ProtoPropertyHolderMixin.ts +31 -0
  236. package/src/js/index.ts +21 -0
  237. package/src/js/meta_properties/PseudopotentialMetaProperty.ts +206 -0
  238. package/src/js/properties/include/mixins/2d_plot.ts +105 -0
  239. package/src/js/properties/non-scalar/AveragePotentialProfileProperty.ts +69 -0
  240. package/src/js/properties/non-scalar/BandGapsProperty.ts +65 -0
  241. package/src/js/properties/non-scalar/BandStructureProperty.ts +284 -0
  242. package/src/js/properties/non-scalar/ChargeDensityProfileProperty.ts +48 -0
  243. package/src/js/properties/non-scalar/DensityOfStatesProperty.ts +174 -0
  244. package/src/js/properties/non-scalar/DielectricTensorProperty.ts +153 -0
  245. package/src/js/properties/non-scalar/FileContentProperty.ts +27 -0
  246. package/src/js/properties/non-scalar/FinalStructureProperty.ts +25 -0
  247. package/src/js/properties/non-scalar/HubbardUProperty.ts +25 -0
  248. package/src/js/properties/non-scalar/HubbardVNNProperty.ts +25 -0
  249. package/src/js/properties/non-scalar/HubbardVProperty.ts +25 -0
  250. package/src/js/properties/non-scalar/IsRelaxedProperty.ts +27 -0
  251. package/src/js/properties/non-scalar/JupyterNotebookEndpointProperty.ts +26 -0
  252. package/src/js/properties/non-scalar/PhononDOSProperty.ts +57 -0
  253. package/src/js/properties/non-scalar/PhononDispersionsProperty.ts +46 -0
  254. package/src/js/properties/non-scalar/PotentialProfileProperty.ts +76 -0
  255. package/src/js/properties/non-scalar/ReactionEnergyProfileProperty.ts +48 -0
  256. package/src/js/properties/non-scalar/WorkflowProperty.ts +25 -0
  257. package/src/js/properties/non-scalar/convergence/ConvergenceElectronicProperty.ts +82 -0
  258. package/src/js/properties/non-scalar/convergence/ConvergenceIonicProperty.ts +62 -0
  259. package/src/js/properties/object/TotalEnergyContributionsProperty.ts +29 -0
  260. package/src/js/properties/scalar/FermiEnergyProperty.ts +25 -0
  261. package/src/js/properties/scalar/IonizationPotentialElementalProperty.ts +27 -0
  262. package/src/js/properties/scalar/PressureProperty.ts +27 -0
  263. package/src/js/properties/scalar/ReactionEnergyBarrierProperty.ts +29 -0
  264. package/src/js/properties/scalar/SurfaceEnergyProperty.ts +27 -0
  265. package/src/js/properties/scalar/TotalEnergyProperty.ts +27 -0
  266. package/src/js/properties/scalar/TotalForceProperty.ts +25 -0
  267. package/src/js/properties/scalar/ValenceBandOffsetProperty.ts +27 -0
  268. package/src/js/properties/scalar/ZeroPointEnergyProperty.ts +25 -0
  269. package/src/js/properties/tensor/AtomicForcesProperty.ts +27 -0
  270. package/src/js/properties/tensor/MagneticMomentsProperty.ts +27 -0
  271. package/src/js/properties/tensor/StressTensorProperty.ts +25 -0
  272. package/src/js/proto_properties/AtomicConstraintsProperty.ts +25 -0
  273. package/src/js/proto_properties/BoundaryConditionsProperty.ts +25 -0
  274. package/src/js/settings.ts +52 -0
  275. package/src/js/types.ts +24 -0
  276. package/tsconfig.json +3 -0
@@ -0,0 +1,208 @@
1
+ import type { Constructor } from "@mat3ra/code/dist/js/utils/types";
2
+ import type {
3
+ MetaPropertyHolderSchema,
4
+ PropertyHolderSchema,
5
+ ProtoPropertyHolderSchema,
6
+ } from "@mat3ra/esse/dist/js/types";
7
+
8
+ import PseudopotentialProperty from "./meta_properties/PseudopotentialMetaProperty";
9
+ import type MetaProperty from "./MetaProperty";
10
+ import AveragePotentialProfileProperty from "./properties/non-scalar/AveragePotentialProfileProperty";
11
+ import BandGapsProperty from "./properties/non-scalar/BandGapsProperty";
12
+ import BandStructureProperty from "./properties/non-scalar/BandStructureProperty";
13
+ import ChargeDensityProfileProperty from "./properties/non-scalar/ChargeDensityProfileProperty";
14
+ import ConvergenceElectronicProperty from "./properties/non-scalar/convergence/ConvergenceElectronicProperty";
15
+ import ConvergenceIonicProperty from "./properties/non-scalar/convergence/ConvergenceIonicProperty";
16
+ import DensityOfStatesProperty from "./properties/non-scalar/DensityOfStatesProperty";
17
+ import DielectricTensorProperty from "./properties/non-scalar/DielectricTensorProperty";
18
+ import FileContentProperty from "./properties/non-scalar/FileContentProperty";
19
+ import FinalStructureProperty from "./properties/non-scalar/FinalStructureProperty";
20
+ import HubbardUProperty from "./properties/non-scalar/HubbardUProperty";
21
+ import HubbardVNNProperty from "./properties/non-scalar/HubbardVNNProperty";
22
+ import HubbardVProperty from "./properties/non-scalar/HubbardVProperty";
23
+ import IsRelaxedProperty from "./properties/non-scalar/IsRelaxedProperty";
24
+ import JupyterNotebookEndpointProperty from "./properties/non-scalar/JupyterNotebookEndpointProperty";
25
+ import PhononDispersionsProperty from "./properties/non-scalar/PhononDispersionsProperty";
26
+ import PhononDOSProperty from "./properties/non-scalar/PhononDOSProperty";
27
+ import PotentialProfileProperty from "./properties/non-scalar/PotentialProfileProperty";
28
+ import ReactionEnergyProfileProperty from "./properties/non-scalar/ReactionEnergyProfileProperty";
29
+ import WorkflowProperty from "./properties/non-scalar/WorkflowProperty";
30
+ import TotalEnergyContributionsProperty from "./properties/object/TotalEnergyContributionsProperty";
31
+ import FermiEnergyProperty from "./properties/scalar/FermiEnergyProperty";
32
+ import IonizationPotentialElementalProperty from "./properties/scalar/IonizationPotentialElementalProperty";
33
+ import PressureProperty from "./properties/scalar/PressureProperty";
34
+ import ReactionEnergyBarrierProperty from "./properties/scalar/ReactionEnergyBarrierProperty";
35
+ import SurfaceEnergyProperty from "./properties/scalar/SurfaceEnergyProperty";
36
+ import TotalEnergyProperty from "./properties/scalar/TotalEnergyProperty";
37
+ import TotalForcesProperty from "./properties/scalar/TotalForceProperty";
38
+ import ValenceBandOffsetProperty from "./properties/scalar/ValenceBandOffsetProperty";
39
+ import ZeroPointEnergyProperty from "./properties/scalar/ZeroPointEnergyProperty";
40
+ import AtomicForcesProperty from "./properties/tensor/AtomicForcesProperty";
41
+ import MagneticMomentsProperty from "./properties/tensor/MagneticMomentsProperty";
42
+ import StressTensorProperty from "./properties/tensor/StressTensorProperty";
43
+ import type Property from "./Property";
44
+ import AtomicConstraintsProperty from "./proto_properties/AtomicConstraintsProperty";
45
+ import BoundaryConditionsProperty from "./proto_properties/BoundaryConditionsProperty";
46
+ import { PropertyName, PropertyType } from "./settings";
47
+
48
+ type AnyProperty = PropertyHolderSchema["data"];
49
+ type AnyMetaProperty = MetaPropertyHolderSchema["data"];
50
+ type AnyProtoProperty = ProtoPropertyHolderSchema["data"];
51
+
52
+ type PropertyClassMap = {
53
+ [key in PropertyHolderSchema["data"]["name"]]:
54
+ | Constructor<PressureProperty>
55
+ | Constructor<TotalForcesProperty>
56
+ | Constructor<TotalEnergyProperty>
57
+ | Constructor<SurfaceEnergyProperty>
58
+ | Constructor<ConvergenceElectronicProperty>
59
+ | Constructor<ConvergenceIonicProperty>
60
+ | Constructor<FermiEnergyProperty>
61
+ | Constructor<ZeroPointEnergyProperty>
62
+ | Constructor<TotalEnergyContributionsProperty>
63
+ | Constructor<AtomicForcesProperty>
64
+ | Constructor<StressTensorProperty>
65
+ | Constructor<DensityOfStatesProperty>
66
+ | Constructor<BandStructureProperty>
67
+ | Constructor<BandGapsProperty>
68
+ | Constructor<PhononDispersionsProperty>
69
+ | Constructor<PhononDOSProperty>
70
+ | Constructor<FinalStructureProperty>
71
+ | Constructor<IsRelaxedProperty>
72
+ | Constructor<WorkflowProperty>
73
+ | Constructor<MagneticMomentsProperty>
74
+ | Constructor<ReactionEnergyBarrierProperty>
75
+ | Constructor<ReactionEnergyProfileProperty>
76
+ | Constructor<PotentialProfileProperty>
77
+ | Constructor<ChargeDensityProfileProperty>
78
+ | Constructor<AveragePotentialProfileProperty>
79
+ | Constructor<ValenceBandOffsetProperty>
80
+ | Constructor<IonizationPotentialElementalProperty>
81
+ | Constructor<FileContentProperty>
82
+ | Constructor<DielectricTensorProperty>
83
+ | Constructor<HubbardUProperty>
84
+ | Constructor<HubbardVNNProperty>
85
+ | Constructor<HubbardVProperty>
86
+ | Constructor<JupyterNotebookEndpointProperty>;
87
+ };
88
+
89
+ type MetaPropertyClassMap = {
90
+ [key in MetaPropertyHolderSchema["data"]["name"]]: Constructor<PseudopotentialProperty>;
91
+ };
92
+
93
+ type ProtoPropertyClassMap = {
94
+ [key in ProtoPropertyHolderSchema["data"]["name"]]:
95
+ | Constructor<BoundaryConditionsProperty>
96
+ | Constructor<AtomicConstraintsProperty>;
97
+ };
98
+
99
+ const PROPERTY_CLASS_MAP: PropertyClassMap = {
100
+ [PressureProperty.propertyName]: PressureProperty,
101
+ [TotalForcesProperty.propertyName]: TotalForcesProperty,
102
+ [TotalEnergyProperty.propertyName]: TotalEnergyProperty,
103
+ [SurfaceEnergyProperty.propertyName]: SurfaceEnergyProperty,
104
+ [ConvergenceElectronicProperty.propertyName]: ConvergenceElectronicProperty,
105
+ [ConvergenceIonicProperty.propertyName]: ConvergenceIonicProperty,
106
+ [FermiEnergyProperty.propertyName]: FermiEnergyProperty,
107
+ [ZeroPointEnergyProperty.propertyName]: ZeroPointEnergyProperty,
108
+ [TotalEnergyContributionsProperty.propertyName]: TotalEnergyContributionsProperty,
109
+ [AtomicForcesProperty.propertyName]: AtomicForcesProperty,
110
+ [StressTensorProperty.propertyName]: StressTensorProperty,
111
+ [DensityOfStatesProperty.propertyName]: DensityOfStatesProperty,
112
+ [BandStructureProperty.propertyName]: BandStructureProperty,
113
+ [BandGapsProperty.propertyName]: BandGapsProperty,
114
+ [PhononDispersionsProperty.propertyName]: PhononDispersionsProperty,
115
+ [PhononDOSProperty.propertyName]: PhononDOSProperty,
116
+ [FinalStructureProperty.propertyName]: FinalStructureProperty,
117
+ [IsRelaxedProperty.propertyName]: IsRelaxedProperty,
118
+ [WorkflowProperty.propertyName]: WorkflowProperty,
119
+ [MagneticMomentsProperty.propertyName]: MagneticMomentsProperty,
120
+ [ReactionEnergyBarrierProperty.propertyName]: ReactionEnergyBarrierProperty,
121
+ [ReactionEnergyProfileProperty.propertyName]: ReactionEnergyProfileProperty,
122
+ [PotentialProfileProperty.propertyName]: PotentialProfileProperty,
123
+ [ChargeDensityProfileProperty.propertyName]: ChargeDensityProfileProperty,
124
+ [AveragePotentialProfileProperty.propertyName]: AveragePotentialProfileProperty,
125
+ [ValenceBandOffsetProperty.propertyName]: ValenceBandOffsetProperty,
126
+ [IonizationPotentialElementalProperty.propertyName]: IonizationPotentialElementalProperty,
127
+ [FileContentProperty.propertyName]: FileContentProperty,
128
+ [DielectricTensorProperty.propertyName]: DielectricTensorProperty,
129
+ [HubbardUProperty.propertyName]: HubbardUProperty,
130
+ [HubbardVNNProperty.propertyName]: HubbardVNNProperty,
131
+ [HubbardVProperty.propertyName]: HubbardVProperty,
132
+ [JupyterNotebookEndpointProperty.propertyName]: JupyterNotebookEndpointProperty,
133
+ };
134
+
135
+ const META_PROPERTY_CLASS_MAP: MetaPropertyClassMap = {
136
+ [PseudopotentialProperty.propertyName]: PseudopotentialProperty,
137
+ };
138
+
139
+ const PROTO_PROPERTY_CLASS_MAP: ProtoPropertyClassMap = {
140
+ [BoundaryConditionsProperty.propertyName]: BoundaryConditionsProperty,
141
+ [AtomicConstraintsProperty.propertyName]: AtomicConstraintsProperty,
142
+ };
143
+
144
+ export default class PropertyFactory {
145
+ static methodsTree: Record<string, () => void> = {};
146
+
147
+ static getRefinedPropertyNames(): PropertyName[] {
148
+ return this.filterPropertyNames((PropertyClass) => {
149
+ return (PropertyClass as typeof Property).isRefined;
150
+ });
151
+ }
152
+
153
+ static getConvergencePropertyNames(): PropertyName[] {
154
+ return this.filterPropertyNames((PropertyClass) => {
155
+ return (PropertyClass as typeof Property).isConvergence;
156
+ });
157
+ }
158
+
159
+ static getMultipleResultsPropertyNames(): PropertyName[] {
160
+ return this.filterPropertyNames((PropertyClass) => {
161
+ return (PropertyClass as typeof Property).isAbleToReturnMultipleResults;
162
+ });
163
+ }
164
+
165
+ static getScalarPropertyNames(): PropertyName[] {
166
+ return this.filterPropertyNames((PropertyClass) => {
167
+ return (PropertyClass as typeof Property).propertyType === PropertyType.scalar;
168
+ });
169
+ }
170
+
171
+ static getNonScalarPropertyNames(): PropertyName[] {
172
+ return this.filterPropertyNames((PropertyClass) => {
173
+ return (PropertyClass as typeof Property).propertyType === PropertyType.non_scalar;
174
+ });
175
+ }
176
+
177
+ private static filterPropertyNames(
178
+ filterFn: (PropertyClass: Constructor<Property>) => boolean,
179
+ ): PropertyName[] {
180
+ const properties = Object.values({
181
+ ...PROPERTY_CLASS_MAP,
182
+ ...META_PROPERTY_CLASS_MAP,
183
+ ...PROTO_PROPERTY_CLASS_MAP,
184
+ });
185
+
186
+ return properties.filter(filterFn).map((PropertyClass: Constructor<Property>) => {
187
+ return (PropertyClass as typeof Property).propertyName;
188
+ });
189
+ }
190
+
191
+ static createProperty(config: AnyProperty) {
192
+ const PropertyClass = PROPERTY_CLASS_MAP[config.name];
193
+
194
+ return new PropertyClass(config);
195
+ }
196
+
197
+ static createMetaProperty(config: AnyMetaProperty): MetaProperty {
198
+ const { name } = config;
199
+ const PropertyClass = META_PROPERTY_CLASS_MAP[name];
200
+ return new PropertyClass(config);
201
+ }
202
+
203
+ static createProtoProperty(config: AnyProtoProperty) {
204
+ const { name } = config;
205
+ const PropertyClass = PROTO_PROPERTY_CLASS_MAP[name];
206
+ return new PropertyClass(config);
207
+ }
208
+ }
@@ -0,0 +1,6 @@
1
+ import Property from "./Property";
2
+ import { PropertyType } from "./settings";
3
+
4
+ export default class ProtoProperty<TSchema extends object = object> extends Property<TSchema> {
5
+ static readonly propertyType = PropertyType.non_scalar;
6
+ }
@@ -0,0 +1,172 @@
1
+ /* eslint-disable class-methods-use-this */
2
+
3
+ import type { AxisOptions, IndividualSeriesOptions, Options, PlotLines } from "highcharts";
4
+
5
+ import type { XDataArray } from "../properties/include/mixins/2d_plot";
6
+
7
+ /**
8
+ * Callback JavaScript function to format the data label. Note that if a format is defined, the format takes
9
+ * precedence and the formatter is ignored.
10
+ * Available data are:
11
+ * - this.percentage Stacked series and pies only. The point's percentage of the total.
12
+ * - this.point The point object. The point name, if defined, is available through this.point.name.
13
+ * - this.series The series object. The series name is available through this.series.name.
14
+ * - this.total Stacked series only. The total value at this point's x value.
15
+ * - this.x: The x value.
16
+ * - this.y: The y value.
17
+ */
18
+ export type FormatterScope = {
19
+ percentage: number;
20
+ point: {
21
+ name: string;
22
+ index: number;
23
+ };
24
+ series: {
25
+ name: string;
26
+ };
27
+ total: number;
28
+ x: number;
29
+ y: number;
30
+ key: number;
31
+ };
32
+
33
+ export type Formatter = (this: FormatterScope) => string;
34
+
35
+ export interface HighChartsConfigParams {
36
+ title?: string;
37
+ subtitle: string;
38
+ yAxisTitle?: string;
39
+ xAxisTitle?: string;
40
+ yAxisType: string;
41
+ series?: IndividualSeriesOptions[];
42
+ legend?: string[] | object[] | boolean;
43
+ }
44
+
45
+ /**
46
+ * @description Base class for Highcharts configuration
47
+ */
48
+ export abstract class HighChartsConfig implements HighChartsConfigParams {
49
+ readonly title: HighChartsConfigParams["title"];
50
+
51
+ readonly subtitle: HighChartsConfigParams["subtitle"];
52
+
53
+ readonly yAxisTitle: HighChartsConfigParams["yAxisTitle"];
54
+
55
+ readonly xAxisTitle: HighChartsConfigParams["xAxisTitle"];
56
+
57
+ readonly yAxisType: HighChartsConfigParams["yAxisType"];
58
+
59
+ readonly legend: HighChartsConfigParams["legend"];
60
+
61
+ readonly _series: HighChartsConfigParams["series"];
62
+
63
+ constructor({
64
+ title,
65
+ subtitle,
66
+ yAxisTitle,
67
+ xAxisTitle,
68
+ yAxisType,
69
+ series,
70
+ legend,
71
+ }: HighChartsConfigParams) {
72
+ this.title = title;
73
+ this.subtitle = subtitle;
74
+ this.yAxisTitle = yAxisTitle;
75
+ this.xAxisTitle = xAxisTitle;
76
+ this.yAxisType = yAxisType;
77
+ this._series = series;
78
+ this.legend = legend;
79
+ }
80
+
81
+ yAxis(): AxisOptions {
82
+ return {
83
+ title: {
84
+ text: this.yAxisTitle,
85
+ },
86
+ type: this.yAxisType,
87
+ gridLineColor: "#eee",
88
+ plotLines: [
89
+ {
90
+ value: 0,
91
+ width: 1,
92
+ color: "#808080",
93
+ },
94
+ ],
95
+ };
96
+ }
97
+
98
+ xAxis(): AxisOptions {
99
+ return {
100
+ title: {
101
+ text: this.xAxisTitle,
102
+ },
103
+ tickPixelInterval: 200,
104
+ };
105
+ }
106
+
107
+ // override in children
108
+ abstract tooltipFormatter(_xDataArray?: XDataArray): (this: FormatterScope) => string;
109
+
110
+ plotSingleLine({
111
+ value,
112
+ width = 1,
113
+ label,
114
+ color = "red",
115
+ dashStyle = "dash",
116
+ }: PlotLines): PlotLines[] {
117
+ return [
118
+ {
119
+ value,
120
+ width,
121
+ label,
122
+ color,
123
+ dashStyle,
124
+ },
125
+ ];
126
+ }
127
+
128
+ get series() {
129
+ return this._series;
130
+ }
131
+
132
+ get config(): Options {
133
+ return {
134
+ credits: {
135
+ enabled: false,
136
+ },
137
+ chart: {
138
+ animation: false,
139
+ zoomType: "xy",
140
+ },
141
+ title: {
142
+ text: "",
143
+ x: -20, // center
144
+ },
145
+ subtitle: {
146
+ text: this.subtitle,
147
+ x: -20,
148
+ },
149
+ yAxis: this.yAxis(),
150
+ xAxis: this.xAxis(),
151
+ tooltip: {
152
+ formatter: this.tooltipFormatter(),
153
+ },
154
+ plotOptions: {
155
+ series: {
156
+ animation: false,
157
+ },
158
+ },
159
+ legend: {
160
+ enabled: Boolean(this.legend),
161
+ maxHeight: 70,
162
+ },
163
+ series: this.series,
164
+ ...this.overrideConfig,
165
+ };
166
+ }
167
+
168
+ // use in child classes to add/override default config props
169
+ get overrideConfig(): Options {
170
+ return {};
171
+ }
172
+ }
@@ -0,0 +1,24 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { AtomicConstraintsPropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type AtomicConstraintsPropertySchemaMixin = Omit<
5
+ AtomicConstraintsPropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type AtomicConstraintsPropertyInMemoryEntity = InMemoryEntity &
10
+ AtomicConstraintsPropertySchemaMixin;
11
+
12
+ export function atomicConstraintsPropertySchemaMixin(item: InMemoryEntity) {
13
+ // @ts-expect-error
14
+ const properties: InMemoryEntity & AtomicConstraintsPropertySchemaMixin = {
15
+ get name() {
16
+ return this.requiredProp<AtomicConstraintsPropertySchema["name"]>("name");
17
+ },
18
+ get values() {
19
+ return this.requiredProp<AtomicConstraintsPropertySchema["values"]>("values");
20
+ },
21
+ };
22
+
23
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
24
+ }
@@ -0,0 +1,26 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { AtomicForcesPropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type AtomicForcesPropertySchemaMixin = Omit<
5
+ AtomicForcesPropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type AtomicForcesPropertyInMemoryEntity = InMemoryEntity & AtomicForcesPropertySchemaMixin;
10
+
11
+ export function atomicForcesPropertySchemaMixin(item: InMemoryEntity) {
12
+ // @ts-expect-error
13
+ const properties: InMemoryEntity & AtomicForcesPropertySchemaMixin = {
14
+ get name() {
15
+ return this.requiredProp<AtomicForcesPropertySchema["name"]>("name");
16
+ },
17
+ get values() {
18
+ return this.requiredProp<AtomicForcesPropertySchema["values"]>("values");
19
+ },
20
+ get units() {
21
+ return this.requiredProp<AtomicForcesPropertySchema["units"]>("units");
22
+ },
23
+ };
24
+
25
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
26
+ }
@@ -0,0 +1,37 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { AveragePotentialProfilePropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type AveragePotentialProfilePropertySchemaMixin = Omit<
5
+ AveragePotentialProfilePropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type AveragePotentialProfilePropertyInMemoryEntity = InMemoryEntity &
10
+ AveragePotentialProfilePropertySchemaMixin;
11
+
12
+ export function averagePotentialProfilePropertySchemaMixin(item: InMemoryEntity) {
13
+ // @ts-expect-error
14
+ const properties: InMemoryEntity & AveragePotentialProfilePropertySchemaMixin = {
15
+ get xAxis() {
16
+ return this.requiredProp<AveragePotentialProfilePropertySchema["xAxis"]>("xAxis");
17
+ },
18
+ get yAxis() {
19
+ return this.requiredProp<AveragePotentialProfilePropertySchema["yAxis"]>("yAxis");
20
+ },
21
+ get name() {
22
+ return this.requiredProp<AveragePotentialProfilePropertySchema["name"]>("name");
23
+ },
24
+ get xDataArray() {
25
+ return this.requiredProp<AveragePotentialProfilePropertySchema["xDataArray"]>(
26
+ "xDataArray",
27
+ );
28
+ },
29
+ get yDataSeries() {
30
+ return this.requiredProp<AveragePotentialProfilePropertySchema["yDataSeries"]>(
31
+ "yDataSeries",
32
+ );
33
+ },
34
+ };
35
+
36
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
37
+ }
@@ -0,0 +1,26 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { BandGapsPropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type BandGapsPropertySchemaMixin = Omit<
5
+ BandGapsPropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type BandGapsPropertyInMemoryEntity = InMemoryEntity & BandGapsPropertySchemaMixin;
10
+
11
+ export function bandGapsPropertySchemaMixin(item: InMemoryEntity) {
12
+ // @ts-expect-error
13
+ const properties: InMemoryEntity & BandGapsPropertySchemaMixin = {
14
+ get name() {
15
+ return this.requiredProp<BandGapsPropertySchema["name"]>("name");
16
+ },
17
+ get values() {
18
+ return this.requiredProp<BandGapsPropertySchema["values"]>("values");
19
+ },
20
+ get eigenvalues() {
21
+ return this.prop<BandGapsPropertySchema["eigenvalues"]>("eigenvalues");
22
+ },
23
+ };
24
+
25
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
26
+ }
@@ -0,0 +1,35 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { BandStructurePropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type BandStructurePropertySchemaMixin = Omit<
5
+ BandStructurePropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type BandStructurePropertyInMemoryEntity = InMemoryEntity & BandStructurePropertySchemaMixin;
10
+
11
+ export function bandStructurePropertySchemaMixin(item: InMemoryEntity) {
12
+ // @ts-expect-error
13
+ const properties: InMemoryEntity & BandStructurePropertySchemaMixin = {
14
+ get xAxis() {
15
+ return this.requiredProp<BandStructurePropertySchema["xAxis"]>("xAxis");
16
+ },
17
+ get yAxis() {
18
+ return this.requiredProp<BandStructurePropertySchema["yAxis"]>("yAxis");
19
+ },
20
+ get name() {
21
+ return this.requiredProp<BandStructurePropertySchema["name"]>("name");
22
+ },
23
+ get spin() {
24
+ return this.requiredProp<BandStructurePropertySchema["spin"]>("spin");
25
+ },
26
+ get xDataArray() {
27
+ return this.requiredProp<BandStructurePropertySchema["xDataArray"]>("xDataArray");
28
+ },
29
+ get yDataSeries() {
30
+ return this.requiredProp<BandStructurePropertySchema["yDataSeries"]>("yDataSeries");
31
+ },
32
+ };
33
+
34
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
35
+ }
@@ -0,0 +1,27 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { BoundaryConditionsPropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type BoundaryConditionsPropertySchemaMixin = Omit<
5
+ BoundaryConditionsPropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type BoundaryConditionsPropertyInMemoryEntity = InMemoryEntity &
10
+ BoundaryConditionsPropertySchemaMixin;
11
+
12
+ export function boundaryConditionsPropertySchemaMixin(item: InMemoryEntity) {
13
+ // @ts-expect-error
14
+ const properties: InMemoryEntity & BoundaryConditionsPropertySchemaMixin = {
15
+ get name() {
16
+ return this.requiredProp<BoundaryConditionsPropertySchema["name"]>("name");
17
+ },
18
+ get type() {
19
+ return this.requiredProp<BoundaryConditionsPropertySchema["type"]>("type");
20
+ },
21
+ get offset() {
22
+ return this.requiredProp<BoundaryConditionsPropertySchema["offset"]>("offset");
23
+ },
24
+ };
25
+
26
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
27
+ }
@@ -0,0 +1,37 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { ChargeDensityProfilePropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type ChargeDensityProfilePropertySchemaMixin = Omit<
5
+ ChargeDensityProfilePropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type ChargeDensityProfilePropertyInMemoryEntity = InMemoryEntity &
10
+ ChargeDensityProfilePropertySchemaMixin;
11
+
12
+ export function chargeDensityProfilePropertySchemaMixin(item: InMemoryEntity) {
13
+ // @ts-expect-error
14
+ const properties: InMemoryEntity & ChargeDensityProfilePropertySchemaMixin = {
15
+ get xAxis() {
16
+ return this.requiredProp<ChargeDensityProfilePropertySchema["xAxis"]>("xAxis");
17
+ },
18
+ get yAxis() {
19
+ return this.requiredProp<ChargeDensityProfilePropertySchema["yAxis"]>("yAxis");
20
+ },
21
+ get name() {
22
+ return this.requiredProp<ChargeDensityProfilePropertySchema["name"]>("name");
23
+ },
24
+ get xDataArray() {
25
+ return this.requiredProp<ChargeDensityProfilePropertySchema["xDataArray"]>(
26
+ "xDataArray",
27
+ );
28
+ },
29
+ get yDataSeries() {
30
+ return this.requiredProp<ChargeDensityProfilePropertySchema["yDataSeries"]>(
31
+ "yDataSeries",
32
+ );
33
+ },
34
+ };
35
+
36
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
37
+ }
@@ -0,0 +1,27 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { ConvergenceElectronicPropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type ConvergenceElectronicPropertySchemaMixin = Omit<
5
+ ConvergenceElectronicPropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type ConvergenceElectronicPropertyInMemoryEntity = InMemoryEntity &
10
+ ConvergenceElectronicPropertySchemaMixin;
11
+
12
+ export function convergenceElectronicPropertySchemaMixin(item: InMemoryEntity) {
13
+ // @ts-expect-error
14
+ const properties: InMemoryEntity & ConvergenceElectronicPropertySchemaMixin = {
15
+ get name() {
16
+ return this.requiredProp<ConvergenceElectronicPropertySchema["name"]>("name");
17
+ },
18
+ get units() {
19
+ return this.requiredProp<ConvergenceElectronicPropertySchema["units"]>("units");
20
+ },
21
+ get data() {
22
+ return this.requiredProp<ConvergenceElectronicPropertySchema["data"]>("data");
23
+ },
24
+ };
25
+
26
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
27
+ }
@@ -0,0 +1,30 @@
1
+ import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import type { ConvergenceIonicPropertySchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ export type ConvergenceIonicPropertySchemaMixin = Omit<
5
+ ConvergenceIonicPropertySchema,
6
+ "_id" | "slug" | "systemName" | "schemaVersion"
7
+ >;
8
+
9
+ export type ConvergenceIonicPropertyInMemoryEntity = InMemoryEntity &
10
+ ConvergenceIonicPropertySchemaMixin;
11
+
12
+ export function convergenceIonicPropertySchemaMixin(item: InMemoryEntity) {
13
+ // @ts-expect-error
14
+ const properties: InMemoryEntity & ConvergenceIonicPropertySchemaMixin = {
15
+ get name() {
16
+ return this.requiredProp<ConvergenceIonicPropertySchema["name"]>("name");
17
+ },
18
+ get tolerance() {
19
+ return this.prop<ConvergenceIonicPropertySchema["tolerance"]>("tolerance");
20
+ },
21
+ get units() {
22
+ return this.requiredProp<ConvergenceIonicPropertySchema["units"]>("units");
23
+ },
24
+ get data() {
25
+ return this.requiredProp<ConvergenceIonicPropertySchema["data"]>("data");
26
+ },
27
+ };
28
+
29
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
30
+ }