quantized-lab 0.26.0__tar.gz → 0.26.1__tar.gz

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 (660) hide show
  1. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/PKG-INFO +1 -1
  2. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/pyproject.toml +1 -1
  3. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/__init__.py +1 -1
  4. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/magnetometry.py +11 -2
  5. quantized_lab-0.26.0/src/quantized/web/assets/AnnotationTextDialog-CrUBjfS-.js → quantized_lab-0.26.1/src/quantized/web/assets/AnnotationTextDialog-B0Lt3jLu.js +1 -1
  6. quantized_lab-0.26.1/src/quantized/web/assets/BackgroundPlotWindow-BIlWvgYw.js +1 -0
  7. quantized_lab-0.26.1/src/quantized/web/assets/BaselinePanel-BZDK91AN.js +1 -0
  8. quantized_lab-0.26.1/src/quantized/web/assets/CalcOnlyApp-CWYdVu53.js +1 -0
  9. quantized_lab-0.26.1/src/quantized/web/assets/CalculatorsContent-B5povxeH.js +8 -0
  10. quantized_lab-0.26.1/src/quantized/web/assets/CalculatorsPanel-DGJQfuSx.js +1 -0
  11. quantized_lab-0.26.1/src/quantized/web/assets/CollectionsSection-DayfV4rp.js +1 -0
  12. quantized_lab-0.26.1/src/quantized/web/assets/ColumnSwitcher-Da9i2zDJ.js +1 -0
  13. quantized_lab-0.26.1/src/quantized/web/assets/CombineWorkbooksDialog-Dec3QZbm.js +1 -0
  14. quantized_lab-0.26.1/src/quantized/web/assets/ConfirmDialog-CL2Dq9Ll.js +2 -0
  15. quantized_lab-0.26.1/src/quantized/web/assets/CurveFitPanel-CxADavK6.js +1 -0
  16. quantized_lab-0.26.1/src/quantized/web/assets/DataFilterPanel-B7dnJ1g0.js +1 -0
  17. quantized_lab-0.26.1/src/quantized/web/assets/DatasetMathPanel-D4vbISlX.js +1 -0
  18. quantized_lab-0.26.1/src/quantized/web/assets/DatasetRow-BWLuYSNA.js +1 -0
  19. quantized_lab-0.26.1/src/quantized/web/assets/DigitizerView-B6q2-Wxj.js +1 -0
  20. quantized_lab-0.26.1/src/quantized/web/assets/DistributionPanel-D-QeMWgn.js +1 -0
  21. quantized_lab-0.26.1/src/quantized/web/assets/EditableFiguresSection-D1jExj4q.js +2 -0
  22. quantized_lab-0.26.1/src/quantized/web/assets/FigureBuilderView-CZNC-bwk.js +1 -0
  23. quantized_lab-0.26.1/src/quantized/web/assets/FigurePageView-UiIe2P8C.js +2 -0
  24. quantized_lab-0.26.1/src/quantized/web/assets/FigureRow-Decalifi.js +2 -0
  25. quantized_lab-0.26.1/src/quantized/web/assets/FiguresSection-CKpzQYMe.js +1 -0
  26. quantized_lab-0.26.1/src/quantized/web/assets/FitYByXPanel-CzS0-409.js +1 -0
  27. quantized_lab-0.26.1/src/quantized/web/assets/GraphBuilderPanel-BI0N_itJ.js +1 -0
  28. quantized_lab-0.26.1/src/quantized/web/assets/GraphPreview-DUsFmTEn.js +1 -0
  29. quantized_lab-0.26.1/src/quantized/web/assets/HelpDialog--stwYtIu.js +1 -0
  30. quantized_lab-0.26.1/src/quantized/web/assets/HysteresisPanel-B9FBQ028.js +1 -0
  31. quantized_lab-0.26.1/src/quantized/web/assets/ImportWizardPanel-BEoQ7yBd.js +1 -0
  32. quantized_lab-0.26.1/src/quantized/web/assets/Inspector-CSthEOA7.js +2 -0
  33. quantized_lab-0.26.1/src/quantized/web/assets/LevelOrderPanel-D25xWof6.js +1 -0
  34. quantized_lab-0.26.1/src/quantized/web/assets/LibraryDetails-WmPgONWk.js +1 -0
  35. quantized_lab-0.26.1/src/quantized/web/assets/LibraryFlatRows-ChjDWxvi.js +1 -0
  36. quantized_lab-0.26.1/src/quantized/web/assets/LibraryTree-Ce2wrxeC.js +1 -0
  37. quantized_lab-0.26.1/src/quantized/web/assets/LibraryWorkspace-DVzBzJS2.js +1 -0
  38. quantized_lab-0.26.1/src/quantized/web/assets/MagToolsPanel-DKRpQDi1.js +1 -0
  39. quantized_lab-0.26.1/src/quantized/web/assets/MapStage-NEW-pwF1.js +1 -0
  40. quantized_lab-0.26.1/src/quantized/web/assets/MultiPanelStage-DVV4Y982.js +1 -0
  41. quantized_lab-0.26.1/src/quantized/web/assets/MultiSelectBar-UPVbSxtI.js +2 -0
  42. quantized_lab-0.26.1/src/quantized/web/assets/MultivarPanel-BW7HebOY.js +2 -0
  43. quantized_lab-0.26.1/src/quantized/web/assets/OriginFidelitySection-BNyecfj5.js +1 -0
  44. quantized_lab-0.26.1/src/quantized/web/assets/OriginSavedPreviewWindow-BjAiDyiE.js +1 -0
  45. quantized_lab-0.26.1/src/quantized/web/assets/OutlierScreeningPanel-D3NaC8Kf.js +1 -0
  46. quantized_lab-0.26.1/src/quantized/web/assets/PackProjectPanel-B00b3CeC.js +1 -0
  47. quantized_lab-0.26.1/src/quantized/web/assets/PagesSection-C6Wu1Z7u.js +2 -0
  48. quantized_lab-0.26.1/src/quantized/web/assets/PanelPlotWindow-gKIP80NF.js +1 -0
  49. quantized_lab-0.26.0/src/quantized/web/assets/ParamDialog-C0P4O-3z.js → quantized_lab-0.26.1/src/quantized/web/assets/ParamDialog-CmNOZNzn.js +1 -1
  50. quantized_lab-0.26.1/src/quantized/web/assets/PeakWizardPanel-D5wTXswv.js +1 -0
  51. quantized_lab-0.26.1/src/quantized/web/assets/PeaksPanel-CVhFGZuw.js +1 -0
  52. quantized_lab-0.26.1/src/quantized/web/assets/PipelinePanel-DEsJ6cfE.js +1 -0
  53. quantized_lab-0.26.1/src/quantized/web/assets/PlotContextMenu-DT_M-y9k.js +1 -0
  54. quantized_lab-0.26.1/src/quantized/web/assets/PlotRecipeApplyDialog-Dee-2FYz.js +1 -0
  55. quantized_lab-0.26.0/src/quantized/web/assets/PlotResultChips-DKINGVQg.js → quantized_lab-0.26.1/src/quantized/web/assets/PlotResultChips-BrE0xNRY.js +1 -1
  56. quantized_lab-0.26.1/src/quantized/web/assets/PolarStage-CV05IMQN.js +1 -0
  57. quantized_lab-0.26.0/src/quantized/web/assets/PolarStageCore-Cmu_g2Yd.js → quantized_lab-0.26.1/src/quantized/web/assets/PolarStageCore-qzheM43i.js +1 -1
  58. quantized_lab-0.26.1/src/quantized/web/assets/PreferencesDialog-CgXzwuci.js +1 -0
  59. quantized_lab-0.26.1/src/quantized/web/assets/QuickFigureBuilderWorkspace-TdY6_j7W.js +1 -0
  60. quantized_lab-0.26.1/src/quantized/web/assets/QuickPlotWithDialog-Ds8ST3qc.js +1 -0
  61. quantized_lab-0.26.1/src/quantized/web/assets/RecipeLibraryPanel-DhT3k8F7.js +2 -0
  62. quantized_lab-0.26.1/src/quantized/web/assets/RecipeManagerPanel-91oal_BW.js +1 -0
  63. quantized_lab-0.26.1/src/quantized/web/assets/RecodePanel-aHP4Hlw1.js +1 -0
  64. quantized_lab-0.26.1/src/quantized/web/assets/RecoveryChoiceDialog-DIuDFeVD.js +1 -0
  65. quantized_lab-0.26.1/src/quantized/web/assets/ReductionsPanel-Ckg9537-.js +1 -0
  66. quantized_lab-0.26.1/src/quantized/web/assets/ReflView-DOubwXAv.js +1 -0
  67. quantized_lab-0.26.1/src/quantized/web/assets/ReflectivityPanel-DPn998nq.js +1 -0
  68. quantized_lab-0.26.1/src/quantized/web/assets/ReimportAllDialog-Bob_8h7w.js +1 -0
  69. quantized_lab-0.26.1/src/quantized/web/assets/RelinkPanel-DZvb6dKA.js +1 -0
  70. quantized_lab-0.26.1/src/quantized/web/assets/ReportPanel-GPJErJ4-.js +1 -0
  71. quantized_lab-0.26.1/src/quantized/web/assets/ReportsSection-Dlh0zDve.js +1 -0
  72. quantized_lab-0.26.0/src/quantized/web/assets/RichLabelInput-CXw-iHle.js → quantized_lab-0.26.1/src/quantized/web/assets/RichLabelInput-CoXmByK1.js +1 -1
  73. quantized_lab-0.26.1/src/quantized/web/assets/RoiCutsPanel-Cw5BEPzm.js +2 -0
  74. quantized_lab-0.26.1/src/quantized/web/assets/RsmPanel-CnSt0YH5.js +1 -0
  75. quantized_lab-0.26.1/src/quantized/web/assets/SavedFiguresSection-4DIWSvyP.js +1 -0
  76. quantized_lab-0.26.1/src/quantized/web/assets/SearchPanel-DM1FivOw.js +1 -0
  77. quantized_lab-0.26.1/src/quantized/web/assets/SeparateWorksheetsDialog-DQl1geHK.js +1 -0
  78. quantized_lab-0.26.1/src/quantized/web/assets/ShortcutsDialog-CGmwthC3.js +1 -0
  79. quantized_lab-0.26.1/src/quantized/web/assets/SmartFoldersSection-BVpsx7sG.js +1 -0
  80. quantized_lab-0.26.1/src/quantized/web/assets/SnapshotPlotWindow-BfqMnhiu.js +1 -0
  81. quantized_lab-0.26.1/src/quantized/web/assets/SplitDatasetDialog-CviU8EIC.js +1 -0
  82. quantized_lab-0.26.1/src/quantized/web/assets/SqliteQueryDialog-c5QVexNB.js +1 -0
  83. quantized_lab-0.26.1/src/quantized/web/assets/StatStage-VVUxtHC-.js +1 -0
  84. quantized_lab-0.26.0/src/quantized/web/assets/StatStageCanvas-BrjMdNEI.js → quantized_lab-0.26.1/src/quantized/web/assets/StatStageCanvas-BiiHm0gf.js +1 -1
  85. quantized_lab-0.26.1/src/quantized/web/assets/StatsChooserPanel-Dfnfc0ls.js +1 -0
  86. quantized_lab-0.26.1/src/quantized/web/assets/TabulatePanel-C6yUABPg.js +2 -0
  87. quantized_lab-0.26.1/src/quantized/web/assets/TextFormatHelp-BEas3IWJ.js +1 -0
  88. quantized_lab-0.26.1/src/quantized/web/assets/ToolWindow-CwcNSGJV.js +1 -0
  89. quantized_lab-0.26.1/src/quantized/web/assets/TrashPanel-CPXozVXi.js +1 -0
  90. quantized_lab-0.26.1/src/quantized/web/assets/VariabilityChartPanel-BZCggeaE.js +1 -0
  91. quantized_lab-0.26.0/src/quantized/web/assets/WaterfallView-BhCGTNCP.js → quantized_lab-0.26.1/src/quantized/web/assets/WaterfallView-3jos2AyY.js +1 -1
  92. quantized_lab-0.26.0/src/quantized/web/assets/WhatIsThis-CNZ5KZQ6.js → quantized_lab-0.26.1/src/quantized/web/assets/WhatIsThis-SPxuyWdO.js +1 -1
  93. quantized_lab-0.26.1/src/quantized/web/assets/Worksheet-bzsazV10.js +1 -0
  94. quantized_lab-0.26.1/src/quantized/web/assets/WorksheetPane-Coqb0tML.js +3 -0
  95. quantized_lab-0.26.0/src/quantized/web/assets/ZoneWell-Bn1QjmY1.js → quantized_lab-0.26.1/src/quantized/web/assets/ZoneWell-CT-awVNN.js +1 -1
  96. quantized_lab-0.26.0/src/quantized/web/assets/axisspec-DZ4Gcvcl.js → quantized_lab-0.26.1/src/quantized/web/assets/axisspec-TWz1i8XY.js +1 -1
  97. quantized_lab-0.26.0/src/quantized/web/assets/baseline-Pt-OfgJt.js → quantized_lab-0.26.1/src/quantized/web/assets/baseline-BGZKBesw.js +1 -1
  98. quantized_lab-0.26.0/src/quantized/web/assets/copyFigureCommand-DPCbv0BN.js → quantized_lab-0.26.1/src/quantized/web/assets/copyFigureCommand-RUOsMdSx.js +1 -1
  99. quantized_lab-0.26.1/src/quantized/web/assets/curvefit-CufuRMjA.js +1 -0
  100. quantized_lab-0.26.1/src/quantized/web/assets/datasetRowMenu-BumiRlMt.js +1 -0
  101. quantized_lab-0.26.0/src/quantized/web/assets/datasetsplit-jVwpwCuY.js → quantized_lab-0.26.1/src/quantized/web/assets/datasetsplit-CbtVn70n.js +1 -1
  102. quantized_lab-0.26.0/src/quantized/web/assets/diagnostics-ObaON_LH.js → quantized_lab-0.26.1/src/quantized/web/assets/diagnostics-_zzqO-uk.js +2 -2
  103. quantized_lab-0.26.1/src/quantized/web/assets/errorDetail-CvwyP3f2.js +1 -0
  104. quantized_lab-0.26.1/src/quantized/web/assets/errorbars-C7USt0BC.js +1 -0
  105. quantized_lab-0.26.0/src/quantized/web/assets/exportFigureCommand-D1p-WVdq.js → quantized_lab-0.26.1/src/quantized/web/assets/exportFigureCommand-Zv_h0B84.js +1 -1
  106. quantized_lab-0.26.1/src/quantized/web/assets/exportPageCommand-BbwC1F9g.js +1 -0
  107. quantized_lab-0.26.0/src/quantized/web/assets/figureCompatibility-6YMbE7aH.js → quantized_lab-0.26.1/src/quantized/web/assets/figureCompatibility-DReApAGl.js +1 -1
  108. quantized_lab-0.26.1/src/quantized/web/assets/figureDocument-BfyTbQPZ.js +1 -0
  109. quantized_lab-0.26.1/src/quantized/web/assets/figureSpec-D678o9IZ.js +1 -0
  110. quantized_lab-0.26.0/src/quantized/web/assets/figureSpecStage-Dk4LBc7g.js → quantized_lab-0.26.1/src/quantized/web/assets/figureSpecStage-DXAAn6G4.js +1 -1
  111. quantized_lab-0.26.0/src/quantized/web/assets/figures-B698B_-o.js → quantized_lab-0.26.1/src/quantized/web/assets/figures-BAiNWhDa.js +1 -1
  112. quantized_lab-0.26.0/src/quantized/web/assets/fitselectionActions-CCxoR2AI.js → quantized_lab-0.26.1/src/quantized/web/assets/fitselectionActions-Df8NVt5p.js +1 -1
  113. quantized_lab-0.26.1/src/quantized/web/assets/folderOps-BmU3ud_M.js +1 -0
  114. quantized_lab-0.26.0/src/quantized/web/assets/globalPlotRecipes-BOxSqoGm.js → quantized_lab-0.26.1/src/quantized/web/assets/globalPlotRecipes-DorrUN-8.js +1 -1
  115. quantized_lab-0.26.1/src/quantized/web/assets/index-BNUhGj4x.css +1 -0
  116. quantized_lab-0.26.1/src/quantized/web/assets/index-Bu9ms6dO.js +11 -0
  117. quantized_lab-0.26.1/src/quantized/web/assets/libraryDetails-BV9_0k81.js +1 -0
  118. quantized_lab-0.26.0/src/quantized/web/assets/magnetometry-CX4yqv4t.js → quantized_lab-0.26.1/src/quantized/web/assets/magnetometry-C_1mPB1I.js +1 -1
  119. quantized_lab-0.26.0/src/quantized/web/assets/merge-DujsXvOU.js → quantized_lab-0.26.1/src/quantized/web/assets/merge-DtJj7E_v.js +1 -1
  120. quantized_lab-0.26.0/src/quantized/web/assets/modeling-Du21uA0m.js → quantized_lab-0.26.1/src/quantized/web/assets/modeling-BDYDHZUc.js +1 -1
  121. quantized_lab-0.26.0/src/quantized/web/assets/originFigureSelection-DVb6NW1W.js → quantized_lab-0.26.1/src/quantized/web/assets/originFigureSelection-C_DqMqih.js +1 -1
  122. quantized_lab-0.26.0/src/quantized/web/assets/originSpatialPanels-DoajGR_o.js → quantized_lab-0.26.1/src/quantized/web/assets/originSpatialPanels-DefXIfqY.js +1 -1
  123. quantized_lab-0.26.1/src/quantized/web/assets/packProject-Cdj-InH7.js +2 -0
  124. quantized_lab-0.26.1/src/quantized/web/assets/packProjectCommands-yKM38SFb.js +2 -0
  125. quantized_lab-0.26.1/src/quantized/web/assets/packProjectRun-zWDHCU_A.js +1 -0
  126. quantized_lab-0.26.0/src/quantized/web/assets/pageDocumentActions-xZ5IqkGB.js → quantized_lab-0.26.1/src/quantized/web/assets/pageDocumentActions-BrMmfsuR.js +1 -1
  127. quantized_lab-0.26.0/src/quantized/web/assets/pageGreyscale-DnY2fdvR.js → quantized_lab-0.26.1/src/quantized/web/assets/pageGreyscale-C4cDGjyi.js +1 -1
  128. quantized_lab-0.26.1/src/quantized/web/assets/pageSetupCommand-BFZslmor.js +1 -0
  129. quantized_lab-0.26.1/src/quantized/web/assets/panelResolve-DS10px5C.js +1 -0
  130. quantized_lab-0.26.1/src/quantized/web/assets/parseWorkspaceFile-BXKSTJCc.js +1 -0
  131. quantized_lab-0.26.1/src/quantized/web/assets/peakMarkerHit-CXArvvVY.js +1 -0
  132. quantized_lab-0.26.0/src/quantized/web/assets/peakTableFit-CJ4tW63U.js → quantized_lab-0.26.1/src/quantized/web/assets/peakTableFit-BL8kC9Jt.js +1 -1
  133. quantized_lab-0.26.0/src/quantized/web/assets/peaks-DmEoQ7LI.js → quantized_lab-0.26.1/src/quantized/web/assets/peaks-D2RMsdC-.js +1 -1
  134. quantized_lab-0.26.0/src/quantized/web/assets/plotRecipe-DbhpRXw7.js → quantized_lab-0.26.1/src/quantized/web/assets/plotRecipe-Qs_d-NKj.js +1 -1
  135. quantized_lab-0.26.1/src/quantized/web/assets/plotRecipeApply-f9mShmjO.js +2 -0
  136. quantized_lab-0.26.1/src/quantized/web/assets/plotRecipeIO-DBeUw7mV.js +1 -0
  137. quantized_lab-0.26.0/src/quantized/web/assets/plotRecipeMatch-Bkam0Z3x.js → quantized_lab-0.26.1/src/quantized/web/assets/plotRecipeMatch-BBFnWWHy.js +1 -1
  138. quantized_lab-0.26.1/src/quantized/web/assets/plural-CnKl_Ak3.js +3 -0
  139. quantized_lab-0.26.0/src/quantized/web/assets/preload-helper-Czpn1I53.js → quantized_lab-0.26.1/src/quantized/web/assets/preload-helper-BZ1Pz5am.js +1 -1
  140. quantized_lab-0.26.0/src/quantized/web/assets/quickPlotTemplates-oDp3-HHl.js → quantized_lab-0.26.1/src/quantized/web/assets/quickPlotTemplates-DMdPH5H1.js +1 -1
  141. quantized_lab-0.26.1/src/quantized/web/assets/quickfit-CIOD9Jri.js +1 -0
  142. quantized_lab-0.26.0/src/quantized/web/assets/react-dom-DDfzmQVy.js → quantized_lab-0.26.1/src/quantized/web/assets/react-dom-DZbpVt_M.js +1 -1
  143. quantized_lab-0.26.0/src/quantized/web/assets/recipeIndex-rzO9nNzy.js → quantized_lab-0.26.1/src/quantized/web/assets/recipeIndex-B0d3MaXv.js +1 -1
  144. quantized_lab-0.26.1/src/quantized/web/assets/recipeManagerActions-jv6BOWuA.js +1 -0
  145. quantized_lab-0.26.1/src/quantized/web/assets/recordRecipeUse-3MTAQC5o.js +2 -0
  146. quantized_lab-0.26.1/src/quantized/web/assets/reimportAllRun-DyVzaPs8.js +1 -0
  147. quantized_lab-0.26.1/src/quantized/web/assets/relinkCommit-Cppq_RKm.js +1 -0
  148. quantized_lab-0.26.0/src/quantized/web/assets/rowSidecars-CdeDWwmc.js → quantized_lab-0.26.1/src/quantized/web/assets/rowSidecars-DAHl6z6r.js +1 -1
  149. quantized_lab-0.26.1/src/quantized/web/assets/rowstate-CAm8HGoq.js +1 -0
  150. quantized_lab-0.26.1/src/quantized/web/assets/runTemplate-Cx9P230U.js +1 -0
  151. quantized_lab-0.26.1/src/quantized/web/assets/saveFigureAsRecipe-C_OUc4Lb.js +2 -0
  152. quantized_lab-0.26.0/src/quantized/web/assets/shapeHit-CWTHpAPr.js → quantized_lab-0.26.1/src/quantized/web/assets/shapeHit-BWKoKfgO.js +1 -1
  153. quantized_lab-0.26.0/src/quantized/web/assets/stats-BOn_SgNJ.js → quantized_lab-0.26.1/src/quantized/web/assets/stats-DCwltJSx.js +1 -1
  154. quantized_lab-0.26.0/src/quantized/web/assets/trash-DHaksMjk.js → quantized_lab-0.26.1/src/quantized/web/assets/trash-pAExwJ91.js +2 -2
  155. quantized_lab-0.26.0/src/quantized/web/assets/trashRestore-DA-z_T0Q.js → quantized_lab-0.26.1/src/quantized/web/assets/trashRestore-9Tuhx0tE.js +1 -1
  156. quantized_lab-0.26.1/src/quantized/web/assets/uplotOpts-Dw7XBg-j.js +1 -0
  157. quantized_lab-0.26.1/src/quantized/web/assets/uplotShapes-X8ii3BfX.js +1 -0
  158. quantized_lab-0.26.0/src/quantized/web/assets/useByPartition-CXaALAn5.js → quantized_lab-0.26.1/src/quantized/web/assets/useByPartition-DdWxPaDD.js +1 -1
  159. quantized_lab-0.26.1/src/quantized/web/assets/useCutLanding-33AQFIgm.js +1 -0
  160. quantized_lab-0.26.0/src/quantized/web/assets/useDialogFocus-D1ftVZg9.js → quantized_lab-0.26.1/src/quantized/web/assets/useDialogFocus-C74ZJt54.js +1 -1
  161. quantized_lab-0.26.1/src/quantized/web/assets/useFigureBuilder-xy3qwfYt.js +1 -0
  162. quantized_lab-0.26.1/src/quantized/web/assets/useLibraryStore-Canbh4B-.js +1 -0
  163. quantized_lab-0.26.0/src/quantized/web/assets/useListVirtualization-Cl-u45F8.js → quantized_lab-0.26.1/src/quantized/web/assets/useListVirtualization-BuHXmcpA.js +1 -1
  164. quantized_lab-0.26.1/src/quantized/web/assets/useMapColorLimitsField-BvQhCvIB.js +1 -0
  165. quantized_lab-0.26.0/src/quantized/web/assets/useMultiPanelStage-ChpnG8mu.js → quantized_lab-0.26.1/src/quantized/web/assets/useMultiPanelStage-D3NVnIyQ.js +1 -1
  166. quantized_lab-0.26.1/src/quantized/web/assets/useRoiCuts-q6tgaeEi.js +1 -0
  167. quantized_lab-0.26.1/src/quantized/web/assets/useStatStage-eEwhH4h_.js +1 -0
  168. quantized_lab-0.26.1/src/quantized/web/assets/workbookRowMenu-DnQXQT8P.js +1 -0
  169. quantized_lab-0.26.0/src/quantized/web/assets/workbookTransfer-DF96LSEo.js → quantized_lab-0.26.1/src/quantized/web/assets/workbookTransfer-CJGGJm_2.js +1 -1
  170. quantized_lab-0.26.1/src/quantized/web/assets/worksheetTransformCommands-ERSsCAoS.js +2 -0
  171. quantized_lab-0.26.0/src/quantized/web/assets/worksheetTransforms-CEYaaaHg.js → quantized_lab-0.26.1/src/quantized/web/assets/worksheetTransforms-BWcNh9Jg.js +1 -1
  172. quantized_lab-0.26.1/src/quantized/web/assets/workspaceParse.worker-B-EdbJuZ.js +1 -0
  173. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/index.html +25 -31
  174. quantized_lab-0.26.0/src/quantized/web/assets/BackgroundPlotWindow-Cb2B6750.js +0 -1
  175. quantized_lab-0.26.0/src/quantized/web/assets/BaselinePanel-tCZWG5Pz.js +0 -1
  176. quantized_lab-0.26.0/src/quantized/web/assets/CalcOnlyApp-CSkEPxiL.js +0 -1
  177. quantized_lab-0.26.0/src/quantized/web/assets/CalculatorsContent-DuAffJm_.js +0 -8
  178. quantized_lab-0.26.0/src/quantized/web/assets/CalculatorsPanel-fSdGLd3E.js +0 -1
  179. quantized_lab-0.26.0/src/quantized/web/assets/CollectionsSection-DzYGLqNo.js +0 -1
  180. quantized_lab-0.26.0/src/quantized/web/assets/ColumnSwitcher-BscfU05y.js +0 -1
  181. quantized_lab-0.26.0/src/quantized/web/assets/CombineWorkbooksDialog-CSFamCUb.js +0 -1
  182. quantized_lab-0.26.0/src/quantized/web/assets/CurveFitPanel-DCt1wDzh.js +0 -1
  183. quantized_lab-0.26.0/src/quantized/web/assets/DataFilterPanel-D3W8WgNV.js +0 -1
  184. quantized_lab-0.26.0/src/quantized/web/assets/DatasetMathPanel-BYWqbaq1.js +0 -1
  185. quantized_lab-0.26.0/src/quantized/web/assets/DigitizerView-lN5nnSf1.js +0 -1
  186. quantized_lab-0.26.0/src/quantized/web/assets/DistributionPanel-Dq1yRBMK.js +0 -1
  187. quantized_lab-0.26.0/src/quantized/web/assets/EditableFiguresSection-CiJDEj0e.js +0 -2
  188. quantized_lab-0.26.0/src/quantized/web/assets/FigureBuilderView-D0t4_BcB.js +0 -1
  189. quantized_lab-0.26.0/src/quantized/web/assets/FigurePageView-DV1XlvB7.js +0 -2
  190. quantized_lab-0.26.0/src/quantized/web/assets/FigureRow-DPQQtCs5.js +0 -2
  191. quantized_lab-0.26.0/src/quantized/web/assets/FiguresSection-KBvGC1XN.js +0 -1
  192. quantized_lab-0.26.0/src/quantized/web/assets/FitYByXPanel-m8hw_oTR.js +0 -1
  193. quantized_lab-0.26.0/src/quantized/web/assets/GraphBuilderPanel-CyP7qfNy.js +0 -1
  194. quantized_lab-0.26.0/src/quantized/web/assets/GraphPreview-CbuxAsPQ.js +0 -1
  195. quantized_lab-0.26.0/src/quantized/web/assets/HelpDialog-D-FLvDAC.js +0 -1
  196. quantized_lab-0.26.0/src/quantized/web/assets/HysteresisPanel-BG2qFFKy.js +0 -1
  197. quantized_lab-0.26.0/src/quantized/web/assets/ImportWizardPanel-BN6TckG-.js +0 -1
  198. quantized_lab-0.26.0/src/quantized/web/assets/Inspector-DShe0H7d.js +0 -2
  199. quantized_lab-0.26.0/src/quantized/web/assets/LevelOrderPanel-DDh9IRMl.js +0 -1
  200. quantized_lab-0.26.0/src/quantized/web/assets/LibraryDetails-D1-LgNWY.js +0 -1
  201. quantized_lab-0.26.0/src/quantized/web/assets/LibraryTree-DYNckxg2.js +0 -1
  202. quantized_lab-0.26.0/src/quantized/web/assets/LibraryWorkspace-CAwAOLq6.js +0 -1
  203. quantized_lab-0.26.0/src/quantized/web/assets/MagToolsPanel-C5okeE7F.js +0 -1
  204. quantized_lab-0.26.0/src/quantized/web/assets/MapStage-BtZz5t4R.js +0 -1
  205. quantized_lab-0.26.0/src/quantized/web/assets/MultiPanelStage-noDoOgre.js +0 -1
  206. quantized_lab-0.26.0/src/quantized/web/assets/MultiSelectBar-ZytMnGJI.js +0 -2
  207. quantized_lab-0.26.0/src/quantized/web/assets/MultivarPanel-UrfRnpRN.js +0 -2
  208. quantized_lab-0.26.0/src/quantized/web/assets/OriginFidelitySection-Bl1Sq7Rp.js +0 -1
  209. quantized_lab-0.26.0/src/quantized/web/assets/OriginSavedPreviewWindow-BOFe2SnW.js +0 -1
  210. quantized_lab-0.26.0/src/quantized/web/assets/OutlierScreeningPanel-C5ngFO5l.js +0 -1
  211. quantized_lab-0.26.0/src/quantized/web/assets/PackProjectPanel-DQWKHscl.js +0 -1
  212. quantized_lab-0.26.0/src/quantized/web/assets/PagesSection-Cs5vD_kr.js +0 -2
  213. quantized_lab-0.26.0/src/quantized/web/assets/PanelPlotWindow-BI1yaGmt.js +0 -1
  214. quantized_lab-0.26.0/src/quantized/web/assets/PeakWizardPanel-BjKHtWoc.js +0 -1
  215. quantized_lab-0.26.0/src/quantized/web/assets/PeaksPanel-Ck8Zq_Vm.js +0 -1
  216. quantized_lab-0.26.0/src/quantized/web/assets/PipelinePanel-B6YWwfW9.js +0 -1
  217. quantized_lab-0.26.0/src/quantized/web/assets/PlotContextMenu-Bx3UPzUf.js +0 -1
  218. quantized_lab-0.26.0/src/quantized/web/assets/PlotRecipeApplyDialog-whQSWOlZ.js +0 -1
  219. quantized_lab-0.26.0/src/quantized/web/assets/PolarStage-CPG6mku9.js +0 -1
  220. quantized_lab-0.26.0/src/quantized/web/assets/PreferencesDialog-DKrvfZQu.js +0 -1
  221. quantized_lab-0.26.0/src/quantized/web/assets/QuickFigureBuilderWorkspace-CfhsIfZO.js +0 -1
  222. quantized_lab-0.26.0/src/quantized/web/assets/QuickPlotWithDialog-Ru5LjWqZ.js +0 -1
  223. quantized_lab-0.26.0/src/quantized/web/assets/RecipeLibraryPanel-B6paLoa_.js +0 -2
  224. quantized_lab-0.26.0/src/quantized/web/assets/RecipeManagerPanel-CQk1d7g-.js +0 -1
  225. quantized_lab-0.26.0/src/quantized/web/assets/RecodePanel-DntNg675.js +0 -1
  226. quantized_lab-0.26.0/src/quantized/web/assets/RecoveryChoiceDialog-Cc_K5D6k.js +0 -1
  227. quantized_lab-0.26.0/src/quantized/web/assets/ReductionsPanel-DOHW_AJR.js +0 -1
  228. quantized_lab-0.26.0/src/quantized/web/assets/ReflView-C4if0ngk.js +0 -1
  229. quantized_lab-0.26.0/src/quantized/web/assets/ReflectivityPanel-B31fiMUL.js +0 -1
  230. quantized_lab-0.26.0/src/quantized/web/assets/ReimportAllDialog-CtpXWhXd.js +0 -1
  231. quantized_lab-0.26.0/src/quantized/web/assets/RelinkPanel-CshrlobI.js +0 -1
  232. quantized_lab-0.26.0/src/quantized/web/assets/ReportPanel-CCMZgCbk.js +0 -1
  233. quantized_lab-0.26.0/src/quantized/web/assets/ReportsSection-DIgTK4F3.js +0 -1
  234. quantized_lab-0.26.0/src/quantized/web/assets/RoiCutsPanel-Df8lxkKM.js +0 -2
  235. quantized_lab-0.26.0/src/quantized/web/assets/RsmPanel-YPt0R7xR.js +0 -1
  236. quantized_lab-0.26.0/src/quantized/web/assets/SavedFiguresSection-CqK0TQ1Y.js +0 -1
  237. quantized_lab-0.26.0/src/quantized/web/assets/SearchPanel-DHN2r8ha.js +0 -1
  238. quantized_lab-0.26.0/src/quantized/web/assets/SeparateWorksheetsDialog-CWaBy4uR.js +0 -1
  239. quantized_lab-0.26.0/src/quantized/web/assets/ShortcutsDialog-C8NF66gB.js +0 -1
  240. quantized_lab-0.26.0/src/quantized/web/assets/SmartFoldersSection-B0AqdfzG.js +0 -1
  241. quantized_lab-0.26.0/src/quantized/web/assets/SnapshotPlotWindow-B5L5gM6k.js +0 -1
  242. quantized_lab-0.26.0/src/quantized/web/assets/SplitDatasetDialog-Dhfyo7_i.js +0 -1
  243. quantized_lab-0.26.0/src/quantized/web/assets/SqliteQueryDialog-1F-EMoiT.js +0 -1
  244. quantized_lab-0.26.0/src/quantized/web/assets/StatStage-CkFXdrSE.js +0 -1
  245. quantized_lab-0.26.0/src/quantized/web/assets/StatsChooserPanel-DLIakqbt.js +0 -1
  246. quantized_lab-0.26.0/src/quantized/web/assets/TabulatePanel-B3SrJSnq.js +0 -2
  247. quantized_lab-0.26.0/src/quantized/web/assets/TextFormatHelp-CegMJi1C.js +0 -1
  248. quantized_lab-0.26.0/src/quantized/web/assets/ToolWindow-DNa3_-7m.js +0 -1
  249. quantized_lab-0.26.0/src/quantized/web/assets/TrashPanel-BxBxsdId.js +0 -1
  250. quantized_lab-0.26.0/src/quantized/web/assets/VariabilityChartPanel-DCWSAmWv.js +0 -1
  251. quantized_lab-0.26.0/src/quantized/web/assets/Worksheet-Bchnfup1.js +0 -1
  252. quantized_lab-0.26.0/src/quantized/web/assets/WorksheetPane-DWy8pcxj.js +0 -3
  253. quantized_lab-0.26.0/src/quantized/web/assets/combineDialog-BG-kbyxc.js +0 -1
  254. quantized_lab-0.26.0/src/quantized/web/assets/contextActions-CNtyChLx.js +0 -2
  255. quantized_lab-0.26.0/src/quantized/web/assets/curvefit-DoEXIwk3.js +0 -1
  256. quantized_lab-0.26.0/src/quantized/web/assets/dnd-DjPpWs4t.js +0 -1
  257. quantized_lab-0.26.0/src/quantized/web/assets/errorbars-DD5Hd63O.js +0 -1
  258. quantized_lab-0.26.0/src/quantized/web/assets/exportPageCommand-Cx9ZtlmT.js +0 -1
  259. quantized_lab-0.26.0/src/quantized/web/assets/figureDocument-DcIT7FTP.js +0 -1
  260. quantized_lab-0.26.0/src/quantized/web/assets/figureSpec-kS9d8Mst.js +0 -1
  261. quantized_lab-0.26.0/src/quantized/web/assets/folderOps-Cd2ZYcX7.js +0 -1
  262. quantized_lab-0.26.0/src/quantized/web/assets/index-CEYbjyf2.css +0 -1
  263. quantized_lab-0.26.0/src/quantized/web/assets/index-Ch3GryeW.js +0 -10
  264. quantized_lab-0.26.0/src/quantized/web/assets/libraryDetails-DtEMrYkE.js +0 -1
  265. quantized_lab-0.26.0/src/quantized/web/assets/packProject-Zs3v-r2Z.js +0 -2
  266. quantized_lab-0.26.0/src/quantized/web/assets/packProjectCommands-3PkbEfcH.js +0 -2
  267. quantized_lab-0.26.0/src/quantized/web/assets/packProjectRun-BOx_yTd4.js +0 -1
  268. quantized_lab-0.26.0/src/quantized/web/assets/pageSetupCommand-DWV4J9TG.js +0 -1
  269. quantized_lab-0.26.0/src/quantized/web/assets/panelResolve-zKHP9ZaA.js +0 -1
  270. quantized_lab-0.26.0/src/quantized/web/assets/parseWorkspaceFile-hxjyKCc8.js +0 -1
  271. quantized_lab-0.26.0/src/quantized/web/assets/peakMarkerHit-CtJLcBau.js +0 -1
  272. quantized_lab-0.26.0/src/quantized/web/assets/plotInNewWindow-ZaZozXS4.js +0 -1
  273. quantized_lab-0.26.0/src/quantized/web/assets/plotRecipeApply-BCvoDTN3.js +0 -2
  274. quantized_lab-0.26.0/src/quantized/web/assets/plotRecipeIO-DhztDQ_v.js +0 -1
  275. quantized_lab-0.26.0/src/quantized/web/assets/plotdata-D-Bh3WVm.js +0 -1
  276. quantized_lab-0.26.0/src/quantized/web/assets/plural-DZ1uV0WM.js +0 -3
  277. quantized_lab-0.26.0/src/quantized/web/assets/quickfit-DcQdUkGj.js +0 -1
  278. quantized_lab-0.26.0/src/quantized/web/assets/recipeManagerActions-GIM74Oef.js +0 -1
  279. quantized_lab-0.26.0/src/quantized/web/assets/recordRecipeUse-HjHRRyO7.js +0 -2
  280. quantized_lab-0.26.0/src/quantized/web/assets/reimportAllRun-387E_aqK.js +0 -1
  281. quantized_lab-0.26.0/src/quantized/web/assets/relinkCommit-AleSRQAq.js +0 -1
  282. quantized_lab-0.26.0/src/quantized/web/assets/rowstate-4BE_1Yry.js +0 -1
  283. quantized_lab-0.26.0/src/quantized/web/assets/runTemplate-BCXMyiIT.js +0 -1
  284. quantized_lab-0.26.0/src/quantized/web/assets/saveFigureAsRecipe-CA1WEU6C.js +0 -2
  285. quantized_lab-0.26.0/src/quantized/web/assets/template-B3UZtwYT.js +0 -2
  286. quantized_lab-0.26.0/src/quantized/web/assets/uplotOpts-DnrTDLSU.js +0 -1
  287. quantized_lab-0.26.0/src/quantized/web/assets/uplotShapes-DuJv18Mm.js +0 -1
  288. quantized_lab-0.26.0/src/quantized/web/assets/useApp-Dl96Fupu.js +0 -2
  289. quantized_lab-0.26.0/src/quantized/web/assets/useCutLanding-DGpxTNvh.js +0 -1
  290. quantized_lab-0.26.0/src/quantized/web/assets/useFigureBuilder-SiFKgCP2.js +0 -1
  291. quantized_lab-0.26.0/src/quantized/web/assets/useLibraryStore-BhcgXGyv.js +0 -1
  292. quantized_lab-0.26.0/src/quantized/web/assets/useMapColorLimitsField-CEhj8l3L.js +0 -1
  293. quantized_lab-0.26.0/src/quantized/web/assets/useRoiCuts-zHekI89r.js +0 -1
  294. quantized_lab-0.26.0/src/quantized/web/assets/useStatStage-Df7DJ_4Q.js +0 -1
  295. quantized_lab-0.26.0/src/quantized/web/assets/workbookRowMenu-D3Ujyoh2.js +0 -1
  296. quantized_lab-0.26.0/src/quantized/web/assets/worksheetTransformCommands-BnQgciZC.js +0 -2
  297. quantized_lab-0.26.0/src/quantized/web/assets/workspaceParse.worker-BwfJHa6h.js +0 -1
  298. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/.gitignore +0 -0
  299. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/LICENSE +0 -0
  300. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/NOTICE +0 -0
  301. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/README.md +0 -0
  302. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/assets/branding/README.md +0 -0
  303. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/docs/theory/README.md +0 -0
  304. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/__main__.py +0 -0
  305. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/api.py +0 -0
  306. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/app.py +0 -0
  307. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/__init__.py +0 -0
  308. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/_clipfit.py +0 -0
  309. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/_grid_detect.py +0 -0
  310. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/_natural_neighbor.py +0 -0
  311. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/_rsm_grid.py +0 -0
  312. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/_semiconductor_materials.py +0 -0
  313. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/aggregate.py +0 -0
  314. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/backgrounds.py +0 -0
  315. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/baseline.py +0 -0
  316. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/batch_fit.py +0 -0
  317. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/boxcut.py +0 -0
  318. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/constants.py +0 -0
  319. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/corrections.py +0 -0
  320. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/crystallography.py +0 -0
  321. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/decimate.py +0 -0
  322. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/diffusion.py +0 -0
  323. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/electrical.py +0 -0
  324. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/electrochemistry.py +0 -0
  325. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/element_data.json +0 -0
  326. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/element_data.py +0 -0
  327. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/errors.py +0 -0
  328. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure.py +0 -0
  329. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_break.py +0 -0
  330. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_categorical.py +0 -0
  331. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_colorscatter.py +0 -0
  332. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_corner.py +0 -0
  333. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_decor.py +0 -0
  334. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_errorbars.py +0 -0
  335. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_facets.py +0 -0
  336. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_facets_map.py +0 -0
  337. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_field.py +0 -0
  338. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_greyscale.py +0 -0
  339. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_group_styles.py +0 -0
  340. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_hitmap.py +0 -0
  341. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_labels.py +0 -0
  342. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_map.py +0 -0
  343. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_multivar.py +0 -0
  344. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_overrides.py +0 -0
  345. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_page.py +0 -0
  346. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_page_facets.py +0 -0
  347. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_page_layout.py +0 -0
  348. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_page_panel_labels.py +0 -0
  349. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_page_validate.py +0 -0
  350. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_scale.py +0 -0
  351. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_shapes.py +0 -0
  352. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_statplots.py +0 -0
  353. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_styles.py +0 -0
  354. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_ternary.py +0 -0
  355. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_ticks.py +0 -0
  356. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/figure_y2.py +0 -0
  357. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_autoguess.py +0 -0
  358. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_bootstrap.py +0 -0
  359. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_bumps.py +0 -0
  360. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_constraints.py +0 -0
  361. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_equation.py +0 -0
  362. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_findxy.py +0 -0
  363. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_models.py +0 -0
  364. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_models_special.py +0 -0
  365. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_odr.py +0 -0
  366. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_scan.py +0 -0
  367. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fit_stats.py +0 -0
  368. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/fitting.py +0 -0
  369. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/formula.py +0 -0
  370. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/global_curve_fit.py +0 -0
  371. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/global_fit.py +0 -0
  372. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/interp2d.py +0 -0
  373. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/ion_range.py +0 -0
  374. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/linecut.py +0 -0
  375. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/magnetic.py +0 -0
  376. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/magnetometry.py +0 -0
  377. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/map.py +0 -0
  378. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/mcmc.py +0 -0
  379. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/miller_bravais.py +0 -0
  380. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/optics.py +0 -0
  381. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/pawley.py +0 -0
  382. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/peak_batch.py +0 -0
  383. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/peak_fit.py +0 -0
  384. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/peak_integrate.py +0 -0
  385. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/peak_multifit.py +0 -0
  386. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/peak_track.py +0 -0
  387. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/peaks.py +0 -0
  388. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/peakshapes.py +0 -0
  389. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/plane_spacings.py +0 -0
  390. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/plotting.py +0 -0
  391. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/processing.py +0 -0
  392. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/qspace.py +0 -0
  393. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/reductions.py +0 -0
  394. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/reductions_fft.py +0 -0
  395. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/refl_sld_presets.json +0 -0
  396. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/reflectivity.py +0 -0
  397. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/registry.py +0 -0
  398. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/relaxation.py +0 -0
  399. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/report.py +0 -0
  400. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/report_emit.py +0 -0
  401. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/resample.py +0 -0
  402. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/rsm.py +0 -0
  403. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/rsm_analyze.py +0 -0
  404. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/sectorcut.py +0 -0
  405. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/semiconductor.py +0 -0
  406. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/sld.py +0 -0
  407. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/sld_formula.py +0 -0
  408. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/spectral.py +0 -0
  409. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/statplots.py +0 -0
  410. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats.py +0 -0
  411. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_anova2.py +0 -0
  412. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_anova_ext.py +0 -0
  413. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_band.py +0 -0
  414. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_contingency.py +0 -0
  415. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_dist.py +0 -0
  416. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_glm.py +0 -0
  417. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_multivar.py +0 -0
  418. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_outliers.py +0 -0
  419. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_roc.py +0 -0
  420. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_survival.py +0 -0
  421. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_tests.py +0 -0
  422. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/stats_varcomp.py +0 -0
  423. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/substrates.py +0 -0
  424. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/superconductor.py +0 -0
  425. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/surface_fit.py +0 -0
  426. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/surface_models.py +0 -0
  427. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/thermal.py +0 -0
  428. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/thin_film.py +0 -0
  429. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/unit_convert.py +0 -0
  430. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/units.py +0 -0
  431. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/units_data.py +0 -0
  432. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/vacuum.py +0 -0
  433. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/calc/xray.py +0 -0
  434. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/cat_levels.py +0 -0
  435. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/cli.py +0 -0
  436. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/client.py +0 -0
  437. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/datastruct.py +0 -0
  438. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_bridge.py +0 -0
  439. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_bridge_common.py +0 -0
  440. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_bridge_dialogs.py +0 -0
  441. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_bridge_pack.py +0 -0
  442. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_bridge_pack_state.py +0 -0
  443. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_consent.py +0 -0
  444. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_project_file.py +0 -0
  445. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_project_lock.py +0 -0
  446. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_project_lock_oslock.py +0 -0
  447. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_project_lock_record.py +0 -0
  448. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_project_lock_write.py +0 -0
  449. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/desktop_source_probe.py +0 -0
  450. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/__init__.py +0 -0
  451. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/_delimited_fast.py +0 -0
  452. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/_delimited_layout.py +0 -0
  453. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/_hdf5_layout.py +0 -0
  454. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/_jcamp_asdf.py +0 -0
  455. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/_xrdml_scan.py +0 -0
  456. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/base.py +0 -0
  457. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/bruker_brml.py +0 -0
  458. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/bruker_raw.py +0 -0
  459. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/cif.py +0 -0
  460. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/consolidated.py +0 -0
  461. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/delimited.py +0 -0
  462. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/error_binding_suggestions.py +0 -0
  463. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/error_inference.py +0 -0
  464. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/error_label_candidates.py +0 -0
  465. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/error_label_classify.py +0 -0
  466. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/excel.py +0 -0
  467. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/hdf5.py +0 -0
  468. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/import_categorical_guards.py +0 -0
  469. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/import_error_bindings.py +0 -0
  470. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/import_filters.py +0 -0
  471. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/import_metadata.py +0 -0
  472. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/import_parse.py +0 -0
  473. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/import_preview.py +0 -0
  474. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/jcamp.py +0 -0
  475. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/lakeshore.py +0 -0
  476. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/ncnr.py +0 -0
  477. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/netcdf.py +0 -0
  478. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/opus.py +0 -0
  479. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin.py +0 -0
  480. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_com.py +0 -0
  481. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/__init__.py +0 -0
  482. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/annotation_marks.py +0 -0
  483. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/container.py +0 -0
  484. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/curve_style_color.py +0 -0
  485. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/fidelity.py +0 -0
  486. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/figure_geometry.py +0 -0
  487. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/figure_layers.py +0 -0
  488. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/figure_text.py +0 -0
  489. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/figures.py +0 -0
  490. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/figures_opju.py +0 -0
  491. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/graph_preview.py +0 -0
  492. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/notes.py +0 -0
  493. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opj.py +0 -0
  494. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opj_curves.py +0 -0
  495. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opj_shapes.py +0 -0
  496. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju.py +0 -0
  497. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_axis_real_form.py +0 -0
  498. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_axis_specimen_form.py +0 -0
  499. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_codec.py +0 -0
  500. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_curves.py +0 -0
  501. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_curves_allcols.py +0 -0
  502. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_figure_curves.py +0 -0
  503. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_figure_text.py +0 -0
  504. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/opju_reports.py +0 -0
  505. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/origin_richtext.py +0 -0
  506. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/preview.py +0 -0
  507. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/templates.py +0 -0
  508. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/tree.py +0 -0
  509. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/tree_opju.py +0 -0
  510. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/windows.py +0 -0
  511. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/windows_opju.py +0 -0
  512. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/writer.py +0 -0
  513. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/origin_project/writer_blocks.py +0 -0
  514. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/qd.py +0 -0
  515. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/refl1d.py +0 -0
  516. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/registry.py +0 -0
  517. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/report_export.py +0 -0
  518. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/rigaku.py +0 -0
  519. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/sims.py +0 -0
  520. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/spc.py +0 -0
  521. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/sqlite_query.py +0 -0
  522. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/technique.py +0 -0
  523. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/xrd_csv.py +0 -0
  524. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/io/xrdml.py +0 -0
  525. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/jobs.py +0 -0
  526. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/plugins/__init__.py +0 -0
  527. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/plugins/contract.py +0 -0
  528. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/plugins/loader.py +0 -0
  529. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/plugins/steps.py +0 -0
  530. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/__init__.py +0 -0
  531. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/atomic_rename.py +0 -0
  532. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/copy_stream.py +0 -0
  533. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/copying.py +0 -0
  534. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/grouping.py +0 -0
  535. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/layout.py +0 -0
  536. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/manifest.py +0 -0
  537. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/naming.py +0 -0
  538. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/pack.py +0 -0
  539. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/project_rewrite.py +0 -0
  540. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/publish.py +0 -0
  541. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/portable/staging.py +0 -0
  542. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/__init__.py +0 -0
  543. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/_bookcache.py +0 -0
  544. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/_datasetcache.py +0 -0
  545. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/_errors.py +0 -0
  546. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/_export_common.py +0 -0
  547. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/_payload.py +0 -0
  548. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/_uploadcache.py +0 -0
  549. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/_uploadstream.py +0 -0
  550. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/aggregate.py +0 -0
  551. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/baseline.py +0 -0
  552. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/books.py +0 -0
  553. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/calc.py +0 -0
  554. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/corrections.py +0 -0
  555. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/crystallography.py +0 -0
  556. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/database.py +0 -0
  557. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/diffusion.py +0 -0
  558. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/electrical.py +0 -0
  559. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/electrochemistry.py +0 -0
  560. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export.py +0 -0
  561. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export_figures.py +0 -0
  562. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export_figures_aux.py +0 -0
  563. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export_figures_labels.py +0 -0
  564. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export_figures_schema.py +0 -0
  565. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export_multivar.py +0 -0
  566. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export_page.py +0 -0
  567. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/export_statplots.py +0 -0
  568. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/fitting.py +0 -0
  569. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/fitting_bumps.py +0 -0
  570. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/import_template.py +0 -0
  571. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/import_wizard.py +0 -0
  572. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/jobs_api.py +0 -0
  573. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/magnetic.py +0 -0
  574. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/optics.py +0 -0
  575. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/parsers.py +0 -0
  576. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/peaks.py +0 -0
  577. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/plot.py +0 -0
  578. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/reductions.py +0 -0
  579. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/reference.py +0 -0
  580. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/reflectivity.py +0 -0
  581. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/report_export.py +0 -0
  582. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/rsm.py +0 -0
  583. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/samples.py +0 -0
  584. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/semiconductor.py +0 -0
  585. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/sld.py +0 -0
  586. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/spectral.py +0 -0
  587. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/statplots.py +0 -0
  588. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/stats.py +0 -0
  589. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/stats_design.py +0 -0
  590. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/stats_outliers.py +0 -0
  591. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/stats_varcomp.py +0 -0
  592. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/substrates.py +0 -0
  593. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/superconductor.py +0 -0
  594. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/thermal.py +0 -0
  595. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/thin_film.py +0 -0
  596. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/vacuum.py +0 -0
  597. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/routes/xray.py +0 -0
  598. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/row_sidecars.py +0 -0
  599. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/samples/demo_vsm.csv +0 -0
  600. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/security.py +0 -0
  601. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/server_launch.py +0 -0
  602. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/BufferedNumberField-DMBkaSb6.js +0 -0
  603. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/Card-f1DjIZuX.js +0 -0
  604. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/Checkbox-DJkTxszS.js +0 -0
  605. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/DataTable-BUsp9T89.js +0 -0
  606. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/IconButton-Coh25Dic.js +0 -0
  607. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/JetBrainsMono-Bold-CUogYd9I.woff2 +0 -0
  608. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/JetBrainsMono-Regular-CA-Os4ii.woff2 +0 -0
  609. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/MetaRow-BdF1fLAJ.js +0 -0
  610. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/NumberField-ClCJO6V-.js +0 -0
  611. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/Pill-CWRal9q7.js +0 -0
  612. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/SegmentedControl-CR1JRq0i.js +0 -0
  613. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/SliderRow-B3FcajZK.js +0 -0
  614. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/Switch-B51vKMPs.js +0 -0
  615. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/TabulateTable-B0zhohRN.js +0 -0
  616. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/annotationTextDialog-ClEDuPrm.js +0 -0
  617. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/autosaveGenerations-B023G-vn.js +0 -0
  618. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/browserLockProvider-WonU-LkS.js +0 -0
  619. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/clipboard-02oM0LWi.js +0 -0
  620. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/desktopBridge-DnoGkBQK.js +0 -0
  621. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/desktopLockProvider-B2FqTnr5.js +0 -0
  622. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/desktopRelinkBridge-DtfJyZAw.js +0 -0
  623. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/distribution-DtRUmVv3.js +0 -0
  624. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/exportActive-BOETgoQm.js +0 -0
  625. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/figureDocumentReimport-CcKuldgP.js +0 -0
  626. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/fileCommandsLazy-DJ9oxm8H.js +0 -0
  627. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/fitmodels-B_enYcup.js +0 -0
  628. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/format-wNo0e3_y.js +0 -0
  629. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/formatBytes-BPCGNWDJ.js +0 -0
  630. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/gestureCancel-CIoXlFFV.js +0 -0
  631. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/gridwindow-DITcrjM7.js +0 -0
  632. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/help-SyZMZh-E.js +0 -0
  633. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/jitter-WCHwU_Li.js +0 -0
  634. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/jsx-runtime-NZYk81nU.js +0 -0
  635. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/labelRows-BbLP8H_v.js +0 -0
  636. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/lockState-Ur5JH-bI.js +0 -0
  637. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/markers-IElxdZc4.js +0 -0
  638. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/originFidelity-zQ_uQ_ci.js +0 -0
  639. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/originFigures-BumquS0h.js +0 -0
  640. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/pagesetup-Z1HdoaJV.js +0 -0
  641. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/panelLayout-DizjSWgK.js +0 -0
  642. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/peakwizard-D_l5I-Jw.js +0 -0
  643. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/pendingOps-DgJ0jAs4.js +0 -0
  644. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/primitives-ChiQwT3D.js +0 -0
  645. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/quickPlotWithDialog-Do0LVz-2.js +0 -0
  646. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/react-C5lyt4z4.js +0 -0
  647. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/relink-Bw3O17OU.js +0 -0
  648. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/relinkPreview-BmzAif3e.js +0 -0
  649. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/rolldown-runtime-hePW80VL.js +0 -0
  650. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/techniqueDefaults-R0WO3YZo.js +0 -0
  651. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/tickFormat-DhmvIZc_.js +0 -0
  652. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/toasts-v4ZA--Hu.js +0 -0
  653. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/uPlot-CnsZ1jie.css +0 -0
  654. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/uPlot.min-CWikSVZk.js +0 -0
  655. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/workbookIds-DVtAJq88.js +0 -0
  656. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/assets/workbooks-C5xuHiEZ.js +0 -0
  657. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/favicon.png +0 -0
  658. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/src/quantized/web/loading.html +0 -0
  659. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/tools/origin_compare/README.md +0 -0
  660. {quantized_lab-0.26.0 → quantized_lab-0.26.1}/tools/visual/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: quantized-lab
3
- Version: 0.26.0
3
+ Version: 0.26.1
4
4
  Summary: Plot, analyze, and publish lab data - magnetometry, XRD, reflectometry - with OriginPro file interop, golden-verified analysis, and reproducible pipelines.
5
5
  Project-URL: Homepage, https://github.com/pquarterman17/quantized
6
6
  Project-URL: Documentation, https://github.com/pquarterman17/quantized/wiki
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "quantized-lab"
3
- version = "0.26.0"
3
+ version = "0.26.1"
4
4
  description = "Plot, analyze, and publish lab data - magnetometry, XRD, reflectometry - with OriginPro file interop, golden-verified analysis, and reproducible pipelines."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -7,5 +7,5 @@ Layered, enforced architecture (see CLAUDE.md):
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- __version__ = "0.26.0"
10
+ __version__ = "0.26.1"
11
11
  __all__ = ["__version__"]
@@ -1,6 +1,15 @@
1
1
  """Thin magnetometry routes. Wraps ``calc.magnetometry`` (golden vs MATLAB):
2
- hysteresis-loop analysis, high-T background subtraction, sample-aware unit
3
- conversion. Validate -> call the pure fn -> serialize; no analysis here.
2
+ hysteresis-loop analysis, background subtraction (TWO distinct routines --
3
+ ``subtract-background`` is the one-sided high-T fit for M-vs-T,
4
+ ``subtract-hysteresis-background`` is the two-tail susceptibility removal plus
5
+ re-centring for an M-vs-H loop; they are not interchangeable, see the calc
6
+ docstrings), sample-aware unit conversion. Validate -> call the pure fn ->
7
+ serialize; no analysis here.
8
+
9
+ Every series field here is ``list[float]``: a JSON ``null`` (what a JavaScript
10
+ NaN stringifies to) is REJECTED with one validation error per element. Callers
11
+ must drop their gaps first -- the frontend does so in
12
+ ``lib/api/finitePairs.ts`` and restores them, row-aligned, afterwards.
4
13
  """
5
14
 
6
15
  from __future__ import annotations
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./react-C5lyt4z4.js";import{n}from"./primitives-ChiQwT3D.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{n as i}from"./useDialogFocus-D1ftVZg9.js";import{n as a}from"./annotationTextDialog-ClEDuPrm.js";import{t as o}from"./RichLabelInput-CXw-iHle.js";var s=e(t(),1),c=r();function l(){let e=a(e=>e.title),t=a(e=>e.initial),r=a(e=>e.resolve),l=a(e=>e.close),[u,d]=(0,s.useState)(``),f=(0,s.useRef)(null),p=(0,s.useId)();if(i(f,e!==null),(0,s.useEffect)(()=>{e!==null&&d(t)},[e,t]),e===null)return null;let m=e=>{r?.(e),l()};return(0,c.jsx)(`div`,{className:`qz-overlay-backdrop`,onMouseDown:()=>m(null),children:(0,c.jsxs)(`div`,{className:`qzk-glass qz-dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":p,ref:f,tabIndex:-1,onMouseDown:e=>e.stopPropagation(),onKeyDown:e=>{e.key===`Enter`&&m(u),e.key===`Escape`&&m(null),e.stopPropagation()},children:[(0,c.jsx)(`h2`,{id:p,children:e}),(0,c.jsxs)(`div`,{className:`qz-ws-row`,children:[(0,c.jsx)(`span`,{className:`k`,children:`Text`}),(0,c.jsx)(o,{value:u,placeholder:`label text`,onCommit:d,live:!0})]}),(0,c.jsxs)(`div`,{className:`qz-btn-row`,children:[(0,c.jsx)(n,{onClick:()=>m(null),children:`Cancel`}),(0,c.jsx)(n,{variant:`primary`,onClick:()=>m(u),children:`Done`})]})]})})}export{l as default};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./react-C5lyt4z4.js";import{n}from"./primitives-ChiQwT3D.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{n as i}from"./useDialogFocus-C74ZJt54.js";import{n as a}from"./annotationTextDialog-ClEDuPrm.js";import{t as o}from"./RichLabelInput-CoXmByK1.js";var s=e(t(),1),c=r();function l(){let e=a(e=>e.title),t=a(e=>e.initial),r=a(e=>e.resolve),l=a(e=>e.close),[u,d]=(0,s.useState)(``),f=(0,s.useRef)(null),p=(0,s.useId)();if(i(f,e!==null),(0,s.useEffect)(()=>{e!==null&&d(t)},[e,t]),e===null)return null;let m=e=>{r?.(e),l()};return(0,c.jsx)(`div`,{className:`qz-overlay-backdrop`,onMouseDown:()=>m(null),children:(0,c.jsxs)(`div`,{className:`qzk-glass qz-dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":p,ref:f,tabIndex:-1,onMouseDown:e=>e.stopPropagation(),onKeyDown:e=>{e.key===`Enter`&&m(u),e.key===`Escape`&&m(null),e.stopPropagation()},children:[(0,c.jsx)(`h2`,{id:p,children:e}),(0,c.jsxs)(`div`,{className:`qz-ws-row`,children:[(0,c.jsx)(`span`,{className:`k`,children:`Text`}),(0,c.jsx)(o,{value:u,placeholder:`label text`,onCommit:d,live:!0})]}),(0,c.jsxs)(`div`,{className:`qz-btn-row`,children:[(0,c.jsx)(n,{onClick:()=>m(null),children:`Cancel`}),(0,c.jsx)(n,{variant:`primary`,onClick:()=>m(u),children:`Done`})]})]})})}export{l as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./react-C5lyt4z4.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{a as r}from"./ConfirmDialog-CL2Dq9Ll.js";import{x as i}from"./rowstate-CAm8HGoq.js";import{nt as a}from"./figureDocument-BfyTbQPZ.js";import{a as o,i as s,n as c,r as l,t as u}from"./uPlot.min-CWikSVZk.js";import{J as d,X as f,c as p,l as m,q as h,u as g,y as _}from"./index-Bu9ms6dO.js";import{n as v}from"./useMultiPanelStage-D3NVnIyQ.js";import{t as y}from"./PolarStageCore-qzheM43i.js";import{t as b}from"./StatStageCanvas-BiiHm0gf.js";import{r as x}from"./useStatStage-eEwhH4h_.js";var S=e(t(),1),C=n();function w({dataset:e,view:t}){let n=r(e=>e.theme),i=r(e=>e.accent);return(0,C.jsx)(y,{dataset:e,yKeys:t.yKeys,seriesStyles:t.seriesStyles,showGrid:t.showGrid,theme:n,accent:i})}var T=()=>{};function E({dataset:e,view:t}){let n=r(e=>e.theme),i=r(e=>e.accent),a=x({active:e,yKeys:t.yKeys,xKey:t.xKey,seriesOrder:t.seriesOrder,seed:null,onSeedConsumed:T});return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(b,{data:a.draw,theme:n,accent:i}),a.error&&(0,C.jsx)(`div`,{className:`qzk-ds-meta`,style:{position:`absolute`,inset:0,display:`grid`,placeItems:`center`,textAlign:`center`,padding:24},children:a.error}),a.note&&(0,C.jsx)(`div`,{className:`qzk-glass qzk-readout`,children:a.note})]})}var D=[];function O({dataset:e,view:t,bg:n,composition:i=null}){let a=r(e=>e.theme),o=r(e=>e.accent),s=r(e=>e.ensureBookData),c=r(e=>e.defaultLineWidth),l=r(e=>e.defaultTrace),u=f(t.plotTemplate),d=(0,S.useId)(),{hostRef:p,hostStyle:m}=v({active:e,datasets:D,composition:i,yScale:t.yScale,xScale:t.xScale,xLim:t.xLim,yLim:t.yLim,xFmt:t.xFmt,yFmt:t.yFmt,showGrid:t.showGrid,showAxisBox:t.showAxisBox,fontSize:u.fontSize,baseLineWidth:t.plotTemplate===`screen`?c:u.lineWidth,defaultTrace:l,refLines:t.refLines,seriesStyles:t.seriesStyles,seriesLabels:t.seriesLabels,xKey:t.xKey,yKeys:t.yKeys,y2Keys:t.y2Keys,errKeys:t.errKeys,hiddenChannels:t.hiddenChannels,seriesOrder:t.seriesOrder,tool:`zoom`,theme:a,accent:o,syncKey:`qz-win-stack-${d}`,bg:n,ensureBookData:s});return(0,C.jsx)(`div`,{ref:p,style:m})}function k({dataset:e,view:t,bg:n,linkGroup:r,document:o}){let s=(0,S.useMemo)(()=>a(e,t.facetKey,o?.plot.axisBreaks.x,t.xKey,t.yKeys),[e,t.facetKey,o?.plot.axisBreaks.x,t.xKey,t.yKeys]);return e?t.polarMode?(0,C.jsx)(w,{dataset:e,view:t}):t.statMode?(0,C.jsx)(E,{dataset:e,view:t}):m(s,t.stackMode,i(e.data,t.yKeys,t.xKey,e.channelRoles,t.seriesOrder).length)?(0,C.jsx)(O,{dataset:e,view:t,bg:n,composition:s}):(0,C.jsx)(A,{dataset:e,view:t,bg:n,linkGroup:r,document:o}):(0,C.jsx)(`div`,{className:`qzk-ds-meta`,style:{position:`absolute`,inset:0,display:`grid`,placeItems:`center`},children:`No dataset — drag one onto this window, or focus it and pick from the Library`})}function A({dataset:e,view:t,bg:n,linkGroup:i,document:a}){let m=r(e=>e.theme),v=r(e=>e.accent),y=r(e=>e.defaultTrace),b=r(e=>e.defaultLineWidth),x=r(e=>e.excludedDisplay),w=(0,S.useRef)(null),T=a?.bindings.errors,{displayPayload:E,plotted:D,styleList:O,labelList:k,errorBars:A,errorSpans:j,colorByColumns:M,hidden:N}=p({active:e,yScale:t.yScale,xScale:t.xScale,xKey:t.xKey,yKeys:t.yKeys,groupKey:t.groupKey,y2Keys:t.y2Keys,seriesOrder:t.seriesOrder,seriesStyles:t.seriesStyles,seriesLabels:t.seriesLabels,errKeys:t.errKeys,documentErrors:T,hiddenChannels:t.hiddenChannels,waterfall:t.waterfall,excludedDisplay:x,fitOverlay:null,baselineOverlay:null,peakOverlay:null,derivOverlay:null,selection:null,defaultTrace:y}),P=d(t,a,D.length);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(g,{plotRef:w,displayPayload:E,theme:m,accent:v,yScale:t.yScale,xScale:t.xScale,xLim:t.xLim,yLim:t.yLim,xStep:t.xStep,yStep:t.yStep,y2Lim:t.y2Lim,y2Scale:t.y2Scale,y2Step:t.y2Step,xFmt:t.xFmt,yFmt:t.yFmt,showGrid:t.showGrid,axisBox:t.showAxisBox,fontSize:f(t.plotTemplate).fontSize,baseLineWidth:t.plotTemplate===`screen`?b:f(t.plotTemplate).lineWidth,defaultTrace:y,steppedPaths:s,steppedPathsPre:o,steppedPathsMid:l,linearPaths:u,pointsPaths:c,wheelZoom:!1,title:t.plotTitle,xAxisLabel:t.xAxisLabel,yAxisLabel:t.yAxisLabel,y2AxisLabel:t.y2AxisLabel,refLines:t.refLines,annotations:t.annotations,regionShades:t.regionShades,seriesStyles:O,seriesCycle:P,plotted:D,seriesLabels:k,errorBars:A,errorSpans:j,colorByColumns:M,hidden:N,tool:`zoom`,onReadout:()=>{},peakWizardEdit:null,anchorEdit:null,bg:n,syncKey:h(i)}),t.insetMode&&E&&(0,C.jsx)(_,{payload:E,styleList:O,seriesCycle:P})]})}export{k as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./react-C5lyt4z4.js";import{n,r}from"./primitives-ChiQwT3D.js";import{t as i}from"./jsx-runtime-NZYk81nU.js";import{a,i as o,zt as s}from"./ConfirmDialog-CL2Dq9Ll.js";import{t as c}from"./NumberField-ClCJO6V-.js";import{t as l}from"./ToolWindow-CwcNSGJV.js";import{a as u,c as d,i as f,n as p,o as m,r as h,s as g,t as _}from"./baseline-BGZKBesw.js";import{i as v,r as y}from"./fitselectionActions-Df8NVt5p.js";var b=e(t(),1),x={lam:1e6,p:.01,radius:100,order:5,maxWindowDeg:2,regionXMin:NaN,regionXMax:NaN,regionYMin:NaN,regionYMax:NaN,maxIter:50,anchorMethod:`pchip`};function S(e,t,n,r){let i=v(e,t,n,r);if(i==null)return null;let a=y(e.data,t),o=e.data.values.map(e=>e[i]);return a.length===0||a.length!==o.length?null:{binding:{datasetId:e.id,xKey:t,yKey:i,xLabel:t==null?`Time`:e.data.labels[t]??`Channel ${t+1}`,yLabel:e.data.labels[i]??`Channel ${i+1}`},x:a,y:o}}function C(e,t){return e===`linear`?1:e===`quadratic`?2:t.order}function w(e,t,n,r,i){switch(e){case`als`:return _({y:n,lam:r.lam,p:r.p});case`rollingball`:return m({y:n,radius:r.radius});case`modpoly`:return f({y:n,order:r.order});case`snip`:return h({x:t,y:n,method:`snip`});case`anchor`:return p({x:t,y:n,anchors:i,method:r.anchorMethod});case`shirley`:return g({x:t,y:n,max_iter:r.maxIter});case`xrdla`:return d({x:t,y:n});case`region`:case`linear`:case`quadratic`:case`poly`:{let i=1/0,a=-1/0;for(let e of t)Number.isFinite(e)&&(e<i&&(i=e),e>a&&(a=e));let o=e===`region`,s=o&&Number.isFinite(r.regionXMin)?r.regionXMin:i,c=o&&Number.isFinite(r.regionXMax)?r.regionXMax:a,l=o&&Number.isFinite(r.regionYMin)?r.regionYMin:void 0,d=o&&Number.isFinite(r.regionYMax)?r.regionYMax:void 0;return u({x:t,y:n,x_min:s,x_max:c,y_min:l,y_max:d,order:C(e,r)}).then(e=>({baseline:e.background}))}}}function T(){let e=o(),t=a(e=>e.xKey),n=a(e=>e.yKeys),r=a(e=>e.seriesOrder),i=a(e=>e.addDataset),c=a(e=>e.setStatus),l=a(e=>e.setBaselineOverlay),u=a(e=>e.setPlotTool),d=a(e=>e.regionPicked),f=a(e=>e.setRegionPicked),p=a(e=>e.setBaselineAnchorEdit),[m,h]=(0,b.useState)(`als`),[g,_]=(0,b.useState)(x),[v,y]=(0,b.useState)(null),[C,T]=(0,b.useState)(null),[E,D]=(0,b.useState)([]),[O,k]=(0,b.useState)(!1),[A,j]=(0,b.useState)(null),M=e?S(e,t,n,r)?.binding??null:null,N=(0,b.useRef)(async()=>{}),P=(0,b.useMemo)(()=>E.map(([e,t],n)=>({index:n,x:e,y:t})),[E]),F=(0,b.useRef)(P);F.current=P,(0,b.useEffect)(()=>{y(null),T(null),j(null),D([]),l(null)},[e,t,n,r,l]);let I=e=>_(t=>({...t,...e}));(0,b.useEffect)(()=>{if(!d)return;let[e,t]=d.x,[n,r]=d.yRange??[NaN,NaN];_(i=>({...i,regionXMin:e,regionXMax:t,regionYMin:n,regionYMax:r})),f(null)},[d,f]);let L=()=>u(`region`);async function R(){if(e){if(m===`anchor`&&E.length<2){j(`place at least 2 anchors on the plot`);return}k(!0),j(null);try{let t=await a.getState().resolveDataset(e.id);if(!t)return;let n=a.getState(),r=S(t,n.xKey,n.yKeys,n.seriesOrder);if(!r)throw Error(`the plotted X/Y selection has no usable primary Y channel`);let{x:i,y:o}=r,s=await w(m,i,o,g,E);y(s.baseline),T(r.binding),l({datasetId:t.id,y:s.baseline})}catch(e){j(e instanceof Error?e.message:`baseline failed`)}finally{k(!1)}}}N.current=R,(0,b.useEffect)(()=>{if(m!==`anchor`||!e){p(null);return}return p({getAnchors:()=>F.current,addAnchor:(e,t)=>D(n=>[...n,[e,t]]),moveAnchor:(e,t,n)=>D(r=>r.map((r,i)=>i===e?[t,n]:r)),removeAnchor:e=>D(t=>t.filter((t,n)=>n!==e))}),()=>p(null)},[m,e,p]),(0,b.useEffect)(()=>{if(m!==`anchor`)return;if(!e||E.length<2){y(null),l(null);return}let t=setTimeout(()=>void N.current(),150);return()=>clearTimeout(t)},[m,E,g.anchorMethod,e,l]);async function z(){if(!e||!v||!C)return;let t=await a.getState().resolveDataset(e.id);if(!t)return;if(C.datasetId!==t.id||v.length!==t.data.values.length){j(`the baseline no longer matches this dataset; recompute it before subtracting`);return}let n=t.data,r=C.yKey,o=n.values.map((e,t)=>{let n=v[t],i=[...e];return Number.isFinite(e[r])&&n!=null&&(i[r]=e[r]-n),i}),l={...n,values:o,metadata:{...n.metadata,baseline_subtracted:m,baseline_source:{x_key:C.xKey,x_label:C.xLabel,y_key:C.yKey,y_label:C.yLabel}}},u=t.name.replace(/\.[^.]+$/,``);i({id:s(),name:`${u} (bg-sub)`,data:l}),c(`subtracted ${m} baseline`)}async function B(){if(!e||E.length<2)return;let t=await a.getState().resolveDataset(e.id);if(!t)return;if(C&&(C.xKey!=null||C.yKey!==0)){if(!v){j(`wait for the selected-channel preview, then Apply again`);return}await z(),D([]),c(`subtracted selected-channel anchor baseline (new dataset)`);return}let n=t.corrections??{};if(n.normMethod!=null||n.smoothEnabled===!0||n.yOff!=null&&n.yOff!==0||n.bgSlope!=null&&n.bgSlope!==0||n.bgPoly!=null&&n.bgPoly.length>0||n.derivativeMode!=null&&n.derivativeMode!==`none`||n.isMag===!0){v?(await z(),D([]),c(`subtracted anchor baseline (new dataset - prior corrections active)`)):j(`prior corrections active: wait for the preview, then Apply again`);return}let r={...t.corrections??{},bgAnchors:E,bgAnchorMethod:g.anchorMethod},i=t.bgRef?{datasetId:t.bgRef.datasetId,interp:t.bgRef.interp}:void 0;await a.getState().applyCorrections(t.id,r,i)&&(l(null),y(null),D([]),c(`subtracted anchor baseline (correction step)`))}function V(){y(null),T(null),j(null),l(null)}return{active:e,method:m,params:g,baseline:v,busy:O,error:A,anchors:E,binding:M,setMethod:h,setParams:I,compute:R,subtract:z,clear:V,pickRegion:L,clearAnchors:()=>D([]),applyAnchors:B}}var E=i(),D=[{value:`als`,label:`Asymmetric least squares`},{value:`rollingball`,label:`Rolling ball`},{value:`modpoly`,label:`Modified polynomial`},{value:`snip`,label:`SNIP`},{value:`region`,label:`Fit from region`},{value:`anchor`,label:`Anchor points`},{value:`shirley`,label:`Shirley (XPS/XAS)`},{value:`xrdla`,label:`XRD low-angle (1/x)`},{value:`linear`,label:`Linear`},{value:`quadratic`,label:`Quadratic`},{value:`poly`,label:`Polynomial (n)`}],O=[{value:`pchip`,label:`pchip (shape-preserving)`},{value:`linear`,label:`linear`},{value:`spline`,label:`spline`}],k={als:[{label:`Smoothness λ`,key:`lam`},{label:`Asymmetry p`,key:`p`,step:.001}],rollingball:[{label:`Radius`,key:`radius`}],modpoly:[{label:`Poly order`,key:`order`}],snip:[{label:`Window (°)`,key:`maxWindowDeg`,step:.1}],region:[{label:`Box x-min`,key:`regionXMin`,allowEmpty:!0,placeholder:`auto`},{label:`Box x-max`,key:`regionXMax`,allowEmpty:!0,placeholder:`auto`},{label:`Box y-min`,key:`regionYMin`,allowEmpty:!0,placeholder:`none`},{label:`Box y-max`,key:`regionYMax`,allowEmpty:!0,placeholder:`none`},{label:`Poly order`,key:`order`}],anchor:[],shirley:[{label:`Max iterations`,key:`maxIter`}],xrdla:[],linear:[],quadratic:[],poly:[{label:`Poly order`,key:`order`}]};function A(){let e=a(e=>e.setBaselineOpen),{active:t,method:i,params:o,baseline:s,busy:u,error:d,anchors:f,binding:p,setMethod:m,setParams:h,compute:g,subtract:_,clear:v,pickRegion:y,clearAnchors:b,applyAnchors:x}=T();return(0,E.jsxs)(l,{id:`baseline`,title:`Baseline`,width:320,onClose:()=>{v(),e(!1)},children:[(0,E.jsx)(`label`,{className:`qzk-field-lbl`,children:`Method`}),(0,E.jsx)(r,{options:D,value:i,onChange:e=>m(e.target.value)}),(0,E.jsx)(`div`,{className:`qzk-hint`,style:{marginTop:6},children:p?`Analyzing ${p.yLabel} vs ${p.xLabel}`:`Select a plotted Y channel`}),(0,E.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`auto auto`,gap:`6px 12px`,marginTop:10,alignItems:`center`},children:k[i].map(e=>(0,E.jsxs)(`span`,{style:{display:`contents`},children:[(0,E.jsx)(`label`,{className:`qzk-field-lbl`,style:{margin:0},children:e.label}),(0,E.jsx)(c,{value:Number.isFinite(o[e.key])?o[e.key]:``,width:88,step:e.step,placeholder:e.placeholder,onChange:t=>{if(e.allowEmpty&&t.trim()===``){h({[e.key]:NaN});return}h({[e.key]:Number(t)||0})}})]},e.key))}),i===`region`&&(0,E.jsx)(n,{size:`sm`,disabled:!t,onClick:y,style:{marginTop:10,width:`100%`},children:`⬚ Pick range on plot`}),i===`anchor`&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`label`,{className:`qzk-field-lbl`,style:{marginTop:10},children:`Interpolation`}),(0,E.jsx)(r,{options:O,value:o.anchorMethod,onChange:e=>h({anchorMethod:e.target.value})}),(0,E.jsxs)(`div`,{className:`qzk-ds-meta`,style:{marginTop:8,color:`var(--text-faint)`},children:[`◇ Click the plot to place anchors (`,f.length,` placed). Drag a marker to move it; click one to remove it.`]}),(0,E.jsx)(n,{size:`sm`,disabled:f.length===0,onClick:b,style:{marginTop:8,width:`100%`},children:`Clear anchors`})]}),(0,E.jsxs)(`div`,{style:{display:`flex`,gap:8,marginTop:12},children:[(0,E.jsx)(n,{variant:`primary`,size:`sm`,disabled:!t||u,onClick:()=>void g(),children:u?`Estimating…`:`Estimate`}),i===`anchor`?(0,E.jsx)(n,{size:`sm`,disabled:!t||u||f.length<2,onClick:()=>void x(),children:`Apply −BG`}):(0,E.jsx)(n,{size:`sm`,disabled:!s,onClick:()=>void _(),children:`Subtract →`})]}),!t&&(0,E.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:10,color:`var(--text-faint)`},children:`Select a dataset first.`}),d&&(0,E.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:10,color:`var(--danger)`},children:d}),s&&!d&&(0,E.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:10,color:`var(--text-faint)`},children:i===`anchor`?`Baseline overlaid — Apply −BG subtracts it as a correction step.`:`Baseline overlaid — Subtract writes a new dataset.`})]})}export{A as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./react-C5lyt4z4.js";import{i as n}from"./primitives-ChiQwT3D.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{a as i,t as a}from"./ConfirmDialog-CL2Dq9Ll.js";import{t as o}from"./CalculatorsContent-B5povxeH.js";import{Nt as s,it as c,nt as l}from"./index-Bu9ms6dO.js";var u=e(t(),1),d=r();function f(){window.open(`${window.location.origin}${window.location.pathname}`,`_blank`)}function p(){let e=i(e=>e.theme),t=i(e=>e.setTheme),r=c(e=>e.connected);return(0,d.jsxs)(`header`,{className:`qzk-titlebar`,children:[(0,d.jsxs)(`div`,{className:`qzk-brand`,children:[(0,d.jsx)(`span`,{className:`ic`,style:{color:`var(--accent)`},children:`√`}),(0,d.jsx)(`span`,{className:`nm`,children:`DiraCulator`})]}),(0,d.jsx)(`span`,{title:r?`Connected`:`Offline`,style:{justifySelf:`center`,display:`inline-flex`},children:(0,d.jsx)(n,{tone:r?`ok`:`warn`})}),(0,d.jsxs)(`div`,{className:`qzk-tbar-right`,children:[(0,d.jsx)(`button`,{className:`qz-icon-btn`,title:`Open the full Quantized app`,"aria-label":`Open the full Quantized app`,onClick:f,children:`↗`}),(0,d.jsx)(`button`,{className:`qz-icon-btn`,title:`Toggle theme`,onClick:()=>t(e===`dark`?`light`:`dark`),children:e===`dark`?`☾`:`☀`}),(0,d.jsx)(l,{})]})]})}function m(){return(0,u.useEffect)(()=>{document.title=`DiraCulator`},[]),(0,u.useEffect)(()=>{let e=e=>{if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`l`&&e.shiftKey){e.preventDefault();let t=i.getState();t.setTheme(t.theme===`dark`?`light`:`dark`)}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,u.useEffect)(()=>{history.pushState(null,``,location.href);let e=()=>history.pushState(null,``,location.href);return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[]),(0,d.jsxs)(`div`,{className:`qzk-calc-app`,children:[(0,d.jsx)(p,{}),(0,d.jsx)(`main`,{className:`qzk-calc-body`,children:(0,d.jsx)(o,{})}),(0,d.jsx)(a,{}),(0,d.jsx)(s,{})]})}export{m as default};
@@ -0,0 +1,8 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,t as n}from"./react-C5lyt4z4.js";import{n as r,r as i}from"./primitives-ChiQwT3D.js";import{t as a}from"./jsx-runtime-NZYk81nU.js";import{a as o,n as s}from"./ConfirmDialog-CL2Dq9Ll.js";import{H as c,K as l,V as u}from"./rowstate-CAm8HGoq.js";import{i as d}from"./toasts-v4ZA--Hu.js";import{t as f}from"./format-wNo0e3_y.js";import{o as p}from"./clipboard-02oM0LWi.js";import{rt as m}from"./index-Bu9ms6dO.js";import{t as h}from"./DataTable-BUsp9T89.js";import{t as g}from"./NumberField-ClCJO6V-.js";import{t as _}from"./SegmentedControl-CR1JRq0i.js";import{t as v}from"./IconButton-Coh25Dic.js";import{t as y}from"./Pill-CWRal9q7.js";function b(e){return l(`/api/crystallography/dspacing`,e)}function x(e){return l(`/api/crystallography/cell`,e)}function S(e){return l(`/api/crystallography/angle`,e)}function C(e,t,n,r=1){return l(`/api/xray/calc`,{mode:e,wavelength:t,value:n,n:r})}function w(e,t){return l(`/api/xray/neutron`,{quantity:e,value:t})}function T(){return u(`/api/reference/unit-categories`)}function E(){return u(`/api/reference/constants`)}function D(){return u(`/api/reference/elements`)}function O(e,t,n){return l(`/api/reference/convert`,{value:e,from:t,to:n})}var k=e(t(),1),A=a(),j=[{value:`SI`,label:`SI`},{value:`CGS`,label:`CGS (Gaussian)`},{value:`eV`,label:`eV-based`}];function M(){let[e,t]=(0,k.useState)(null),[n,r]=(0,k.useState)(!1),[a,o]=(0,k.useState)(`SI`),[s,c]=(0,k.useState)(``);if((0,k.useEffect)(()=>{let e=!1;return E().then(n=>{e||t(n.systems)}).catch(()=>{e||r(!0)}),()=>{e=!0}},[]),n)return(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--text-faint)`},children:`Constants unavailable (backend offline).`});if(!e)return(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--text-faint)`},children:`Loading…`});let l=s.trim().toLowerCase(),u=e[a]??[],d=l===``?u:u.filter(e=>e.key.toLowerCase().includes(l)||e.symbol.toLowerCase().includes(l)||e.name.toLowerCase().includes(l));return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,marginBottom:8},children:[(0,A.jsx)(i,{options:j,value:a,onChange:e=>o(e.target.value),"aria-label":`unit system`,style:{width:160,flex:`0 0 auto`}}),(0,A.jsx)(`input`,{className:`qz-input`,style:{flex:1},placeholder:`search symbol / name`,value:s,onChange:e=>c(e.target.value),"aria-label":`constant search`})]}),(0,A.jsx)(h,{columns:[`constant`,`value`],rows:d.map(e=>[(0,A.jsxs)(`span`,{children:[(0,A.jsx)(`b`,{style:{fontFamily:`var(--font-mono)`},children:e.symbol}),` `,(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:e.name})]},`${e.key}-label`),(0,A.jsxs)(`span`,{style:{fontFamily:`var(--font-mono)`},children:[f(e.value),` `,(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:e.unit})]},`${e.key}-value`)])}),d.length===0&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{color:`var(--text-faint)`},children:`no match`})]})}var N=`qz.calcHistory`,P=100,F=50;function I(e){return e===void 0||e.length<=2048?e:`${e.slice(0,2047)}\u2026`}var L={history:[],favorites:[],seq:0};function R(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`&&typeof e.summary==`string`&&(e.inputs===void 0||typeof e.inputs==`string`)).map(e=>e.inputs===void 0?e:{...e,inputs:I(e.inputs)}):[]}function z(){try{let e=localStorage.getItem(N);if(!e)return L;let t=JSON.parse(e);return{history:R(t.history).slice(0,P),favorites:R(t.favorites).slice(0,F),seq:typeof t.seq==`number`&&Number.isFinite(t.seq)?t.seq:0}}catch{return L}}function B(e){let t=[e,{...e,history:e.history.slice(0,25)},{...e,history:e.history.slice(0,5)},{...e,history:[]}];for(let e of t)try{localStorage.setItem(N,JSON.stringify(e));return}catch{}}var V=z(),H=n((e,t)=>({history:V.history,favorites:V.favorites,seq:V.seq,record:t=>e(e=>{let n=e.seq+1,r={history:[{id:`c${n}`,ts:new Date().toISOString(),...t,inputs:I(t.inputs)},...e.history].slice(0,P),favorites:e.favorites,seq:n};return B(r),r}),toggleFavorite:t=>e(e=>{let n;if(e.favorites.some(e=>e.id===t))n=e.favorites.filter(e=>e.id!==t);else{let r=e.history.find(e=>e.id===t);if(!r)return e;n=[r,...e.favorites].slice(0,F)}let r={history:e.history,favorites:n,seq:e.seq};return B(r),r}),isFavorite:e=>t().favorites.some(t=>t.id===e),clearHistory:()=>e(e=>(B({history:[],favorites:e.favorites,seq:e.seq}),{history:[]}))}));function U({title:e,children:t}){return(0,A.jsxs)(`div`,{style:{border:`1px solid var(--border-soft)`,borderRadius:6,padding:`8px 10px`,marginTop:10},children:[(0,A.jsx)(`div`,{className:`qzk-field-lbl`,style:{marginTop:0,marginBottom:6},children:e}),t]})}function W({label:e,value:t,onChange:n,width:r=84,unit:i,numeric:a=!0,ariaLabel:o}){return(0,A.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:e}),(0,A.jsx)(g,{value:t,width:r,onChange:n,unit:i,numeric:a,"aria-label":o??e})]})}var G={display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},K={marginTop:8,fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-lg)`},q={marginTop:8,color:`var(--danger)`};function ee(e){return e.split(/[\s,]+/).filter(e=>e.length>0).map(Number)}function te(e){let t=[],n=[];for(let r of e.split(/\r?\n/)){let e=r.trim().split(/[\s,]+/).filter(e=>e.length>0);if(e.length<2)continue;let i=Number(e[0]),a=Number(e[1]);Number.isFinite(i)&&Number.isFinite(a)&&(t.push(i),n.push(a))}return{x:t,y:n}}function J(e){let[t,n]=(0,k.useState)(null),r=(0,k.useRef)(0);return{result:t,setResult:n,run:(0,k.useCallback)(async(t,i,a)=>{let o=++r.current,s=()=>r.current===o;try{let c=await a(s);if(r.current!==o)return;n({text:c}),H.getState().record({domain:e,label:t,summary:c,inputs:i})}catch(e){if(r.current!==o)return;n({text:e instanceof Error?e.message:`calculation failed`,err:!0})}},[e]),touch:(0,k.useCallback)(()=>{r.current++,n(e=>e==null?e:null)},[])}}var Y=(e,t)=>n=>{t(n),e()};function X({value:e,label:t=`result`}){return(0,A.jsx)(v,{"aria-label":`copy ${t}`,title:`copy ${t}`,style:{marginLeft:6},onClick:()=>void p(e).then(e=>d(e?`copied ${t}`:`clipboard unavailable`,e?`ok`:`danger`)),children:`⧉`})}var Z=e=>e&&(0,A.jsxs)(`div`,{style:e.err?q:K,children:[(0,A.jsx)(`span`,{children:e.text}),!e.err&&(0,A.jsx)(X,{value:e.copyValue??e.text})]}),ne=[{value:`cubic`,label:`Cubic`,lengths:[],angles:[]},{value:`tetragonal`,label:`Tetragonal`,lengths:[`c`],angles:[]},{value:`hexagonal`,label:`Hexagonal`,lengths:[`c`],angles:[]},{value:`rhombohedral`,label:`Rhombohedral`,lengths:[],angles:[`alpha`]},{value:`orthorhombic`,label:`Orthorhombic`,lengths:[`b`,`c`],angles:[]},{value:`monoclinic`,label:`Monoclinic`,lengths:[`b`,`c`],angles:[`beta`]},{value:`triclinic`,label:`Triclinic`,lengths:[`b`,`c`],angles:[`alpha`,`beta`,`gamma`]}];function Q(e){let t=ne.find(t=>t.value===e.system),n=(e,t)=>{let n=Number(e);if(!Number.isFinite(n))throw Error(`enter a numeric ${t}`);return n},r=n(e.a,`a`),i=t?.lengths.includes(`b`)?n(e.b,`b`):r,a=t?.lengths.includes(`c`)?n(e.c,`c`):r,o=t?.angles.includes(`alpha`)?n(e.alpha,`α`):90,s=t?.angles.includes(`beta`)?n(e.beta,`β`):90,c=t?.angles.includes(`gamma`)?n(e.gamma,`γ`):90;return e.system===`hexagonal`&&(c=120),e.system===`rhombohedral`&&(s=o,c=o),{a:r,b:i,c:a,alpha:o,beta:s,gamma:c}}var re=new Set([`system`,`a`,`b`,`c`,`alpha`,`beta`,`gamma`,`h`,`k`,`l`]),$=new Set([`system`,`a`,`b`,`c`,`alpha`,`beta`,`gamma`,`formula`,`z`]);function ie(){let[e,t]=(0,k.useState)({system:`cubic`,a:`5.4309`,b:`5.4309`,c:`5.4309`,alpha:`90`,beta:`90`,gamma:`90`,h:`1`,k:`1`,l:`1`,formula:`Si`,z:`8`}),[n,r]=(0,k.useState)(null),[i,a]=(0,k.useState)(null),[o,s]=(0,k.useState)(!1),[c,l]=(0,k.useState)(null),[u,d]=(0,k.useState)(null),[p,m]=(0,k.useState)(!1),h=(0,k.useRef)(0),g=(0,k.useRef)(0),_=()=>{h.current++,r(null),a(null),s(!1)},v=()=>{g.current++,l(null),d(null),m(!1)},y=e=>{t(t=>({...t,...e}));let n=Object.keys(e);n.some(e=>re.has(e))&&_(),n.some(e=>$.has(e))&&v()};async function S(){let t=++h.current;s(!0),a(null);try{let n=Q(e),i=Number(e.h),a=Number(e.k),o=Number(e.l);if([i,a,o].some(e=>!Number.isFinite(e)))throw Error(`enter numeric Miller indices`);let s=e.system===`hexagonal`?-(i+a):void 0,c=await b({system:e.system,...n,h:i,k:a,l:o,...s===void 0?{}:{i:s}});if(h.current!==t)return;r(c),H.getState().record({domain:`Crystal`,label:`d-spacing`,summary:`d = ${f(c.d)} Å (${c.system}, hkl=${i} ${a} ${o})`,inputs:`crystal=${JSON.stringify(e)}`})}catch(e){if(h.current!==t)return;r(null),a(e instanceof Error?e.message:`calculation failed`)}finally{h.current===t&&s(!1)}}async function C(){let t=++g.current;m(!0),d(null);try{let n=Q(e),r=e.formula.trim(),i=Number(e.z);if(r&&!(Number.isFinite(i)&&i>=1))throw Error(`Z must be an integer ≥ 1`);let a=await x({...n,...r?{formula:r,z:i}:{}});if(g.current!==t)return;l(a),H.getState().record({domain:`Crystal`,label:`Cell volume & density`,summary:`V = ${f(a.volume)} ų`+(a.density==null?``:` · ρ = ${f(a.density)} g/cm³`),inputs:`crystal=${JSON.stringify(e)}`})}catch(e){if(g.current!==t)return;l(null),d(e instanceof Error?e.message:`calculation failed`)}finally{g.current===t&&m(!1)}}return{crystal:e,crResult:n,crError:i,crBusy:o,updCrystal:y,crCompute:S,cellResult:c,cellError:u,cellBusy:p,cellCompute:C}}function ae(e){return l(`/api/sld/formula`,e)}var oe=[{label:`Cu Kα`,a:1.5406},{label:`Mo Kα`,a:.7107},{label:`Co Kα`,a:1.789},{label:`Cr Kα`,a:2.2897}],se=[{label:`Thermal`,a:1.798},{label:`4.75 Å`,a:4.75},{label:`5 Å`,a:5},{label:`6 Å`,a:6}],ce=[{label:`Si`,formula:`Si`,density:2.33},{label:`SiO₂`,formula:`SiO2`,density:2.65},{label:`Al₂O₃`,formula:`Al2O3`,density:3.95},{label:`Fe`,formula:`Fe`,density:7.87},{label:`H₂O`,formula:`H2O`,density:1},{label:`D₂O`,formula:`D2O`,density:1.11}];function le(){let[e,t]=(0,k.useState)({formula:`Si`,density:`2.33`,neutronWavelength:`1.798`,xrayWavelength:`1.5406`}),[n,r]=(0,k.useState)(null),[i,a]=(0,k.useState)(null),[o,s]=(0,k.useState)(!1),c=(0,k.useRef)(0),l=()=>{c.current++,r(null),a(null),s(!1)},u=e=>{t(t=>({...t,...e})),l()},d=(e,t)=>{u({formula:e,density:String(t)})};async function p(){let t=++c.current;s(!0),a(null);try{let n=Number(e.density),i=Number(e.neutronWavelength),a=Number(e.xrayWavelength);if(!e.formula.trim())throw Error(`enter a chemical formula`);if(!(n>0))throw Error(`enter a positive density`);if(!(i>0&&a>0))throw Error(`enter positive wavelengths`);let o=await ae({formula:e.formula.trim(),density:n,neutron_wavelength:i,xray_wavelength:a});if(c.current!==t)return;r(o),H.getState().record({domain:`Sld`,label:`SLD from formula`,summary:`${o.formula}: SLD_n = ${f(o.neutron.sld_real)}, SLD_x = ${f(o.xray.sld_real)} ×10⁻⁶ Å⁻²`,inputs:`formula=${JSON.stringify(e.formula)}, density=${e.density} g/cm³, neutron λ=${e.neutronWavelength} Å, x-ray λ=${e.xrayWavelength} Å`})}catch(e){if(c.current!==t)return;r(null),a(e instanceof Error?e.message:`calculation failed`)}finally{c.current===t&&s(!1)}}return{sld:e,sldResult:n,sldError:i,sldBusy:o,updSld:u,setSldPreset:d,sldCompute:p}}var ue=[`eV`,`nm`,`cm^-1`,`THz`,`K`],de=[{label:`Oe → T`,from:`Oe`,to:`T`,category:`magnetic_field`},{label:`T → G`,from:`T`,to:`G`,category:`magnetic_field`},{label:`eV → nm`,from:`eV`,to:`nm`,category:`photon_energy`},{label:`eV → THz`,from:`eV`,to:`THz`,category:`photon_energy`},{label:`K → C`,from:`K`,to:`C`,category:`temperature`},{label:`J → eV`,from:`J`,to:`eV`,category:`energy`},{label:`GPa → bar`,from:`GPa`,to:`bar`,category:`pressure`},{label:`Ang → nm`,from:`Ang`,to:`nm`,category:`length`}];function fe(){let[e,t]=(0,k.useState)(`1`),[n,r]=(0,k.useState)(`Oe`),[i,a]=(0,k.useState)(`T`),[o,s]=(0,k.useState)(null),[c,l]=(0,k.useState)(null),[u,d]=(0,k.useState)(null),[p,m]=(0,k.useState)(!1),[h,g]=(0,k.useState)(null),[_,v]=(0,k.useState)(`magnetic_field`),[y,b]=(0,k.useState)(`1`),[x,S]=(0,k.useState)(`eV`),[C,w]=(0,k.useState)(null),[E,D]=(0,k.useState)(null),[A,j]=(0,k.useState)(!1),M=(0,k.useRef)(0),N=(0,k.useRef)(0),P=()=>{M.current++,s(null),l(null),d(null),m(!1)},F=()=>{N.current++,w(null),D(null),j(!1)};(0,k.useEffect)(()=>{let e=!1;return T().then(t=>{e||g(t.categories)}).catch(()=>{}),()=>{e=!0}},[]);let I=e=>{t(e),P()},L=e=>{r(e),P()},R=e=>{a(e),P()},z=(e,t,n)=>{r(e),a(t),n&&v(n),P()},B=e=>{v(e);let t=h?.find(t=>t.id===e)?.units;t&&t.length>0&&(r(t[0].value),a(t[1]?.value??t[0].value)),P()},V=()=>{r(i),a(n),P()},U=e=>{b(e),F()},W=e=>{S(e),F()};async function G(){let t=++M.current;m(!0),d(null);try{let r=Number(e);if(!Number.isFinite(r))throw Error(`enter a numeric value`);let a=await O(r,n,i);if(M.current!==t)return;let o=typeof a.result==`number`?a.result:null;s(o),l(typeof a.info?.description==`string`?a.info.description:null),o!=null&&H.getState().record({domain:`Units`,label:`Unit conversion`,summary:`${e} ${n} = ${f(o)} ${i}`,inputs:`value=${e}, from=${n}, to=${i}`})}catch(e){if(M.current!==t)return;s(null),d(e instanceof Error?e.message:`conversion failed`)}finally{M.current===t&&m(!1)}}async function K(){let e=++N.current;j(!0),D(null);try{let t=Number(y);if(!Number.isFinite(t))throw Error(`enter a numeric value`);let n=(h?.find(e=>e.id===`photon_energy`)?.units.map(e=>e.value)??ue).filter(e=>e!==x),r=await Promise.all(n.map(e=>O(t,x,e)));if(N.current!==e)return;let i={[x]:t};n.forEach((e,t)=>{let n=r[t].result;typeof n==`number`&&(i[e]=n)}),w(i),H.getState().record({domain:`Units`,label:`Photon/thermal energy`,summary:Object.entries(i).map(([e,t])=>`${e}=${f(t)}`).join(` · `),inputs:`value=${y}, from=${x}`})}catch(t){if(N.current!==e)return;w(null),D(t instanceof Error?t.message:`conversion failed`)}finally{N.current===e&&j(!1)}}return{value:e,from:n,to:i,result:o,description:c,error:u,busy:p,setValue:I,setFrom:L,setTo:R,setPair:z,convert:G,unitCategories:h,category:_,setCategory:B,swapUnits:V,peValue:y,peFrom:x,peResults:C,peError:E,peBusy:A,setPeValue:U,setPeFrom:W,peCompute:K}}var pe=[{value:`2theta_from_d`,label:`d → 2θ`,inUnit:`Å`},{value:`d_from_2theta`,label:`2θ → d`,inUnit:`°`},{value:`theta_from_d`,label:`d → θ`,inUnit:`Å`},{value:`d_from_theta`,label:`θ → d`,inUnit:`°`},{value:`q_from_2theta`,label:`2θ → Q`,inUnit:`°`},{value:`2theta_from_q`,label:`Q → 2θ`,inUnit:`1/Å`},{value:`q_from_d`,label:`d → Q`,inUnit:`Å`},{value:`d_from_q`,label:`Q → d`,inUnit:`1/Å`},{value:`energy_from_wavelength`,label:`λ → E`,inUnit:`Å`,needsWavelength:!1},{value:`wavelength_from_energy`,label:`E → λ`,inUnit:`keV`,needsWavelength:!1}],me=[{label:`Cu Kα1`,a:1.540598},{label:`Cu Kα`,a:1.5418},{label:`Co Kα1`,a:1.788996},{label:`Mo Kα1`,a:.7093187},{label:`Cr Kα1`,a:2.289726},{label:`Fe Kα1`,a:1.936041},{label:`Ag Kα1`,a:.5594075}];function he(){let[e,t]=(0,k.useState)(`2theta_from_d`),[n,r]=(0,k.useState)(`1.5406`),[i,a]=(0,k.useState)(`3.1356`),[o,s]=(0,k.useState)(`1`),[c,l]=(0,k.useState)(null),[u,d]=(0,k.useState)(null),[p,m]=(0,k.useState)(!1),h=(0,k.useRef)(0),g=()=>{h.current++,l(null),d(null),m(!1)},_=e=>{t(e),g()},v=e=>{r(e),g()},y=e=>{a(e),g()},b=e=>{s(e),g()};async function x(){let t=++h.current;m(!0),d(null);try{let r=pe.find(t=>t.value===e),a=r?.needsWavelength!==!1,s=Number(i);if(!Number.isFinite(s))throw Error(`enter a numeric value`);let c=0,u=1;if(a){if(c=Number(n),u=Number(o),!Number.isFinite(c))throw Error(`enter numeric wavelength and value`);if(!Number.isInteger(u)||u<1)throw Error(`order n must be a positive integer`)}let d=await C(e,c,s,u);if(h.current!==t)return;l(d),H.getState().record({domain:`Xray`,label:r?.label??e,summary:`${f(d.result)} ${d.unit}`,inputs:a?`mode=${e}, wavelength=${n} Å, value=${i}, order=${o}`:`mode=${e}, value=${i}`})}catch(e){if(h.current!==t)return;l(null),d(e instanceof Error?e.message:`calculation failed`)}finally{h.current===t&&m(!1)}}return{xrayMode:e,wavelength:n,xrayValue:i,xrayOrder:o,xrayResult:c,xrayError:u,xrayBusy:p,setXrayMode:_,setWavelength:v,setXrayValue:y,setXrayOrder:b,xrayCompute:x}}function ge(){let[e,t]=(0,k.useState)(`units`),[n,r]=(0,k.useState)(null),i=fe(),a=he(),o=ie(),s=le();(0,k.useEffect)(()=>{let e=!1;return E().then(t=>{e||r(t.constants)}).catch(()=>{}),()=>{e=!0}},[]);let c=()=>{o.crResult&&(a.setXrayValue(String(o.crResult.d)),a.setXrayMode(`2theta_from_d`),a.setXrayOrder(`1`),t(`xray`))},l=()=>{let e=s.sld.formula.trim();e&&(o.updCrystal({formula:e}),t(`crystal`))},u=()=>{if(!o.cellResult||o.cellResult.density==null)return;let e=o.crystal.formula.trim();s.updSld({...e?{formula:e}:{},density:String(o.cellResult.density)}),t(`sld`)};return{...i,...a,...o,...s,tab:e,setTab:t,constants:n,sendDToXray:c,sendFormulaToCrystal:l,sendCellToSld:u}}var _e={alpha:`α`,beta:`β`,gamma:`γ`};function ve(e){return e.map(e=>Number.isFinite(e)?String(e):`?`).join(` `)}function ye({c:e}){let t=ne.find(t=>t.value===e.crystal.system),n=t?.lengths??[],a=t?.angles??[],o=e.crystal.system===`hexagonal`,[s,c]=(0,k.useState)(`3`),[l,u]=(0,k.useState)(`1`),[d,p]=(0,k.useState)(`0`),[m,h]=(0,k.useState)(`0`),[v,y]=(0,k.useState)(`1`),[b,x]=(0,k.useState)(`1`),[C,w]=(0,k.useState)(`0`),T=J(`Crystal`),E=o&&s===`4`,D=Number(e.crystal.h),O=Number(e.crystal.k),j=Number(e.crystal.l),M=-(D+O);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsx)(i,{options:ne.map(e=>({value:e.value,label:e.label})),value:e.crystal.system,onChange:t=>e.updCrystal({system:t.target.value}),"aria-label":`crystal system`}),(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`,marginTop:10},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`a`}),(0,A.jsx)(g,{value:e.crystal.a,width:64,onChange:t=>e.updCrystal({a:t})}),n.includes(`b`)&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`b`}),(0,A.jsx)(g,{value:e.crystal.b,width:64,onChange:t=>e.updCrystal({b:t})})]}),n.includes(`c`)&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`c`}),(0,A.jsx)(g,{value:e.crystal.c,width:64,onChange:t=>e.updCrystal({c:t})})]}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`Å`})]}),a.length>0&&(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`,marginTop:10},children:[a.map(t=>(0,A.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:8},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:_e[t]}),(0,A.jsx)(g,{value:e.crystal[t],width:64,onChange:n=>e.updCrystal({[t]:n})})]},t)),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`°`})]}),(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10,flexWrap:`wrap`},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:E?`hkil`:`hkl`}),(0,A.jsx)(g,{value:e.crystal.h,width:44,onChange:t=>e.updCrystal({h:t}),"aria-label":`h`}),(0,A.jsx)(g,{value:e.crystal.k,width:44,onChange:t=>e.updCrystal({k:t}),"aria-label":`k`}),E&&(0,A.jsx)(g,{value:Number.isFinite(M)?M:``,width:44,disabled:!0,"aria-label":`i (derived)`,title:`derived: i = -(h+k), not editable`}),(0,A.jsx)(g,{value:e.crystal.l,width:44,onChange:t=>e.updCrystal({l:t}),"aria-label":`l`}),o&&(0,A.jsx)(_,{options:[{value:`3`,label:`3-idx`},{value:`4`,label:`4-idx`}],value:s,onChange:c}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,disabled:e.crBusy,onClick:()=>void e.crCompute(),children:`=`})]}),e.crResult&&!e.crError&&(0,A.jsxs)(`div`,{style:{marginTop:10,display:`flex`,alignItems:`center`,gap:10,flexWrap:`wrap`},children:[(0,A.jsxs)(`span`,{style:{fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-lg)`},children:[`d = `,f(e.crResult.d),` `,(0,A.jsx)(`span`,{style:{color:`var(--text-dim)`},children:`Å`}),(0,A.jsx)(X,{value:String(e.crResult.d),label:`d-spacing`})]}),o&&(0,A.jsxs)(`span`,{className:`qzk-ds-meta`,style:{fontFamily:`var(--font-mono)`},children:[`(hkl) `,ve([D,O,j]),` = (hkil) `,ve([D,O,M,j])]}),(0,A.jsx)(r,{variant:`ghost`,size:`sm`,onClick:e.sendDToXray,title:`Use this d in the X-ray tab (d → 2θ → Q)`,children:`→ X-ray`})]}),e.crError&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:10,color:`var(--danger)`},children:e.crError}),(0,A.jsx)(`div`,{className:`qzk-field-lbl`,style:{marginTop:16},children:`Cell volume & density`}),(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`,marginTop:6},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`formula`}),(0,A.jsx)(g,{numeric:!1,value:e.crystal.formula,width:92,onChange:t=>e.updCrystal({formula:t}),"aria-label":`chemical formula`}),(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`Z`}),(0,A.jsx)(g,{value:e.crystal.z,width:44,onChange:t=>e.updCrystal({z:t})}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,disabled:e.cellBusy,onClick:()=>void e.cellCompute(),children:`=`})]}),e.cellResult&&!e.cellError&&(0,A.jsxs)(`div`,{style:{marginTop:10,fontFamily:`var(--font-mono)`},children:[(0,A.jsxs)(`div`,{style:{fontSize:`var(--font-size-lg)`},children:[`V = `,f(e.cellResult.volume),` `,(0,A.jsx)(`span`,{style:{color:`var(--text-dim)`},children:`ų`}),(0,A.jsx)(X,{value:String(e.cellResult.volume),label:`cell volume`})]}),e.cellResult.density!=null&&(0,A.jsxs)(`div`,{style:{marginTop:4,display:`flex`,alignItems:`center`,gap:10,flexWrap:`wrap`},children:[(0,A.jsxs)(`span`,{style:{color:`var(--text-dim)`},children:[`ρ = `,f(e.cellResult.density),` g/cm³`,e.cellResult.molar_mass!=null&&(0,A.jsxs)(A.Fragment,{children:[` · M = `,f(e.cellResult.molar_mass),` g/mol`]})]}),(0,A.jsx)(r,{variant:`ghost`,size:`sm`,onClick:e.sendCellToSld,title:`Use this formula + theoretical density in the SLD tab`,children:`→ SLD`})]})]}),e.cellError&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:10,color:`var(--danger)`},children:e.cellError}),(0,A.jsxs)(U,{title:`Interplanar angle`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`hkl₁`}),(0,A.jsx)(g,{value:l,width:40,onChange:Y(T.touch,u),"aria-label":`h1`}),(0,A.jsx)(g,{value:d,width:40,onChange:Y(T.touch,p),"aria-label":`k1`}),(0,A.jsx)(g,{value:m,width:40,onChange:Y(T.touch,h),"aria-label":`l1`}),(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`hkl₂`}),(0,A.jsx)(g,{value:v,width:40,onChange:Y(T.touch,y),"aria-label":`h2`}),(0,A.jsx)(g,{value:b,width:40,onChange:Y(T.touch,x),"aria-label":`k2`}),(0,A.jsx)(g,{value:C,width:40,onChange:Y(T.touch,w),"aria-label":`l2`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void T.run(`Interplanar angle`,`cell=${JSON.stringify(e.crystal)}, hkl₁=(${l},${d},${m}), hkl₂=(${v},${b},${C})`,async()=>{let t=Q(e.crystal),n=Number(l),r=Number(d),i=Number(m),a=Number(v),o=Number(b),s=Number(C);if([n,r,i,a,o,s].some(e=>!Number.isFinite(e)))throw Error(`enter numeric Miller indices for both planes`);let c=await S({system:e.crystal.system,...t,h1:n,k1:r,l1:i,h2:a,k2:o,l2:s});return`φ = ${f(c.angle_deg)}° (d₁ = ${f(c.d1)} Å, d₂ = ${f(c.d2)} Å)`}),children:`=`})]}),Z(T.result)]})]})}function be(e,t,n){return l(`/api/diffusion/arrhenius`,{d0:e,ea:t,t:n})}function xe(e,t){return l(`/api/diffusion/diffusion-length`,{d:e,t})}function Se(e,t,n){return l(`/api/diffusion/fick-flux`,{d:e,dc:t,dx:n})}function Ce(e,t,n,r){return l(`/api/diffusion/c-profile`,{x:e,t,d:n,c0:r})}function we(){let[e,t]=(0,k.useState)(`0.1`),[n,i]=(0,k.useState)(`1.0`),[a,o]=(0,k.useState)(`1000`),s=J(`Diffusion`),[c,l]=(0,k.useState)(`1e-12`),[u,d]=(0,k.useState)(`3600`),p=J(`Diffusion`),[m,h]=(0,k.useState)(`1e-12`),[g,_]=(0,k.useState)(`1e18`),[v,y]=(0,k.useState)(`1e-5`),b=J(`Diffusion`),[x,S]=(0,k.useState)(`3e-5`),[C,w]=(0,k.useState)(`3600`),[T,E]=(0,k.useState)(`1e-12`),[D,O]=(0,k.useState)(`1e18`),j=J(`Diffusion`);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Arrhenius diffusion coefficient`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`D₀`,value:e,onChange:Y(s.touch,t),unit:`cm²/s`,width:72}),(0,A.jsx)(W,{label:`Eₐ`,value:n,onChange:Y(s.touch,i),unit:`eV`,width:72}),(0,A.jsx)(W,{label:`T`,value:a,onChange:Y(s.touch,o),unit:`K`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void s.run(`Arrhenius diffusion coefficient`,`D₀=${e} cm²/s, Eₐ=${n} eV, T=${a} K`,async()=>{let t=await be(Number(e),Number(n),Number(a));return`D = ${f(t.D)} cm²/s`}),children:`=`})]}),Z(s.result)]}),(0,A.jsxs)(U,{title:`Diffusion length`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`D`,value:c,onChange:Y(p.touch,l),unit:`cm²/s`}),(0,A.jsx)(W,{label:`t`,value:u,onChange:Y(p.touch,d),unit:`s`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void p.run(`Diffusion length`,`D=${c} cm²/s, t=${u} s`,async()=>{let e=await xe(Number(c),Number(u));return`L = √(Dt) = ${f(e.L)} cm = ${f(e.L_um)} µm`}),children:`=`})]}),Z(p.result)]}),(0,A.jsxs)(U,{title:`Fick's first law (flux)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`D`,value:m,onChange:Y(b.touch,h),unit:`cm²/s`,width:72}),(0,A.jsx)(W,{label:`ΔC`,value:g,onChange:Y(b.touch,_),unit:`cm⁻³`,width:72}),(0,A.jsx)(W,{label:`Δx`,value:v,onChange:Y(b.touch,y),unit:`cm`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void b.run(`Fick's first law (flux)`,`D=${m} cm²/s, ΔC=${g} cm⁻³, Δx=${v} cm`,async()=>{let e=await Se(Number(m),Number(g),Number(v));return`J = -D ∂C/∂x = ${f(e.J)} atoms/(cm²·s)`}),children:`=`})]}),Z(b.result)]}),(0,A.jsxs)(U,{title:`Constant-source diffusion profile (erfc)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`x`,value:x,onChange:Y(j.touch,S),unit:`cm`,width:72}),(0,A.jsx)(W,{label:`t`,value:C,onChange:Y(j.touch,w),unit:`s`,width:72}),(0,A.jsx)(W,{label:`D`,value:T,onChange:Y(j.touch,E),unit:`cm²/s`,width:72}),(0,A.jsx)(W,{label:`c₀`,value:D,onChange:Y(j.touch,O),width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void j.run(`Constant-source diffusion profile`,`x=${x} cm, t=${C} s, D=${T} cm²/s, c₀=${D}`,async()=>{let e=await Ce(Number(x),Number(C),Number(T),Number(D)),t=typeof e.c==`number`?e.c:e.c[0];return`c(x,t) = ${f(t)} · L = √(Dt) = ${f(e.L)} cm`}),children:`=`})]}),Z(j.result)]})]})}function Te(e,t){return l(`/api/electrical/resistivity`,{rs:e,t})}function Ee(e,t){return l(`/api/electrical/sheet-resistance`,{rho:e,t})}function De(e){return l(`/api/electrical/conductivity`,{rho:e})}function Oe(e,t){return l(`/api/electrical/mobility`,{rho:e,n:t})}function ke(e,t){return l(`/api/electrical/current-density`,{i:e,area:t})}function Ae(e,t,n,r){return l(`/api/electrical/hall`,{v_h:e,i:t,b:n,t:r})}function je(e){return l(`/api/electrical/hall-sweep`,e)}function Me(e,t,n){return l(`/api/electrical/van-der-pauw`,{r_a:e,r_b:t,thickness:n})}var Ne=1e-7;function Pe(){let[e,t]=(0,k.useState)(`100`),[n,i]=(0,k.useState)(`10`),[a,o]=(0,k.useState)(`1e-4`),s=J(`Electrical`),[c,l]=(0,k.useState)(`1e-4`),u=J(`Electrical`),[d,p]=(0,k.useState)(`1e-2`),[m,h]=(0,k.useState)(`1e17`),g=J(`Electrical`),[_,v]=(0,k.useState)(`1e-3`),[y,b]=(0,k.useState)(`1`),x=J(`Electrical`),[S,C]=(0,k.useState)(`1e-3`),[w,T]=(0,k.useState)(`1e-3`),[E,D]=(0,k.useState)(`1`),[O,j]=(0,k.useState)(`100`),M=J(`Electrical`),[N,P]=(0,k.useState)(``),[F,I]=(0,k.useState)(`100`),[L,R]=(0,k.useState)(``),z=J(`Electrical`),[B,V]=(0,k.useState)(`1.0`),[H,K]=(0,k.useState)(`1.0`),[q,ee]=(0,k.useState)(``),X=J(`Electrical`);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Resistivity / Sheet resistance`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`Rs`,value:e,onChange:Y(s.touch,t),unit:`Ω/sq`}),(0,A.jsx)(W,{label:`t`,value:n,onChange:Y(s.touch,i),unit:`nm`,ariaLabel:`Rs/rho thickness`}),(0,A.jsx)(r,{size:`sm`,onClick:()=>void s.run(`Resistivity / Sheet resistance`,`Rs=${e} Ω/sq, thickness=${n} nm`,async()=>{let t=await Te(Number(e),Number(n)*Ne);return`ρ = ${f(t.rho)} Ω·cm`}),children:`Rs → ρ`})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`ρ`,value:a,onChange:Y(s.touch,o),unit:`Ω·cm`}),(0,A.jsx)(r,{size:`sm`,onClick:()=>void s.run(`Resistivity / Sheet resistance`,`ρ=${a} Ω·cm, thickness=${n} nm`,async()=>{let e=await Ee(Number(a),Number(n)*Ne);return`Rs = ${f(e.Rs)} Ω/sq`}),children:`ρ → Rs`})]}),Z(s.result)]}),(0,A.jsxs)(U,{title:`Conductivity`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`ρ`,value:c,onChange:Y(u.touch,l),unit:`Ω·cm`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void u.run(`Conductivity`,`ρ=${c} Ω·cm`,async()=>{let e=await De(Number(c));return`σ = ${f(e.sigma)} S/cm`}),children:`=`})]}),Z(u.result)]}),(0,A.jsxs)(U,{title:`Mobility`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`ρ`,value:d,onChange:Y(g.touch,p),unit:`Ω·cm`}),(0,A.jsx)(W,{label:`n`,value:m,onChange:Y(g.touch,h),unit:`cm⁻³`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void g.run(`Mobility`,`ρ=${d} Ω·cm, n=${m} cm⁻³`,async()=>{let e=await Oe(Number(d),Number(m));return`μ = ${f(e.mu)} cm²/(V·s)`}),children:`=`})]}),Z(g.result)]}),(0,A.jsxs)(U,{title:`Current density`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`I`,value:_,onChange:Y(x.touch,v),unit:`A`}),(0,A.jsx)(W,{label:`A`,value:y,onChange:Y(x.touch,b),unit:`cm²`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void x.run(`Current density`,`I=${_} A, area=${y} cm²`,async()=>{let e=await ke(Number(_),Number(y));return`J = ${f(e.J)} A/cm²`}),children:`=`})]}),Z(x.result)]}),(0,A.jsxs)(U,{title:`Hall effect`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`V_H`,value:S,onChange:Y(M.touch,C),unit:`V`,width:72}),(0,A.jsx)(W,{label:`I`,value:w,onChange:Y(M.touch,T),unit:`A`,width:72})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`B`,value:E,onChange:Y(M.touch,D),unit:`T`,width:72}),(0,A.jsx)(W,{label:`t`,value:O,onChange:Y(M.touch,j),unit:`nm`,width:72,ariaLabel:`Hall effect thickness`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void M.run(`Hall effect`,`V_H=${S} V, I=${w} A, B=${E} T, thickness=${O} nm`,async()=>{let e=await Ae(Number(S),Number(w),Number(E),Number(O)*Ne);return`R_H = ${f(e.r_h)} cm³/C · n = ${f(e.carrier_density)} cm⁻³ · ${e.carrier_type}-type`}),children:`=`})]}),Z(M.result)]}),(0,A.jsxs)(U,{title:`Hall sweep (paste H, R_xy)`,children:[(0,A.jsx)(`div`,{className:`qzk-field-lbl`,style:{marginTop:0,marginBottom:4},children:`Paste field + Hall-resistance columns (one "H R_xy" pair per line — space, comma, or tab separated)`}),(0,A.jsx)(`textarea`,{className:`qz-input`,style:{width:`100%`,minHeight:80,fontFamily:`var(--font-mono)`},value:N,onChange:e=>{P(e.target.value),z.touch()},placeholder:`-1, -0.002
2
+ 0, 0.0005
3
+ 1, 0.0025
4
+ ...`,"aria-label":`Hall sweep H, R_xy data`}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`t`,value:F,onChange:Y(z.touch,I),unit:`nm (opt)`,width:72,ariaLabel:`Hall sweep thickness`}),(0,A.jsx)(W,{label:`σ`,value:L,onChange:Y(z.touch,R),unit:`S/cm (opt)`,width:80,ariaLabel:`Hall sweep sigma`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void z.run(`Hall sweep`,`data=${JSON.stringify(N)}, thickness=${F} nm, conductivity=${L} S/cm`,async()=>{let{x:e,y:t}=te(N);if(e.length<2)throw Error(`paste at least 2 valid H, R_xy rows`);let n=await je({field:e,hall_resistance:t,thickness:F.trim()===``?void 0:Number(F)*Ne,sigma:L.trim()===``?void 0:Number(L)}),r=`R_H = ${f(n.r_h)} cm³/C · n = ${f(n.carrier_density)} cm⁻³ · ${n.carrier_type}-type · R² = ${f(n.fit_r2)}`;return Number.isFinite(n.mobility)&&(r+=` · µ = ${f(n.mobility)} cm²/(V·s)`),r}),children:`Fit`})]}),Z(z.result)]}),(0,A.jsxs)(U,{title:`Van der Pauw`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`Ra`,value:B,onChange:Y(X.touch,V),unit:`Ω`,width:64}),(0,A.jsx)(W,{label:`Rb`,value:H,onChange:Y(X.touch,K),unit:`Ω`,width:64}),(0,A.jsx)(W,{label:`t`,value:q,onChange:Y(X.touch,ee),unit:`nm (opt)`,width:72,ariaLabel:`Van der Pauw thickness`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void X.run(`Van der Pauw`,`R_A=${B} Ω, R_B=${H} Ω, thickness=${q} nm`,async()=>{let e=q.trim()===``?void 0:Number(q)*Ne,t=await Me(Number(B),Number(H),e),n=`Rs = ${f(t.Rs)} Ω/sq`;return t.rho!=null&&(n+=` · ρ = ${f(t.rho)} Ω·cm`),n}),children:`Calculate`})]}),Z(X.result)]})]})}function Fe(e,t,n,r){return l(`/api/electrochemistry/nernst`,{e0:e,n:t,q:n,t:r})}function Ie(e,t,n,r){return l(`/api/electrochemistry/butler-volmer`,{j0:e,eta:t,alpha:n,t:r})}function Le(e,t){return l(`/api/electrochemistry/tafel-slope`,{alpha:e,t})}function Re(e,t){return l(`/api/electrochemistry/ohmic-drop`,{i:e,r:t})}function ze(e,t,n){return l(`/api/electrochemistry/double-layer-capacitance`,{epsilon:e,d:t,area:n})}function Be(){let[e,t]=(0,k.useState)(`0.77`),[n,i]=(0,k.useState)(`1`),[a,o]=(0,k.useState)(`0.01`),s=J(`Electrochemistry`),[c,l]=(0,k.useState)(`1e-3`),[u,d]=(0,k.useState)(`0.1`),[p,m]=(0,k.useState)(`0.5`),h=J(`Electrochemistry`),[g,_]=(0,k.useState)(`0.5`),[v,y]=(0,k.useState)(`298.15`),b=J(`Electrochemistry`),[x,S]=(0,k.useState)(`78`),[C,w]=(0,k.useState)(`0.5`),[T,E]=(0,k.useState)(`1`),D=J(`Electrochemistry`),[O,j]=(0,k.useState)(`1e-3`),[M,N]=(0,k.useState)(`50`),P=J(`Electrochemistry`);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Nernst potential`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`E⁰`,value:e,onChange:Y(s.touch,t),unit:`V`,width:72}),(0,A.jsx)(W,{label:`n`,value:n,onChange:Y(s.touch,i),width:56}),(0,A.jsx)(W,{label:`Q`,value:a,onChange:Y(s.touch,o),width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void s.run(`Nernst potential`,`E⁰=${e} V, n=${n}, Q=${a}`,async()=>{let t=await Fe(Number(e),Number(n),Number(a));return`E = ${f(t.E)} V`}),children:`=`})]}),Z(s.result)]}),(0,A.jsxs)(U,{title:`Butler-Volmer`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`j₀`,value:c,onChange:Y(h.touch,l),unit:`A/cm²`,width:72}),(0,A.jsx)(W,{label:`η`,value:u,onChange:Y(h.touch,d),unit:`V`,width:72}),(0,A.jsx)(W,{label:`α`,value:p,onChange:Y(h.touch,m),width:56}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void h.run(`Butler-Volmer`,`j₀=${c} A/cm², η=${u} V, α=${p}`,async()=>{let e=await Ie(Number(c),Number(u),Number(p));return`j = ${f(e.j)} A/cm²`}),children:`=`})]}),Z(h.result)]}),(0,A.jsxs)(U,{title:`Tafel slope`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`α`,value:g,onChange:Y(b.touch,_),width:56}),(0,A.jsx)(W,{label:`T`,value:v,onChange:Y(b.touch,y),unit:`K`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void b.run(`Tafel slope`,`α=${g}, T=${v} K`,async()=>{let e=await Le(Number(g),Number(v));return`b = ${f(e.bMv)} mV/decade`}),children:`=`})]}),Z(b.result)]}),(0,A.jsxs)(U,{title:`Double-layer capacitance`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`ε_r`,value:x,onChange:Y(D.touch,S),width:56}),(0,A.jsx)(W,{label:`d`,value:C,onChange:Y(D.touch,w),unit:`nm`,width:64}),(0,A.jsx)(W,{label:`A`,value:T,onChange:Y(D.touch,E),unit:`cm²`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void D.run(`Double-layer capacitance`,`εr=${x}, d=${C} nm, A=${T} cm²`,async()=>{let e=await ze(Number(x),Number(C),Number(T));return`C = ${f(e.CuF)} µF · ${f(e.Cspec*1e6)} µF/cm²`}),children:`=`})]}),Z(D.result)]}),(0,A.jsxs)(U,{title:`Ohmic drop (iR)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`I`,value:O,onChange:Y(P.touch,j),unit:`A`,width:72}),(0,A.jsx)(W,{label:`R`,value:M,onChange:Y(P.touch,N),unit:`Ω`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void P.run(`Ohmic drop (iR)`,`I=${O} A, R=${M} Ω`,async()=>{let e=await Re(Number(O),Number(M));return`V_IR = ${f(e.VmV)} mV (${f(e.V)} V)`}),children:`=`})]}),Z(P.result)]})]})}var Ve=30,He=[[`Atomic mass`,`mass`,`u`],[`Category`,`category`,``],[`Group`,`group`,``],[`Period`,`period`,``],[`Config`,`electronConfig`,``],[`Density`,`density`,`g/cm³`],[`Electronegativity`,`electronegativity`,``],[`Atomic radius`,`atomicRadius`,`pm`],[`Ionization energy`,`ionizationEnergy`,`eV`],[`Electron affinity`,`electronAffinity`,`eV`],[`Melting pt`,`meltingPoint`,`K`],[`Boiling pt`,`boilingPoint`,`K`],[`Thermal conductivity`,`thermalConductivity`,`W/(m·K)`],[`Neutron b_coh`,`bCoherent`,`fm`]],Ue=[`K`,`L1`,`L2`,`L3`];function We(){let[e,t]=(0,k.useState)(null),[n,r]=(0,k.useState)(!1),[i,a]=(0,k.useState)(``),[o,s]=(0,k.useState)(null);if((0,k.useEffect)(()=>{let e=!1;return D().then(n=>{e||t(n.elements)}).catch(()=>{e||r(!0)}),()=>{e=!0}},[]),n)return(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--text-faint)`},children:`Element data unavailable (backend offline).`});if(!e)return(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--text-faint)`},children:`Loading…`});let c=i.trim().toLowerCase(),l=c===``?e:e.filter(e=>e.symbol.toLowerCase().startsWith(c)||e.name.toLowerCase().includes(c)||String(e.Z)===c);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsx)(`input`,{className:`qz-input`,style:{width:`100%`},placeholder:`search symbol / name / Z`,value:i,onChange:e=>a(e.target.value),"aria-label":`element search`}),(0,A.jsxs)(`div`,{style:{maxHeight:150,overflowY:`auto`,marginTop:8},children:[l.slice(0,Ve).map(e=>(0,A.jsxs)(`button`,{className:o?.Z===e.Z?`qz-btn qz-active`:`qz-btn`,style:{display:`flex`,justifyContent:`space-between`,width:`100%`,marginBottom:2},onClick:()=>s(e),children:[(0,A.jsxs)(`span`,{children:[(0,A.jsx)(`b`,{style:{fontFamily:`var(--font-mono)`},children:e.symbol}),` `,e.name]}),(0,A.jsxs)(`span`,{style:{color:`var(--text-faint)`},children:[`Z=`,e.Z]})]},e.Z)),l.length===0&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{color:`var(--text-faint)`},children:`no match`}),l.length>Ve&&(0,A.jsxs)(`div`,{className:`qzk-ds-meta`,style:{color:`var(--text-faint)`},children:[`showing `,Ve,` of `,l.length,` — refine the search`]})]}),o&&(0,A.jsxs)(`div`,{style:{marginTop:10},children:[(0,A.jsxs)(`div`,{style:{fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-lg)`},children:[o.symbol,` — `,o.name]}),He.map(([e,t,n])=>{let r=o[t];if(r==null)return null;let i=typeof r==`number`?f(r):String(r);return(0,A.jsxs)(`div`,{className:`qz-meta-row`,children:[(0,A.jsx)(`span`,{className:`qz-k`,children:e}),(0,A.jsxs)(`span`,{className:`qz-v`,children:[i,n?` ${n}`:``]})]},t)}),(()=>{let e=o.xrayEdges,t=Ue.filter(t=>e?.[t]!=null);return t.length===0?null:(0,A.jsxs)(`div`,{style:{marginTop:6},children:[(0,A.jsx)(`div`,{className:`qzk-field-lbl`,style:{marginTop:0,marginBottom:2},children:`X-ray absorption edges`}),t.map(t=>(0,A.jsxs)(`div`,{className:`qz-meta-row`,children:[(0,A.jsx)(`span`,{className:`qz-k`,children:t}),(0,A.jsxs)(`span`,{className:`qz-v`,children:[f((e?.[t]??0)/1e3),` keV`]})]},t))]})})()]})]})}var Ge={color:`var(--text-dim)`,fontSize:`var(--font-size-sm)`},Ke={fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-sm)`};function qe(){let e=H(e=>e.favorites),t=H(e=>e.toggleFavorite);return e.length===0?(0,A.jsx)(`div`,{style:{...Ge,marginTop:12,color:`var(--text-faint)`},children:`No favorites yet — pin a result from History with the ☆ button.`}):(0,A.jsx)(`div`,{style:{marginTop:12},children:e.map(e=>(0,A.jsxs)(`div`,{className:`qz-meta-row`,style:{alignItems:`baseline`,gap:8},children:[(0,A.jsx)(v,{active:!0,"aria-label":`unpin from favorites`,onClick:()=>t(e.id),children:`★`}),(0,A.jsxs)(`span`,{style:{flex:1,minWidth:0},children:[(0,A.jsxs)(`div`,{style:Ge,children:[e.domain,` · `,e.label]}),e.inputs&&(0,A.jsxs)(`div`,{style:Ge,children:[`Inputs: `,e.inputs]}),(0,A.jsx)(`div`,{style:Ke,children:e.summary})]})]},e.id))})}var Je={color:`var(--text-dim)`,fontSize:`var(--font-size-sm)`},Ye={fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-sm)`};function Xe(){let e=H(e=>e.history),t=H(e=>e.favorites),n=H(e=>e.toggleFavorite),i=H(e=>e.clearHistory),a=new Set(t.map(e=>e.id));return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,A.jsxs)(`span`,{style:Je,children:[e.length,` result`,e.length===1?``:`s`]}),(0,A.jsx)(r,{size:`sm`,variant:`ghost`,disabled:e.length===0,onClick:()=>{s(`Clear ${e.length} calculator result${e.length===1?``:`s`}?`,`Favourites are kept. This cannot be undone.`,`Clear history`,!0).then(e=>{e&&i()})},children:`Clear history`})]}),e.length===0?(0,A.jsx)(`div`,{style:{...Je,marginTop:10,color:`var(--text-faint)`},children:`No results yet — run a calculator and it will appear here.`}):(0,A.jsx)(`div`,{style:{marginTop:8},children:e.map(e=>{let t=a.has(e.id);return(0,A.jsxs)(`div`,{className:`qz-meta-row`,style:{alignItems:`baseline`,gap:8},children:[(0,A.jsx)(v,{active:t,"aria-label":t?`unpin from favorites`:`pin to favorites`,onClick:()=>n(e.id),children:t?`★`:`☆`}),(0,A.jsxs)(`span`,{style:{flex:1,minWidth:0},children:[(0,A.jsxs)(`div`,{style:Je,children:[e.domain,` · `,e.label]}),e.inputs&&(0,A.jsxs)(`div`,{style:Je,children:[`Inputs: `,e.inputs]}),(0,A.jsx)(`div`,{style:Ye,children:e.summary})]})]},e.id)})})]})}function Ze({onPick:e}){return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsx)(`p`,{style:{marginTop:0,marginBottom:4,color:`var(--text-dim)`,fontSize:`var(--font-size-sm)`},children:`Materials-science calculators. Pick a domain to begin — every result is saved to History, and you can pin the ones you reuse to Favorites.`}),Hn.filter(e=>e.group!==`Session`).map(t=>(0,A.jsxs)(`div`,{style:{marginTop:10},children:[(0,A.jsx)(`div`,{className:`qzk-field-lbl`,style:{marginTop:0,marginBottom:6},children:t.group}),(0,A.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6},children:t.tabs.map(t=>(0,A.jsx)(r,{size:`sm`,onClick:()=>e(t.value),children:t.label},t.value))})]},t.group))]})}function Qe(e,t,n,r){return l(`/api/magnetic/moment-convert`,{value:e,unit:t,volume:n,atoms:r})}function $e(e){return l(`/api/magnetic/demag`,{shape:e})}function et(e,t){return l(`/api/magnetic/curie-weiss`,{C:e,theta:t})}function tt(e,t,n){return l(`/api/magnetic/langevin`,{mu:e,field_oe:t,temperature:n})}function nt(e,t){return l(`/api/magnetic/domain-wall`,{exchange_a:e,anisotropy_k:t})}function rt(e){return l(`/api/magnetic/curie-weiss-fit`,e)}var it=[`emu`,`Am2`,`memu`,`uemu`],at=[`Sphere`,`Thin film (in-plane)`,`Thin film (out-of-plane)`,`Long cylinder (axial)`,`Long cylinder (transverse)`];function ot(){let[e,t]=(0,k.useState)(`1e-3`),[n,i]=(0,k.useState)(`emu`),[a,o]=(0,k.useState)(`0`),[s,c]=(0,k.useState)(`0`),l=J(`Magnetic`),[u,d]=(0,k.useState)(`Sphere`),p=J(`Magnetic`),[m,h]=(0,k.useState)(`4.375`),[g,_]=(0,k.useState)(`-50`),v=J(`Magnetic`),[y,b]=(0,k.useState)(`1e-16`),[x,S]=(0,k.useState)(`10000`),[C,w]=(0,k.useState)(`300`),T=J(`Magnetic`),[E,D]=(0,k.useState)(`2e-6`),[O,j]=(0,k.useState)(`4.8e6`),M=J(`Magnetic`),[N,P]=(0,k.useState)(``),F=J(`Magnetic`);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Moment conversions`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`m`,value:e,onChange:Y(l.touch,t),width:90}),(0,A.jsx)(`select`,{className:`qz-select`,value:n,onChange:e=>{i(e.target.value),l.touch()},"aria-label":`moment unit`,children:it.map(e=>(0,A.jsx)(`option`,{value:e,children:e},e))})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`V`,value:a,onChange:Y(l.touch,o),unit:`cm³`,width:72}),(0,A.jsx)(W,{label:`atoms`,value:s,onChange:Y(l.touch,c),width:84}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void l.run(`Moment conversions`,`moment=${e} ${n}, volume=${a} cm³, atoms=${s}`,async()=>{let t=Number(a),r=Number(s),i=await Qe(Number(e),n,t>0?t:void 0,r>0?r:void 0),o=`${f(i.emu)} emu = ${f(i.am2)} A·m² = ${f(i.mu_b)} µ_B`;return i.m_si!=null&&(o+=` · M = ${f(i.m_si)} A/m`),i.mu_b_per_atom!=null&&(o+=` · ${f(i.mu_b_per_atom)} µ_B/atom`),o}),children:`Convert`})]}),Z(l.result)]}),(0,A.jsxs)(U,{title:`Demagnetization factors`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(`select`,{className:`qz-select`,value:u,onChange:e=>{d(e.target.value),p.touch()},"aria-label":`shape`,children:at.map(e=>(0,A.jsx)(`option`,{value:e,children:e},e))}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void p.run(`Demagnetization factors`,`shape=${u}`,async()=>{let e=await $e(u);return`Nz = ${f(e.Nz)} · Nxy = ${f(e.Nxy)} · 4πNz = ${f(e.n_cgs)}`}),children:`Calculate`})]}),Z(p.result)]}),(0,A.jsxs)(U,{title:`Curie-Weiss law`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`C`,value:m,onChange:Y(v.touch,h),unit:`emu·K/mol`,width:72}),(0,A.jsx)(W,{label:`θ`,value:g,onChange:Y(v.touch,_),unit:`K`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void v.run(`Curie-Weiss law`,`C=${m}, θ=${g} K`,async()=>{let e=await et(Number(m),Number(g));return`µ_eff = ${f(e.mu_eff)} µ_B · ${e.mag_type}`}),children:`Calculate`})]}),Z(v.result)]}),(0,A.jsxs)(U,{title:`Langevin / superparamagnetism`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`µ`,value:y,onChange:Y(T.touch,b),unit:`emu`,width:72}),(0,A.jsx)(W,{label:`H`,value:x,onChange:Y(T.touch,S),unit:`Oe`,width:72}),(0,A.jsx)(W,{label:`T`,value:C,onChange:Y(T.touch,w),unit:`K`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void T.run(`Langevin / superparamagnetism`,`μ=${y} μ_B, H=${x} T, T=${C} K`,async()=>{let e=await tt(Number(y),Number(x),Number(C));return`L(x) = ${f(e.L)} at x = ${f(e.x)}`}),children:`Calculate`})]}),Z(T.result)]}),(0,A.jsxs)(U,{title:`Domain wall & anisotropy`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`A`,value:E,onChange:Y(M.touch,D),unit:`erg/cm`,width:72}),(0,A.jsx)(W,{label:`K`,value:O,onChange:Y(M.touch,j),unit:`erg/cm³`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void M.run(`Domain wall & anisotropy`,`A=${E} J/m, K=${O} J/m³`,async()=>{let e=await nt(Number(E),Number(O));return`δ = ${f(e.delta_nm)} nm · E_wall = ${f(e.e_wall_mj_m2)} mJ/m²`}),children:`Calculate`})]}),Z(M.result)]}),(0,A.jsxs)(U,{title:`Curie-Weiss fit (paste T, χ)`,children:[(0,A.jsx)(`div`,{className:`qzk-field-lbl`,style:{marginTop:0,marginBottom:4},children:`Paste temperature + susceptibility columns (one "T χ" pair per line — space, comma, or tab separated)`}),(0,A.jsx)(`textarea`,{className:`qz-input`,style:{width:`100%`,minHeight:80,fontFamily:`var(--font-mono)`},value:N,onChange:e=>{P(e.target.value),F.touch()},placeholder:`100, 0.0333
5
+ 150, 0.04
6
+ 200, 0.05
7
+ ...`,"aria-label":`Curie-Weiss T, chi data`}),(0,A.jsx)(`div`,{style:{...G,marginTop:8},children:(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void F.run(`Curie-Weiss fit`,`data=${JSON.stringify(N)}`,async()=>{let{x:e,y:t}=te(N);if(e.length<3)throw Error(`paste at least 3 valid T, χ rows`);let n=await rt({temperature:e,susceptibility:t});return`θ_CW = ${f(n.theta_cw)} K · C = ${f(n.C)} emu·K/mol · µ_eff = ${f(n.mu_eff)} µ_B · R² = ${f(n.r2)}`}),children:`Fit`})}),Z(F.result)]})]})}function st(e,t,n){return l(`/api/optics/fresnel`,{n1:e,n2:t,theta:n})}function ct(e,t){return l(`/api/optics/critical-angle`,{n1:e,n2:t})}function lt(e,t){return l(`/api/optics/brewster-angle`,{n1:e,n2:t})}function ut(e,t,n){return l(`/api/optics/penetration-depth`,{n:e,k:t,wavelength:n})}function dt(e,t){return l(`/api/optics/skin-depth`,{rho:e,f:t})}function ft(e,t){return l(`/api/optics/refractive-to-dielectric`,{n:e,k:t})}function pt(e,t){return l(`/api/optics/dielectric-to-refractive`,{eps1:e,eps2:t})}function mt(){let[e,t]=(0,k.useState)(`1.0`),[n,i]=(0,k.useState)(`1.5`),[a,o]=(0,k.useState)(`45`),s=J(`Optics`),[c,l]=(0,k.useState)(`1.5`),[u,d]=(0,k.useState)(`1.0`),p=J(`Optics`),[m,h]=(0,k.useState)(`1.0`),[g,_]=(0,k.useState)(`0.001`),[v,y]=(0,k.useState)(`1.5406`),b=J(`Optics`),[x,S]=(0,k.useState)(`1.7e-8`),[C,w]=(0,k.useState)(`1e9`),T=J(`Optics`),[E,D]=(0,k.useState)(`3.5`),[O,j]=(0,k.useState)(`0.0`),[M,N]=(0,k.useState)(`12.25`),[P,F]=(0,k.useState)(`0.0`),I=J(`Optics`);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Fresnel coefficients`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`n₁`,value:e,onChange:Y(s.touch,t),width:64}),(0,A.jsx)(W,{label:`n₂`,value:n,onChange:Y(s.touch,i),width:64}),(0,A.jsx)(W,{label:`θ`,value:a,onChange:Y(s.touch,o),unit:`°`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void s.run(`Fresnel coefficients`,`n₁=${e}, n₂=${n}, θ=${a}°`,async()=>{let t=await st(Number(e),Number(n),Number(a));return`Rs = ${f(t.Rs)} · Rp = ${f(t.Rp)} · Ts = ${f(t.Ts)} · Tp = ${f(t.Tp)}`}),children:`Calculate`})]}),Z(s.result)]}),(0,A.jsxs)(U,{title:`Critical / Brewster angle`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`n₁`,value:c,onChange:Y(p.touch,l),width:64}),(0,A.jsx)(W,{label:`n₂`,value:u,onChange:Y(p.touch,d),width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void p.run(`Critical / Brewster angle`,`n₁=${c}, n₂=${u}`,async()=>{let[e,t]=await Promise.all([ct(Number(c),Number(u)),lt(Number(c),Number(u))]);return`θc = ${Number.isNaN(e.theta_c)?`— (no TIR)`:`${f(e.theta_c)}°`} · θB = ${f(t.theta_b)}°`}),children:`Calculate`})]}),Z(p.result)]}),(0,A.jsxs)(U,{title:`Penetration depth`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`n`,value:m,onChange:Y(b.touch,h),width:64}),(0,A.jsx)(W,{label:`k`,value:g,onChange:Y(b.touch,_),width:64}),(0,A.jsx)(W,{label:`λ`,value:v,onChange:Y(b.touch,y),width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void b.run(`Penetration depth`,`n=${m}, k=${g}, λ=${v}`,async()=>{let e=await ut(Number(m),Number(g),Number(v));return`depth = ${f(e.depth)} (same unit as λ)`}),children:`Calculate`})]}),Z(b.result)]}),(0,A.jsxs)(U,{title:`Skin depth`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`ρ`,value:x,onChange:Y(T.touch,S),unit:`Ω·m`}),(0,A.jsx)(W,{label:`f`,value:C,onChange:Y(T.touch,w),unit:`Hz`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void T.run(`Skin depth`,`ρ=${x} Ω·m, f=${C} Hz`,async()=>{let e=await dt(Number(x),Number(C));return`δ = ${f(e.delta_um)} µm`}),children:`Calculate`})]}),Z(T.result)]}),(0,A.jsxs)(U,{title:`Refractive index / Dielectric function`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`n`,value:E,onChange:Y(I.touch,D),width:64}),(0,A.jsx)(W,{label:`k`,value:O,onChange:Y(I.touch,j),width:64}),(0,A.jsx)(r,{size:`sm`,onClick:()=>void I.run(`Refractive index / Dielectric function`,`direction=n,k→ε; n=${E}, k=${O}`,async e=>{let t=await ft(Number(E),Number(O));return e()&&(N(String(t.eps1)),F(String(t.eps2))),`ε₁ = ${f(t.eps1)} · ε₂ = ${f(t.eps2)}`}),children:`n,k → ε`})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`ε₁`,value:M,onChange:Y(I.touch,N),width:64}),(0,A.jsx)(W,{label:`ε₂`,value:P,onChange:Y(I.touch,F),width:64}),(0,A.jsx)(r,{size:`sm`,onClick:()=>void I.run(`Refractive index / Dielectric function`,`direction=ε→n,k; ε₁=${M}, ε₂=${P}`,async e=>{let t=await pt(Number(M),Number(P));return e()&&(D(String(t.n)),j(String(t.k))),`n = ${f(t.n)} · k = ${f(t.k)}`}),children:`ε → n,k`})]}),Z(I.result)]})]})}function ht(e,t,n,r){return l(`/api/semiconductor/intrinsic`,{eg:e,me_star:t,mh_star:n,t:r})}function gt(e,t,n){return l(`/api/semiconductor/carrier-concentration`,{nd:e,na:t,ni:n})}function _t(e,t,n,r){return l(`/api/semiconductor/built-in-potential`,{na:e,nd:t,ni:n,t:r})}function vt(e,t,n,r,i){return l(`/api/semiconductor/depletion-width`,{vbi:e,na:t,nd:n,epsilon_r:r,t:i})}function yt(e,t){return l(`/api/semiconductor/diffusion-coeff`,{mu:e,t})}function bt(e,t){return l(`/api/semiconductor/diffusion-length`,{d:e,tau:t})}function xt(e,t,n,r,i,a){return l(`/api/semiconductor/fermi-level`,{eg:e,me_star:t,mh_star:n,nd:r,na:i,t:a})}function St(e,t,n){return l(`/api/semiconductor/debye-length`,{n:e,epsilon_r:t,t:n})}function Ct(e,t){return l(`/api/semiconductor/sheet-carrier-density`,{n:e,t})}function wt(e,t){return l(`/api/semiconductor/thermal-velocity`,{m_star:e,t})}function Tt(e,t,n,r){return l(`/api/semiconductor/hall-coefficient`,{n:e,p:t,mu_e:n,mu_h:r})}function Et(e,t,n){return l(`/api/semiconductor/mobility-model`,{material:e,t,n})}var Dt={Si:{Eg:1.12,eps_r:11.7,me:1.08,mh:.81},Ge:{Eg:.66,eps_r:16,me:.55,mh:.37},GaAs:{Eg:1.42,eps_r:12.9,me:.067,mh:.45},InP:{Eg:1.35,eps_r:12.5,me:.08,mh:.6},GaN:{Eg:3.4,eps_r:8.9,me:.2,mh:1.4},SiC:{Eg:3.26,eps_r:9.7,me:.37,mh:1}},Ot=Object.keys(Dt),kt=1e-7,At=[{title:`Intrinsic carrier concentration`,material:[{from:`Eg`,to:`ni_eg`},{from:`me`,to:`ni_me`},{from:`mh`,to:`ni_mh`}],fields:[{id:`ni_eg`,label:`Eg`,unit:`eV`,width:64,default:`1.12`},{id:`ni_me`,label:`mₑ*`,width:60,default:`1.08`},{id:`ni_mh`,label:`m_h*`,width:60,default:`0.81`},{id:`ni_t`,label:`T`,unit:`K`,width:56,default:`300`}],compute:async e=>{let t=await ht(e(`ni_eg`),e(`ni_me`),e(`ni_mh`),e(`ni_t`));return`nᵢ = ${f(t.ni)} cm⁻³ · Nc = ${f(t.Nc)} · Nv = ${f(t.Nv)}`}},{title:`Carrier concentrations`,fields:[{id:`cc_nd`,label:`Nd`,unit:`cm⁻³`,width:72,default:`1e16`},{id:`cc_na`,label:`Na`,unit:`cm⁻³`,width:72,default:`0`},{id:`cc_ni`,label:`nᵢ`,unit:`cm⁻³`,width:72,default:`1.5e10`}],compute:async e=>{let t=await gt(e(`cc_nd`),e(`cc_na`),e(`cc_ni`));return`n = ${f(t.n)} · p = ${f(t.p)} cm⁻³ · ${t.type}-type`}},{title:`Depletion width (p-n junction)`,material:[{from:`eps_r`,to:`dw_eps`}],fields:[{id:`dw_eps`,label:`εᵣ`,width:60,default:`11.7`},{id:`dw_vbi`,label:`Vbi`,unit:`V`,width:60,default:`0.7`},{id:`dw_na`,label:`Na`,unit:`cm⁻³`,width:72,default:`1e16`},{id:`dw_nd`,label:`Nd`,unit:`cm⁻³`,width:72,default:`1e17`}],compute:async e=>{let t=await vt(e(`dw_vbi`),e(`dw_na`),e(`dw_nd`),e(`dw_eps`),300);return`W = ${f(t.W)} nm · xₙ = ${f(t.xn)} · xₚ = ${f(t.xp)} nm`}},{title:`Transport (diffusion coefficient & length)`,fields:[{id:`tr_mu`,label:`μ`,unit:`cm²/V·s`,width:72,default:`1400`},{id:`tr_tau`,label:`τ`,unit:`s`,width:72,default:`1e-6`}],compute:async e=>{let t=await yt(e(`tr_mu`),300),n=await bt(t.D,e(`tr_tau`));return`D = ${f(t.D)} cm²/s · L = ${f(n.Lum)} µm`}},{title:`Fermi level (relative to Eᵢ)`,fields:[{id:`fl_eg`,label:`Eg`,unit:`eV`,width:56,default:`1.12`},{id:`fl_me`,label:`mₑ*`,width:52,default:`1.08`},{id:`fl_mh`,label:`m_h*`,width:52,default:`0.81`},{id:`fl_nd`,label:`Nd`,unit:`cm⁻³`,width:64,default:`1e16`},{id:`fl_na`,label:`Na`,unit:`cm⁻³`,width:64,default:`0`},{id:`fl_t`,label:`T`,unit:`K`,width:52,default:`300`}],compute:async e=>{let t=await xt(e(`fl_eg`),e(`fl_me`),e(`fl_mh`),e(`fl_nd`),e(`fl_na`),e(`fl_t`));return`E_F − Eᵢ = ${f(t.EF)} eV · ${t.type}-type`}},{title:`Debye screening length`,fields:[{id:`dl_eps`,label:`εᵣ`,width:60,default:`11.7`},{id:`dl_n`,label:`n`,unit:`cm⁻³`,width:72,default:`1e16`},{id:`dl_t`,label:`T`,unit:`K`,width:56,default:`300`}],compute:async e=>{let t=await St(e(`dl_n`),e(`dl_eps`),e(`dl_t`));return`L_D = ${f(t.LD)} nm`}},{title:`Built-in potential (p-n junction)`,fields:[{id:`bv_na`,label:`Na`,unit:`cm⁻³`,width:64,default:`1e17`},{id:`bv_nd`,label:`Nd`,unit:`cm⁻³`,width:64,default:`1e17`},{id:`bv_ni`,label:`nᵢ`,unit:`cm⁻³`,width:64,default:`9.65e9`},{id:`bv_t`,label:`T`,unit:`K`,width:52,default:`300`}],compute:async e=>{let t=await _t(e(`bv_na`),e(`bv_nd`),e(`bv_ni`),e(`bv_t`));return`V_bi = ${f(t.Vbi)} V`}},{title:`Sheet carrier density`,fields:[{id:`sc_n`,label:`n`,unit:`cm⁻³`,width:84,default:`1e17`},{id:`sc_t`,label:`t`,unit:`nm`,width:72,default:`10`}],compute:async e=>{let t=await Ct(e(`sc_n`),e(`sc_t`)*kt);return`n_s = ${f(t.ns)} cm⁻²`}},{title:`Thermal velocity`,fields:[{id:`tv_m`,label:`m*`,width:84,default:`0.26`},{id:`tv_t`,label:`T`,unit:`K`,width:72,default:`300`}],compute:async e=>{let t=await wt(e(`tv_m`),e(`tv_t`));return`v_th = ${f(t.vth)} cm/s`}},{title:`Hall coefficient (mixed conduction)`,fields:[{id:`hc_n`,label:`n`,unit:`cm⁻³`,width:64,default:`1e16`},{id:`hc_p`,label:`p`,unit:`cm⁻³`,width:64,default:`1e4`},{id:`hc_me`,label:`μₑ`,width:56,default:`1400`},{id:`hc_mh`,label:`μ_h`,width:56,default:`450`}],compute:async e=>{let t=await Tt(e(`hc_n`),e(`hc_p`),e(`hc_me`),e(`hc_mh`));return`R_H = ${f(t.RH)} cm³/C · ${t.apparent_type}-type`}},{title:`Mobility (Caughey-Thomas, Si)`,fields:[{id:`mm_n`,label:`N`,unit:`cm⁻³`,width:84,default:`1e16`},{id:`mm_t`,label:`T`,unit:`K`,width:72,default:`300`}],compute:async e=>{let t=await Et(`Si`,e(`mm_t`),e(`mm_n`));return`μₑ = ${f(t.muE)} · μ_h = ${f(t.muH)} cm²/V·s`}}],jt=Object.fromEntries(At.flatMap(e=>e.fields.map(e=>[e.id,e.default])));function Mt(){let[e,t]=(0,k.useState)(jt),n=[J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`),J(`Semiconductor`)],i=e=>n=>t(t=>({...t,[e]:n})),a=t=>Number(e[t]);function o(t,r){let i=r.fields.map(t=>`${t.label}=${e[t.id]}${t.unit?` ${t.unit}`:``}`).join(`, `);return n[t].run(r.title,i,()=>r.compute(a))}function s(e,r,i){let a=Dt[i];a&&r.material&&(t(e=>{let t={...e};for(let e of r.material??[])t[e.to]=String(a[e.from]);return t}),n[e].touch())}return(0,A.jsx)(`div`,{style:{marginTop:12},children:At.map((t,a)=>(0,A.jsxs)(U,{title:t.title,children:[(0,A.jsxs)(`div`,{style:G,children:[t.material&&(0,A.jsxs)(`select`,{className:`qz-select`,defaultValue:``,"aria-label":`${t.title} material preset`,onChange:e=>e.target.value&&s(a,t,e.target.value),children:[(0,A.jsx)(`option`,{value:``,children:`(manual)`}),Ot.map(e=>(0,A.jsx)(`option`,{value:e,children:e},e))]}),t.fields.map(t=>(0,A.jsx)(W,{label:t.label,value:e[t.id],onChange:Y(n[a].touch,i(t.id)),width:t.width,unit:t.unit},t.id)),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void o(a,t),children:`=`})]}),Z(n[a].result)]},t.title))})}function Nt(e){return Number.isFinite(e)?e>=1?`${f(e)} cm`:e>=.1?`${f(e*10)} mm`:`${f(e*1e4)} µm`:`∞`}var Pt=`×10⁻⁶ Å⁻²`;function Ft({title:e,p:t,extra:n}){return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(`div`,{className:`qzk-field-lbl`,children:[e,` `,(0,A.jsxs)(`span`,{style:{color:`var(--text-faint)`},children:[`(λ `,f(t.wavelength),` Å)`]})]}),(0,A.jsxs)(`div`,{style:{fontFamily:`var(--font-mono)`,marginTop:4},children:[(0,A.jsxs)(`div`,{style:{fontSize:`var(--font-size-lg)`},children:[f(t.sld_real),` `,(0,A.jsx)(`span`,{style:{color:`var(--text-dim)`},children:Pt}),(0,A.jsx)(X,{value:String(t.sld_real),label:`${e} value`})]}),(0,A.jsxs)(`div`,{style:{color:`var(--text-dim)`,marginTop:2},children:[`+ i `,f(t.sld_imag),` `,Pt,` `,(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`(abs)`})]}),(0,A.jsxs)(`div`,{style:{color:`var(--text-dim)`,marginTop:4},children:[`Qc = `,f(t.qc),` Å⁻¹ · 1/e = `,Nt(t.penetration)]}),n]})]})}function It({c:e}){let t=e.sldResult,n=o(e=>e.seedReflectivityLayer),i=(e,r)=>{if(m()){d(`use ↗ in the title bar to open the full app`);return}n({sld:e*1e-6,label:`${t?.formula??`SLD`} ${r}`})};return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsx)(`div`,{style:{display:`flex`,gap:6,flexWrap:`wrap`},children:ce.map(t=>(0,A.jsx)(y,{active:e.sld.formula===t.formula&&Number(e.sld.density)===t.density,onClick:()=>e.setSldPreset(t.formula,t.density),children:t.label},t.label))}),(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`,marginTop:10},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`formula`}),(0,A.jsx)(g,{numeric:!1,value:e.sld.formula,width:92,onChange:t=>e.updSld({formula:t}),"aria-label":`chemical formula`}),(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`ρ`}),(0,A.jsx)(g,{value:e.sld.density,width:64,onChange:t=>e.updSld({density:t})}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`g/cm³`}),(0,A.jsx)(r,{variant:`ghost`,size:`sm`,onClick:e.sendFormulaToCrystal,title:`Use this formula in the Crystal tab (cell volume + theoretical density)`,children:`→ Crystal`})]}),(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`λn`}),(0,A.jsx)(g,{value:e.sld.neutronWavelength,width:72,onChange:t=>e.updSld({neutronWavelength:t})}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`Å`})]}),(0,A.jsx)(`div`,{style:{display:`flex`,gap:6,flexWrap:`wrap`,marginTop:6},children:se.map(t=>(0,A.jsx)(y,{active:Number(e.sld.neutronWavelength)===t.a,onClick:()=>e.updSld({neutronWavelength:String(t.a)}),children:t.label},t.label))}),(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`λx`}),(0,A.jsx)(g,{value:e.sld.xrayWavelength,width:72,onChange:t=>e.updSld({xrayWavelength:t})}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`Å`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,disabled:e.sldBusy,onClick:()=>void e.sldCompute(),children:`=`})]}),(0,A.jsx)(`div`,{style:{display:`flex`,gap:6,flexWrap:`wrap`,marginTop:6},children:oe.map(t=>(0,A.jsx)(y,{active:Number(e.sld.xrayWavelength)===t.a,onClick:()=>e.updSld({xrayWavelength:String(t.a)}),children:t.label},t.label))}),t&&!e.sldError&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(Ft,{title:`Neutron SLD`,p:t.neutron,extra:t.neutron.xs_absorption==null?null:(0,A.jsxs)(`div`,{style:{color:`var(--text-faint)`,marginTop:2},children:[`σabs = `,f(t.neutron.xs_absorption),` cm⁻¹ · σinc =`,` `,f(t.neutron.xs_incoherent??0),` cm⁻¹`]})}),(0,A.jsx)(Ft,{title:`X-ray SLD`,p:t.xray}),(0,A.jsxs)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--text-faint)`},children:[t.formula,` · M = `,f(t.molar_mass),` g/mol · n = `,f(t.number_density),` cm⁻³`]}),(0,A.jsxs)(`div`,{style:{display:`flex`,gap:6,flexWrap:`wrap`,marginTop:10},children:[(0,A.jsx)(r,{variant:`ghost`,size:`sm`,onClick:()=>i(t.neutron.sld_real,`neutron`),title:`Add this neutron SLD as a layer in the reflectivity workshop`,children:`→ Reflectivity (n)`}),(0,A.jsx)(r,{variant:`ghost`,size:`sm`,onClick:()=>i(t.xray.sld_real,`X-ray`),title:`Add this X-ray SLD as a layer in the reflectivity workshop`,children:`→ Reflectivity (x)`})]})]}),e.sldError&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--danger)`},children:e.sldError})]})}function Lt(){return u(`/api/substrates`)}function Rt(e,t){return l(`/api/substrates/mismatch`,{a_film:e,a_sub:t})}function zt(e,t,n){return l(`/api/substrates/critical-thickness`,{a_film:e,a_sub:t,nu:n})}var Bt=[[`a`,`a`,`Å`],[`b`,`b`,`Å`],[`c`,`c`,`Å`],[`α`,`alpha`,`°`],[`β`,`beta`,`°`],[`γ`,`gamma`,`°`]],Vt=[[`Density`,`density`,`g/cm³`],[`CTE`,`thermalExpansion`,`10⁻⁶/K`],[`ε_r`,`dielectric`,``]];function Ht(){let[e,t]=(0,k.useState)(null),[n,r]=(0,k.useState)(!1),[i,a]=(0,k.useState)(``),[o,s]=(0,k.useState)(null),[c,l]=(0,k.useState)(`3.876`),u=J(`Substrates`),[d,p]=(0,k.useState)(`0.3`),m=J(`Substrates`);if((0,k.useEffect)(()=>{let e=!1;return Lt().then(n=>{e||t(n.substrates)}).catch(()=>{e||r(!0)}),()=>{e=!0}},[]),n)return(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--text-faint)`},children:`Substrate data unavailable (backend offline).`});if(!e)return(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--text-faint)`},children:`Loading…`});let h=i.trim().toLowerCase(),g=h===``?e:e.filter(e=>e.name.toLowerCase().includes(h)||e.formula.toLowerCase().includes(h));async function _(){if(!o||o.a==null){u.setResult({text:`${o?.name??`substrate`} has no lattice parameter`,err:!0});return}let e=Number(c);if(!Number.isFinite(e)||e<=0){u.setResult({text:`a_film must be a positive number`,err:!0});return}await u.run(`Lattice mismatch vs ${o.name}`,`a_film=${c} Å, substrate=${o.name}, a_sub=${o.a} Å`,async()=>{let t=await Rt(e,o.a);return`f = ${f(t.mismatchPct)} % (${t.description})`})}async function v(){if(!o||o.a==null)return;let e=Number(c),t=Number(d);if(!Number.isFinite(e)||e<=0){m.setResult({text:`a_film must be a positive number`,err:!0});return}await m.run(`Matthews-Blakeslee critical thickness`,`a_film=${c} Å, a_sub=${o.a} Å, ν=${d}`,async()=>{let n=await zt(e,o.a,t);return n.matched?`h_c = ∞ (lattice matched)`:`h_c = ${f(n.h_c)} Å = ${f(n.h_c_nm)} nm`})}let y=o?.latticeType===`amorphous`;return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsx)(`input`,{className:`qz-input`,style:{width:`100%`},placeholder:`search name / formula`,value:i,onChange:e=>a(e.target.value),"aria-label":`substrate search`}),(0,A.jsxs)(`div`,{style:{maxHeight:150,overflowY:`auto`,marginTop:8},children:[g.map(e=>(0,A.jsxs)(`button`,{className:o?.name===e.name?`qz-btn qz-active`:`qz-btn`,style:{display:`flex`,justifyContent:`space-between`,width:`100%`,marginBottom:2},onClick:()=>{s(e),u.touch(),m.touch()},children:[(0,A.jsx)(`span`,{children:(0,A.jsx)(`b`,{style:{fontFamily:`var(--font-mono)`},children:e.name})}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:e.formula})]},e.name)),g.length===0&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{color:`var(--text-faint)`},children:`no match`})]}),o&&(0,A.jsxs)(`div`,{style:{marginTop:10},children:[(0,A.jsxs)(`div`,{style:{fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-lg)`},children:[o.formula,` — `,o.orientation]}),(0,A.jsxs)(`div`,{className:`qz-meta-row`,children:[(0,A.jsx)(`span`,{className:`qz-k`,children:`Lattice type`}),(0,A.jsx)(`span`,{className:`qz-v`,children:o.latticeType})]}),!y&&Bt.map(([e,t,n])=>{let r=o[t];return r==null?null:(0,A.jsxs)(`div`,{className:`qz-meta-row`,children:[(0,A.jsx)(`span`,{className:`qz-k`,children:e}),(0,A.jsxs)(`span`,{className:`qz-v`,children:[f(r),n?` ${n}`:``]})]},t)}),Vt.map(([e,t,n])=>(0,A.jsxs)(`div`,{className:`qz-meta-row`,children:[(0,A.jsx)(`span`,{className:`qz-k`,children:e}),(0,A.jsxs)(`span`,{className:`qz-v`,children:[f(o[t]),n?` ${n}`:``]})]},t)),!y&&(0,A.jsxs)(U,{title:`Lattice mismatch vs ${o.name}`,children:[(0,A.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`a_film`}),(0,A.jsx)(`input`,{className:`qz-input`,style:{width:90},value:c,onChange:e=>{l(e.target.value),u.touch(),m.touch()},"aria-label":`a_film`}),(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`Å`}),(0,A.jsx)(`button`,{className:`qz-btn`,onClick:()=>void _(),children:`Mismatch`})]}),Z(u.result)]}),!y&&(0,A.jsxs)(U,{title:`Matthews-Blakeslee critical thickness`,children:[(0,A.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6,flexWrap:`wrap`},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`b = a_film/√2`}),(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`ν`}),(0,A.jsx)(`input`,{className:`qz-input`,style:{width:48},value:d,onChange:e=>{p(e.target.value),m.touch()},"aria-label":`Poisson ratio`}),(0,A.jsx)(`button`,{className:`qz-btn`,onClick:()=>void v(),children:`Calculate`})]}),Z(m.result)]})]})]})}function Ut(e,t,n){return l(`/api/superconductor/london-depth`,{lambda0:e,t,tc:n})}function Wt(e,t,n){return l(`/api/superconductor/coherence-length`,{xi0:e,t,tc:n})}function Gt(e,t){return l(`/api/superconductor/gl-parameter`,{lambda_:e,xi:t})}function Kt(e,t,n,r){return l(`/api/superconductor/critical-fields`,{hc0:e,tc:t,t:n,material:r})}function qt(e,t,n,r){return l(`/api/superconductor/depairing-current`,{hc0:e,lambda0:t,tc:n,t:r})}function Jt(e,t){return l(`/api/superconductor/bcs-gap`,{tc:e,t})}var Yt={Nb:{Tc:9.25,lambda0:39,xi0:38,Hc0:1980},NbN:{Tc:16,lambda0:200,xi0:5,Hc0:8e4},YBCO:{Tc:92,lambda0:150,xi0:1.5,Hc0:0},MgB2:{Tc:39,lambda0:140,xi0:5,Hc0:0},Al:{Tc:1.18,lambda0:16,xi0:1600,Hc0:105},Pb:{Tc:7.19,lambda0:37,xi0:83,Hc0:803},In:{Tc:3.41,lambda0:24,xi0:440,Hc0:282},Sn:{Tc:3.72,lambda0:34,xi0:230,Hc0:305}},Xt=Object.keys(Yt),Zt=e=>Number.isNaN(e)?`—`:`${f(e)} Oe`;function Qt(){let[e,t]=(0,k.useState)(`9.25`),[n,i]=(0,k.useState)(`4.2`),a=J(`Superconductor`),[o,s]=(0,k.useState)(`Nb`),[c,l]=(0,k.useState)(`39`),[u,d]=(0,k.useState)(`9.25`),[p,m]=(0,k.useState)(`4.2`),h=J(`Superconductor`),[g,_]=(0,k.useState)(`Nb`),[v,y]=(0,k.useState)(`38`),[b,x]=(0,k.useState)(`9.25`),[S,C]=(0,k.useState)(`4.2`),w=J(`Superconductor`),[T,E]=(0,k.useState)(`39`),[D,O]=(0,k.useState)(`38`),j=J(`Superconductor`),[M,N]=(0,k.useState)(`Nb`),[P,F]=(0,k.useState)(`1980`),[I,L]=(0,k.useState)(`9.25`),[R,z]=(0,k.useState)(`4.2`),B=J(`Superconductor`),[V,H]=(0,k.useState)(`Nb`),[K,q]=(0,k.useState)(`1980`),[ee,te]=(0,k.useState)(`39`),[X,ne]=(0,k.useState)(`9.25`),[Q,re]=(0,k.useState)(`4.2`),$=J(`Superconductor`);function ie({value:e,onChange:t,fill:n,touch:r}){return(0,A.jsx)(`select`,{className:`qz-select`,"aria-label":`material`,value:e,onChange:e=>{let i=e.target.value;t(i),Yt[i]&&n(Yt[i]),r()},children:Xt.map(e=>(0,A.jsx)(`option`,{value:e,children:e},e))})}return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`BCS gap Δ₀ = 1.764·k_B·T_c`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`T_c`,value:e,onChange:Y(a.touch,t),unit:`K`,width:64}),(0,A.jsx)(W,{label:`T`,value:n,onChange:Y(a.touch,i),unit:`K`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void a.run(`BCS gap`,`T_c=${e} K, T=${n} K`,async()=>{let t=await Jt(Number(e),Number(n));return`Δ₀ = ${f(t.delta0)} meV · Δ(T) = ${f(t.deltaT)} meV · 2Δ₀/k_BT_c = ${f(t.ratio)}`}),children:`Calculate`})]}),Z(a.result)]}),(0,A.jsxs)(U,{title:`London penetration depth`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(ie,{value:o,onChange:s,fill:e=>{l(String(e.lambda0)),d(String(e.Tc))},touch:h.touch}),(0,A.jsx)(W,{label:`λ₀`,value:c,onChange:Y(h.touch,l),unit:`nm`,width:64}),(0,A.jsx)(W,{label:`T_c`,value:u,onChange:Y(h.touch,d),unit:`K`,width:56}),(0,A.jsx)(W,{label:`T`,value:p,onChange:Y(h.touch,m),unit:`K`,width:56}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void h.run(`London penetration depth`,`material=${o}, λ₀=${c} nm, T_c=${u} K, T=${p} K`,async()=>{let e=await Ut(Number(c),Number(p),Number(u));return`λ(${f(e.T)} K) = ${f(e.lambda)} nm`}),children:`Calculate`})]}),Z(h.result)]}),(0,A.jsxs)(U,{title:`Coherence length`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(ie,{value:g,onChange:_,fill:e=>{y(String(e.xi0)),x(String(e.Tc))},touch:w.touch}),(0,A.jsx)(W,{label:`ξ₀`,value:v,onChange:Y(w.touch,y),unit:`nm`,width:64}),(0,A.jsx)(W,{label:`T_c`,value:b,onChange:Y(w.touch,x),unit:`K`,width:56}),(0,A.jsx)(W,{label:`T`,value:S,onChange:Y(w.touch,C),unit:`K`,width:56}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void w.run(`Coherence length`,`material=${g}, ξ₀=${v} nm, T_c=${b} K, T=${S} K`,async()=>{let e=await Wt(Number(v),Number(S),Number(b));return`ξ(${f(e.T)} K) = ${f(e.xi)} nm`}),children:`Calculate`})]}),Z(w.result)]}),(0,A.jsxs)(U,{title:`Ginzburg-Landau parameter κ = λ/ξ`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`λ`,value:T,onChange:Y(j.touch,E),unit:`nm`,width:64}),(0,A.jsx)(W,{label:`ξ`,value:D,onChange:Y(j.touch,O),unit:`nm`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void j.run(`Ginzburg-Landau parameter`,`λ=${T} nm, ξ=${D} nm`,async()=>{let e=await Gt(Number(T),Number(D));return`κ = ${f(e.kappa)} (Type ${e.type})`}),children:`Calculate`})]}),Z(j.result)]}),(0,A.jsxs)(U,{title:`Critical fields`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(ie,{value:M,onChange:N,fill:e=>{F(String(e.Hc0)),L(String(e.Tc))},touch:B.touch}),(0,A.jsx)(W,{label:`H_c0`,value:P,onChange:Y(B.touch,F),unit:`Oe`,width:72}),(0,A.jsx)(W,{label:`T_c`,value:I,onChange:Y(B.touch,L),unit:`K`,width:56}),(0,A.jsx)(W,{label:`T`,value:R,onChange:Y(B.touch,z),unit:`K`,width:56}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void B.run(`Critical fields`,`material=${M}, H_c0=${P} Oe, T_c=${I} K, T=${R} K`,async()=>{let e=await Kt(Number(P),Number(I),Number(R),M);return`Type ${e.type} · H_c = ${Zt(e.Hc)} · H_c1 = ${Zt(e.Hc1)} · H_c2 = ${Zt(e.Hc2)}`}),children:`Calculate`})]}),Z(B.result)]}),(0,A.jsxs)(U,{title:`Depairing current density`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(ie,{value:V,onChange:H,fill:e=>{q(String(e.Hc0)),te(String(e.lambda0)),ne(String(e.Tc))},touch:$.touch}),(0,A.jsx)(W,{label:`H_c0`,value:K,onChange:Y($.touch,q),unit:`Oe`,width:72}),(0,A.jsx)(W,{label:`λ₀`,value:ee,onChange:Y($.touch,te),unit:`nm`,width:56}),(0,A.jsx)(W,{label:`T_c`,value:X,onChange:Y($.touch,ne),unit:`K`,width:52}),(0,A.jsx)(W,{label:`T`,value:Q,onChange:Y($.touch,re),unit:`K`,width:52}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void $.run(`Depairing current density`,`material=${V}, H_c0=${K} Oe, λ₀=${ee} nm, T_c=${X} K, T=${Q} K`,async()=>{let e=await qt(Number(K),Number(ee),Number(X),Number(Q));return`J_d = ${f(e.JdMA)} MA/cm²`}),children:`Calculate`})]}),Z($.result)]})]})}function $t(e,t){return c(`/api/thermal/wiedemann-franz`,{sigma:e,temperature:t})}function en(e,t){return c(`/api/thermal/debye`,{v_s:e,n:t})}function tn(e,t,n){return c(`/api/thermal/diffusivity`,{kappa:e,rho:t,cp:n})}function nn(){let[e,t]=(0,k.useState)(`6e5`),[n,i]=(0,k.useState)(`300`),a=J(`Thermal`),[o,s]=(0,k.useState)(`5000`),[c,l]=(0,k.useState)(`5e28`),u=J(`Thermal`),[d,p]=(0,k.useState)(`150`),[m,h]=(0,k.useState)(`2329`),[g,_]=(0,k.useState)(`700`),v=J(`Thermal`);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Wiedemann-Franz law`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`σ`,value:e,onChange:Y(a.touch,t),unit:`S/cm`}),(0,A.jsx)(W,{label:`T`,value:n,onChange:Y(a.touch,i),unit:`K`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void a.run(`Wiedemann-Franz law`,`σ=${e} S/cm, T=${n} K`,async()=>{let t=await $t(Number(e),Number(n));return`κ = ${f(t.kappa)} W/(m·K)`}),children:`=`})]}),Z(a.result)]}),(0,A.jsxs)(U,{title:`Debye temperature`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`v_s`,value:o,onChange:Y(u.touch,s),unit:`m/s`}),(0,A.jsx)(W,{label:`n`,value:c,onChange:Y(u.touch,l),unit:`m⁻³`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void u.run(`Debye temperature`,`v_s=${o} m/s, n=${c} m⁻³`,async()=>{let e=await en(Number(o),Number(c));return`Θ_D = ${f(e.theta_D)} K`}),children:`=`})]}),Z(u.result)]}),(0,A.jsxs)(U,{title:`Thermal diffusivity`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`κ`,value:d,onChange:Y(v.touch,p),unit:`W/m·K`,width:72}),(0,A.jsx)(W,{label:`ρ`,value:m,onChange:Y(v.touch,h),unit:`kg/m³`,width:72})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`c_p`,value:g,onChange:Y(v.touch,_),unit:`J/kg·K`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void v.run(`Thermal diffusivity`,`κ=${d} W/m·K, ρ=${m} kg/m³, c_p=${g} J/kg·K`,async()=>{let e=await tn(Number(d),Number(m),Number(g));return`α = ${f(e.alpha)} m²/s = ${f(e.alpha_mm2)} mm²/s`}),children:`=`})]}),Z(v.result)]})]})}function rn(e,t){return l(`/api/thin-film/deposition-rate`,{thickness:e,time:t})}function an(e,t,n,r){return l(`/api/thin-film/sputter-rate`,{y:e,j:t,rho:n,m:r})}function on(e,t){return l(`/api/thin-film/diffusion-length`,{d:e,t})}function sn(e,t,n){return l(`/api/thin-film/dose-from-current`,{current:e,time:t,area:n})}function cn(e,t,n){return l(`/api/thin-film/dose-to-concentration`,{dose:e,rp:t,delta_rp:n})}function ln(e,t,n){return l(`/api/thin-film/kiessig-thickness`,{delta_q:e,sld:t,qc:n})}function un(e,t){return l(`/api/thin-film/multilayer-thermal`,{thicknesses:e,kappas:t})}function dn(e,t,n){return l(`/api/thin-film/projected-range`,{ion:e,target:t,energy:n})}function fn(e,t,n,r,i){return l(`/api/thin-film/stoney-stress`,{es:e,nus:t,ts:n,tf:r,r:i})}function pn(e,t,n,r,i){return l(`/api/thin-film/thermal-mismatch`,{alpha_film:e,alpha_sub:t,delta_t:n,e:r,nu:i})}function mn(e,t,n,r){return l(`/api/thin-film/sauerbrey`,{delta_f:e,f0:t,area:n,density:r})}function hn(e,t,n){return l(`/api/thin-film/scherrer`,{fwhm_deg:e,wavelength:t,two_theta_deg:n})}function gn(){let[e,t]=(0,k.useState)(`1000`),[n,i]=(0,k.useState)(`60`),a=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Deposition rate`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`t`,value:e,onChange:Y(a.touch,t),unit:`Å`,width:80}),(0,A.jsx)(W,{label:`τ`,value:n,onChange:Y(a.touch,i),unit:`s`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void a.run(`Deposition rate`,`thickness=${e} Å, time=${n} s`,async()=>{let t=await rn(Number(e),Number(n));return`rate = ${f(t.rate)} Å/s · ${f(t.rate_nm_per_min)} nm/min`}),children:`Calculate`})]}),Z(a.result)]})}function _n(){let[e,t]=(0,k.useState)(`2.5`),[n,i]=(0,k.useState)(`1.0`),[a,o]=(0,k.useState)(`19.3`),[s,c]=(0,k.useState)(`196.97`),l=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Sputter rate`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`Y`,value:e,onChange:Y(l.touch,t),width:56}),(0,A.jsx)(W,{label:`J`,value:n,onChange:Y(l.touch,i),unit:`mA/cm²`,width:56}),(0,A.jsx)(W,{label:`ρ`,value:a,onChange:Y(l.touch,o),unit:`g/cm³`,width:56}),(0,A.jsx)(W,{label:`M`,value:s,onChange:Y(l.touch,c),unit:`g/mol`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void l.run(`Sputter rate`,`Y=${e}, J=${n} mA/cm², ρ=${a} g/cm³, M=${s} g/mol`,async()=>{let t=await an(Number(e),Number(n),Number(a),Number(s));return`rate = ${f(t.rate)} nm/s · ${f(t.rate_nm_per_min)} nm/min`}),children:`Calculate`})]}),Z(l.result)]})}function vn(){let[e,t]=(0,k.useState)(`1e-13`),[n,i]=(0,k.useState)(`3600`),a=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Thermal diffusion length`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`D`,value:e,onChange:Y(a.touch,t),unit:`cm²/s`,width:72}),(0,A.jsx)(W,{label:`t`,value:n,onChange:Y(a.touch,i),unit:`s`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void a.run(`Thermal diffusion length`,`D=${e} cm²/s, t=${n} s`,async()=>{let t=await on(Number(e),Number(n));return`L = ${f(t.L)} cm · ${f(t.L_nm)} nm`}),children:`Calculate`})]}),Z(a.result)]})}function yn(){let[e,t]=(0,k.useState)(`1e-6`),[n,i]=(0,k.useState)(`60`),[a,o]=(0,k.useState)(`1.0`),s=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Implant dose (beam current)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`I`,value:e,onChange:Y(s.touch,t),unit:`A`,width:72}),(0,A.jsx)(W,{label:`t`,value:n,onChange:Y(s.touch,i),unit:`s`,width:64}),(0,A.jsx)(W,{label:`A`,value:a,onChange:Y(s.touch,o),unit:`cm²`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void s.run(`Implant dose (beam current)`,`I=${e} A, t=${n} s, A=${a} cm²`,async()=>{let t=await sn(Number(e),Number(n),Number(a));return`dose = ${f(t.dose)} ions/cm²`}),children:`Calculate`})]}),Z(s.result)]})}function bn(){let[e,t]=(0,k.useState)(`1e15`),[n,i]=(0,k.useState)(`80`),[a,o]=(0,k.useState)(`25`),s=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Peak concentration (dose → C)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`Φ`,value:e,onChange:Y(s.touch,t),unit:`ions/cm²`,width:72}),(0,A.jsx)(W,{label:`Rp`,value:n,onChange:Y(s.touch,i),unit:`nm`,width:56}),(0,A.jsx)(W,{label:`ΔRp`,value:a,onChange:Y(s.touch,o),unit:`nm`,width:56}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void s.run(`Peak concentration`,`Φ=${e} ions/cm², Rp=${n} nm, ΔRp=${a} nm`,async()=>{let t=await cn(Number(e),Number(n),Number(a));return`C_peak = ${f(t.Cpeak)} atoms/cm³`}),children:`Calculate`})]}),Z(s.result)]})}function xn(){let[e,t]=(0,k.useState)(`0.0628`),[n,i]=(0,k.useState)(``),a=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Kiessig thickness`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`ΔQ`,value:e,onChange:Y(a.touch,t),unit:`Å⁻¹`,width:72}),(0,A.jsx)(W,{label:`SLD`,value:n,onChange:Y(a.touch,i),unit:`Å⁻² (opt)`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void a.run(`Kiessig thickness`,`ΔQ=${e} Å⁻¹, SLD=${n} Å⁻²`,async()=>{let t=n.trim()===``?void 0:Number(n),r=await ln(Number(e),t),i=Number.isNaN(r.Qc)?``:` (Qc = ${f(r.Qc)} Å⁻¹)`;return`t = ${f(r.thickness)} Å · ${f(r.thickness_nm)} nm${i}`}),children:`Calculate`})]}),Z(a.result)]})}function Sn(){let[e,t]=(0,k.useState)(`100, 50`),[n,i]=(0,k.useState)(`1.4, 148`),a=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Multilayer thermal conductivity`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`d (nm)`,value:e,onChange:Y(a.touch,t),width:120,numeric:!1}),(0,A.jsx)(W,{label:`k (W/m/K)`,value:n,onChange:Y(a.touch,i),width:120,numeric:!1}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void a.run(`Multilayer thermal conductivity`,`d=${JSON.stringify(e)} nm, k=${JSON.stringify(n)} W/m/K`,async()=>{let t=await un(ee(e),ee(n));return`k⊥ = ${f(t.k_series)} · k∥ = ${f(t.k_parallel)} W/m/K`}),children:`Calculate`})]}),Z(a.result)]})}function Cn(){let[e,t]=(0,k.useState)(`Ar`),[n,i]=(0,k.useState)(`Si`),[a,o]=(0,k.useState)(`100`),s=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Projected range (LSS)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`ion`,value:e,onChange:Y(s.touch,t),width:56,numeric:!1}),(0,A.jsx)(W,{label:`target`,value:n,onChange:Y(s.touch,i),width:56,numeric:!1}),(0,A.jsx)(W,{label:`E`,value:a,onChange:Y(s.touch,o),unit:`keV`,width:64}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void s.run(`Projected range (LSS)`,`ion=${e}, target=${n}, E=${a} keV`,async()=>{let t=await dn(e,n,Number(a));return`Rp = ${f(t.Rp)} nm · ΔRp = ${f(t.deltaRp)} nm`}),children:`Calculate`})]}),Z(s.result)]})}function wn(){let[e,t]=(0,k.useState)(`130e9`),[n,i]=(0,k.useState)(`0.28`),[a,o]=(0,k.useState)(`500e-6`),[s,c]=(0,k.useState)(`100e-9`),[l,u]=(0,k.useState)(`10`),d=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Stoney stress`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`Es`,value:e,onChange:Y(d.touch,t),unit:`Pa`,width:64}),(0,A.jsx)(W,{label:`νs`,value:n,onChange:Y(d.touch,i),width:48}),(0,A.jsx)(W,{label:`ts`,value:a,onChange:Y(d.touch,o),unit:`m`,width:64}),(0,A.jsx)(W,{label:`tf`,value:s,onChange:Y(d.touch,c),unit:`m`,width:64}),(0,A.jsx)(W,{label:`R`,value:l,onChange:Y(d.touch,u),unit:`m`,width:56}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void d.run(`Stoney stress`,`E_s=${e} Pa, ν_s=${n}, t_s=${a} m, t_f=${s} m, R=${l} m`,async()=>{let t=await fn(Number(e),Number(n),Number(a),Number(s),Number(l));return`σ = ${f(t.stress_MPa)} MPa · ${f(t.stress_GPa)} GPa`}),children:`Calculate`})]}),Z(d.result)]})}function Tn(){let[e,t]=(0,k.useState)(`17e-6`),[n,i]=(0,k.useState)(`3e-6`),[a,o]=(0,k.useState)(`-500`),[s,c]=(0,k.useState)(``),[l,u]=(0,k.useState)(`0.3`),d=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Thermal-mismatch strain`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`αf`,value:e,onChange:Y(d.touch,t),unit:`1/K`,width:64}),(0,A.jsx)(W,{label:`αs`,value:n,onChange:Y(d.touch,i),unit:`1/K`,width:64}),(0,A.jsx)(W,{label:`ΔT`,value:a,onChange:Y(d.touch,o),unit:`K`,width:56}),(0,A.jsx)(W,{label:`E`,value:s,onChange:Y(d.touch,c),unit:`Pa (opt)`,width:64}),(0,A.jsx)(W,{label:`ν`,value:l,onChange:Y(d.touch,u),width:48}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void d.run(`Thermal-mismatch strain`,`α_f=${e} 1/K, α_s=${n} 1/K, ΔT=${a} K, E=${s} Pa, ν=${l}`,async()=>{let t=s.trim()===``?void 0:Number(s),r=await pn(Number(e),Number(n),Number(a),t,Number(l)),i=Number.isNaN(r.stress_MPa)?``:` · σ = ${f(r.stress_MPa)} MPa`;return`ε = ${f(r.strain)} (${r.description})${i}`}),children:`Calculate`})]}),Z(d.result)]})}function En(){let[e,t]=(0,k.useState)(`-10`),[n,i]=(0,k.useState)(`5e6`),[a,o]=(0,k.useState)(``),[s,c]=(0,k.useState)(``),l=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Sauerbrey (QCM)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`Δf`,value:e,onChange:Y(l.touch,t),unit:`Hz`,width:64}),(0,A.jsx)(W,{label:`f₀`,value:n,onChange:Y(l.touch,i),unit:`Hz`,width:72}),(0,A.jsx)(W,{label:`A`,value:a,onChange:Y(l.touch,o),unit:`cm² (opt)`,width:72}),(0,A.jsx)(W,{label:`ρ`,value:s,onChange:Y(l.touch,c),unit:`g/cm³ (opt)`,width:80}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void l.run(`Sauerbrey (QCM)`,`Δf=${e} Hz, f₀=${n} Hz, A=${a} cm², ρ=${s} g/cm³`,async()=>{let t=a.trim()===``?void 0:Number(a),r=s.trim()===``?void 0:Number(s),i=await mn(Number(e),Number(n),t,r),o=`Δm/A = ${f(i.areal_mass_ng_cm2)} ng/cm² · Cf = ${f(i.Cf_hz_cm2_ug)} Hz·cm²/µg`;return i.thickness_nm!=null&&(o+=` · t = ${f(i.thickness_nm)} nm`),o}),children:`Calculate`})]}),Z(l.result)]})}function Dn(){let[e,t]=(0,k.useState)(`0.5`),[n,i]=(0,k.useState)(`1.5406`),[a,o]=(0,k.useState)(`33`),s=J(`Thin Film`);return(0,A.jsxs)(U,{title:`Scherrer grain size`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`FWHM`,value:e,onChange:Y(s.touch,t),unit:`° 2θ`,width:64}),(0,A.jsx)(W,{label:`λ`,value:n,onChange:Y(s.touch,i),unit:`Å`,width:64}),(0,A.jsx)(W,{label:`2θ`,value:a,onChange:Y(s.touch,o),unit:`°`,width:56}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void s.run(`Scherrer grain size`,`FWHM=${e} ° 2θ, λ=${n} Å, 2θ=${a} °`,async()=>{let t=await hn(Number(e),Number(n),Number(a));return`D = ${f(t.D)} Å · ${f(t.D_nm)} nm`}),children:`Calculate`})]}),Z(s.result)]})}function On(){return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsx)(gn,{}),(0,A.jsx)(_n,{}),(0,A.jsx)(vn,{}),(0,A.jsx)(yn,{}),(0,A.jsx)(bn,{}),(0,A.jsx)(xn,{}),(0,A.jsx)(Sn,{}),(0,A.jsx)(Cn,{}),(0,A.jsx)(wn,{}),(0,A.jsx)(Tn,{}),(0,A.jsx)(En,{}),(0,A.jsx)(Dn,{})]})}var kn=[{value:`eV`,label:`eV`},{value:`nm`,label:`nm (wavelength)`},{value:`cm^-1`,label:`cm-1 (wavenumber)`},{value:`THz`,label:`THz`},{value:`K`,label:`K (E / kB)`}];function An({c:e}){let t=e.unitCategories?.find(e=>e.id===`photon_energy`),n=t?.units??kn,a=e=>n.find(t=>t.value===e)?.label??e;return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,A.jsx)(g,{value:e.peValue,width:84,onChange:e.setPeValue}),(0,A.jsx)(i,{options:n,value:e.peFrom,onChange:t=>e.setPeFrom(t.target.value),"aria-label":`photon-energy quantity`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,disabled:e.peBusy,onClick:()=>void e.peCompute(),children:`=`})]}),t?.hint&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:8,color:`var(--text-faint)`,maxWidth:420},children:t.hint}),e.peResults&&!e.peError&&(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsx)(h,{columns:[`Quantity`,`Value`],rows:n.map(t=>[a(t.value),(0,A.jsx)(`span`,{style:{fontFamily:`var(--font-mono)`,fontWeight:t.value===e.peFrom?700:400},children:f(e.peResults?.[t.value]??null)},t.value)])}),(0,A.jsx)(X,{value:n.map(t=>`${t.value}\t${e.peResults?.[t.value]??``}`).join(`
8
+ `),label:`all quantities`})]}),e.peError&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--danger)`},children:e.peError})]})}function jn({c:e}){let t=e.unitCategories??[],n=t.find(t=>t.id===e.category),a=e.category===`photon_energy`;return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[t.length>0&&(0,A.jsx)(i,{options:t.map(e=>({value:e.id,label:e.label})),value:e.category,onChange:t=>e.setCategory(t.target.value),"aria-label":`unit category`,style:{marginBottom:10}}),a?(0,A.jsx)(An,{c:e}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,A.jsx)(g,{value:e.value,width:84,onChange:e.setValue}),n?(0,A.jsx)(i,{options:n.units,value:e.from,onChange:t=>e.setFrom(t.target.value),"aria-label":`from unit`}):(0,A.jsx)(`input`,{className:`qz-input`,style:{width:64},value:e.from,onChange:t=>e.setFrom(t.target.value),"aria-label":`from unit`}),(0,A.jsx)(r,{variant:`ghost`,size:`sm`,"aria-label":`swap units`,title:`swap from/to`,onClick:e.swapUnits,children:`⇄`}),n?(0,A.jsx)(i,{options:n.units,value:e.to,onChange:t=>e.setTo(t.target.value),"aria-label":`to unit`}):(0,A.jsx)(`input`,{className:`qz-input`,style:{width:64},value:e.to,onChange:t=>e.setTo(t.target.value),"aria-label":`to unit`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,disabled:e.busy,onClick:()=>void e.convert(),children:`=`})]}),n?.hint&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:8,color:`var(--text-faint)`,maxWidth:420},children:n.hint}),e.result!=null&&!e.error&&(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(`div`,{style:{fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-lg)`},children:[f(e.result),` `,(0,A.jsx)(`span`,{style:{color:`var(--text-dim)`},children:e.to}),(0,A.jsx)(X,{value:String(e.result),label:`converted value`})]}),e.description&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:4,color:`var(--text-faint)`},children:e.description})]}),e.error&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--danger)`},children:e.error})]}),(0,A.jsx)(`div`,{style:{display:`flex`,gap:6,flexWrap:`wrap`,marginTop:10},children:de.map(t=>(0,A.jsx)(y,{active:e.from===t.from&&e.to===t.to&&e.category===t.category,onClick:()=>e.setPair(t.from,t.to,t.category),children:t.label},t.label))})]})}function Mn(e,t,n){return c(`/api/vacuum/mean-free-path`,{p:e,temperature:t,d:n})}function Nn(e,t,n,r){return c(`/api/vacuum/monolayer-time`,{p:e,m:t,temperature:n,a_site:r})}function Pn(e,t){return c(`/api/vacuum/knudsen`,{mfp:e,length:t})}function Fn(e,t,n,r){return c(`/api/vacuum/pump-down`,{v:e,s:t,p0:n,pf:r})}function In(e,t,n){return c(`/api/vacuum/sputter-yield`,{material:e,energy:t,ion:n})}function Ln(e,t,n,r,i,a){return c(`/api/vacuum/gas-flow`,{p1:e,p2:t,d:n,length:r,temperature:i,m:a})}var Rn=[{value:`3.64e-10`,label:`N2 (air)`},{value:`2.60e-10`,label:`He`},{value:`3.40e-10`,label:`Ar`},{value:`2.89e-10`,label:`H2`},{value:`3.46e-10`,label:`O2`},{value:`4.32e-10`,label:`Xe`},{value:`3.60e-10`,label:`Kr`}];function zn(){let[e,t]=(0,k.useState)(`1e-4`),[n,a]=(0,k.useState)(`300`),[o,s]=(0,k.useState)(`3.64e-10`),c=J(`Vacuum`),[l,u]=(0,k.useState)(`1.33e-4`),d=J(`Vacuum`),[p,m]=(0,k.useState)(`Si`),[h,g]=(0,k.useState)(`Ar`),[_,v]=(0,k.useState)(`500`),y=J(`Vacuum`),[b,x]=(0,k.useState)(`50`),[S,C]=(0,k.useState)(`100`),[w,T]=(0,k.useState)(`1e5`),[E,D]=(0,k.useState)(`1e-4`),O=J(`Vacuum`),[j,M]=(0,k.useState)(`1e-4`),[N,P]=(0,k.useState)(`0.025`),F=J(`Vacuum`),[I,L]=(0,k.useState)(`1e-3`),[R,z]=(0,k.useState)(`1e-5`),[B,V]=(0,k.useState)(`0.025`),[H,K]=(0,k.useState)(`0.5`),q=J(`Vacuum`);return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Mean free path`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`P`,value:e,onChange:Y(c.touch,t),unit:`Pa`,width:72}),(0,A.jsx)(W,{label:`T`,value:n,onChange:Y(c.touch,a),unit:`K`,width:64}),(0,A.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`Gas`}),(0,A.jsx)(i,{options:Rn,value:o,onChange:e=>{s(e.target.value),c.touch()}})]}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void c.run(`Mean free path`,`P=${e} Pa, T=${n} K, molecular diameter=${o} m`,async()=>{let t=await Mn(Number(e),Number(n),Number(o));return`λ = ${f(t.mfp)} m (${f(t.mfpMm)} mm)`}),children:`Calculate`})]}),Z(c.result)]}),(0,A.jsxs)(U,{title:`Monolayer formation time`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`P`,value:l,onChange:Y(d.touch,u),unit:`Pa`}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void d.run(`Monolayer formation time`,`P=${l} Pa`,async()=>{let e=await Nn(Number(l));return`t_mono = ${f(e.tMono)} s`}),children:`Calculate`})]}),Z(d.result)]}),(0,A.jsxs)(U,{title:`Sputter yield (lookup)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`Target`,value:p,onChange:Y(y.touch,m),numeric:!1,width:72}),(0,A.jsx)(W,{label:`Ion`,value:h,onChange:Y(y.touch,g),numeric:!1,width:56}),(0,A.jsx)(W,{label:`E`,value:_,onChange:Y(y.touch,v),unit:`eV`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void y.run(`Sputter yield`,`target=${p}, ion=${h}, E=${_} eV`,async()=>{let e=await In(p,Number(_),h);return Number.isNaN(e.Y)?`Y(${p}/${h}) = N/A (out of table)`:`Y(${p}/${h}, ${f(Number(_))} eV) = ${f(e.Y)} atoms/ion`}),children:`Calculate`})]}),Z(y.result)]}),(0,A.jsxs)(U,{title:`Pump-down estimate`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`V`,value:b,onChange:Y(O.touch,x),unit:`L`,width:64}),(0,A.jsx)(W,{label:`S`,value:S,onChange:Y(O.touch,C),unit:`L/s`,width:64})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`P0`,value:w,onChange:Y(O.touch,T),unit:`Pa`,width:72}),(0,A.jsx)(W,{label:`Pf`,value:E,onChange:Y(O.touch,D),unit:`Pa`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void O.run(`Pump-down estimate`,`V=${b} L, S=${S} L/s, P0=${w} Pa, Pf=${E} Pa`,async()=>{let e=await Fn(Number(b),Number(S),Number(w),Number(E));return`t = ${f(e.time)} s (${f(e.timeMin)} min) · τ = ${f(e.tau)} s`}),children:`Calculate`})]}),Z(O.result)]}),(0,A.jsxs)(U,{title:`Knudsen number`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`MFP`,value:j,onChange:Y(F.touch,M),unit:`m`,width:72}),(0,A.jsx)(W,{label:`L`,value:N,onChange:Y(F.touch,P),unit:`m`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void F.run(`Knudsen number`,`MFP=${j} m, L=${N} m`,async()=>{let e=await Pn(Number(j),Number(N));return`Kn = ${f(e.Kn)} [${e.regime} flow]`}),children:`Calculate`})]}),Z(F.result)]}),(0,A.jsxs)(U,{title:`Gas-flow conductance (tube)`,children:[(0,A.jsxs)(`div`,{style:G,children:[(0,A.jsx)(W,{label:`P1`,value:I,onChange:Y(q.touch,L),unit:`Pa`,width:72}),(0,A.jsx)(W,{label:`P2`,value:R,onChange:Y(q.touch,z),unit:`Pa`,width:72})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(W,{label:`d`,value:B,onChange:Y(q.touch,V),unit:`m`,width:72}),(0,A.jsx)(W,{label:`L`,value:H,onChange:Y(q.touch,K),unit:`m`,width:72}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void q.run(`Gas-flow conductance`,`P1=${I} Pa, P2=${R} Pa, d=${B} m, L=${H} m`,async()=>{let e=await Ln(Number(I),Number(R),Number(B),Number(H));return`C_mol = ${f(e.Cmol)} L/s · C_visc = ${f(e.Cvisc)} L/s [${e.regime}]`}),children:`Calculate`})]}),Z(q.result)]})]})}var Bn=[{value:`wavelength`,label:`λ — wavelength`,unit:`Å`},{value:`energy`,label:`E — energy`,unit:`meV`},{value:`velocity`,label:`v — velocity`,unit:`m/s`},{value:`temperature`,label:`T — temperature`,unit:`K`}];function Vn({c:e}){let[t,n]=(0,k.useState)(`8.0478`),[a,o]=(0,k.useState)(!1),[s,c]=(0,k.useState)(null),l=(0,k.useRef)(0),u=e=>{n(e),l.current++,c(null),o(!1)},[d,p]=(0,k.useState)(`wavelength`),[m,h]=(0,k.useState)(`1.8`),_=J(`Neutron`),v=pe.find(t=>t.value===e.xrayMode),b=v?.needsWavelength!==!1;async function x(){let n=++l.current;o(!0),c(null);try{let r=Number(t);if(!Number.isFinite(r))throw Error(`enter a numeric energy`);let i=await C(`wavelength_from_energy`,0,r);if(l.current!==n)return;e.setWavelength(String(i.result))}catch(e){if(l.current!==n)return;c(e instanceof Error?e.message:`conversion failed`)}finally{l.current===n&&o(!1)}}return(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(U,{title:`Bragg / Q-space`,children:[(0,A.jsx)(i,{options:pe.map(e=>({value:e.value,label:e.label})),value:e.xrayMode,onChange:t=>e.setXrayMode(t.target.value),"aria-label":`x-ray conversion`}),b&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{style:{...G,marginTop:10},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`λ`}),(0,A.jsx)(g,{value:e.wavelength,width:84,onChange:e.setWavelength}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`Å`}),(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`n`}),(0,A.jsx)(g,{value:e.xrayOrder,width:44,onChange:e.setXrayOrder})]}),(0,A.jsx)(`div`,{style:{...G,marginTop:8},children:me.map(t=>(0,A.jsx)(y,{active:Number(e.wavelength)===t.a,onClick:()=>e.setWavelength(String(t.a)),children:t.label},t.label))}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(`span`,{className:`qzk-field-lbl`,style:{margin:0},children:`or from E`}),(0,A.jsx)(g,{value:t,width:72,onChange:u}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:`keV`}),(0,A.jsx)(r,{variant:`ghost`,size:`sm`,disabled:a,onClick:()=>void x(),children:`→ λ`})]}),s&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{color:`var(--danger)`},children:s})]}),(0,A.jsxs)(`div`,{style:{...G,marginTop:10},children:[(0,A.jsx)(g,{value:e.xrayValue,width:100,onChange:e.setXrayValue}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:v?.inUnit??``}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,disabled:e.xrayBusy,onClick:()=>void e.xrayCompute(),children:`=`})]}),e.xrayResult&&!e.xrayError&&(0,A.jsxs)(`div`,{style:{marginTop:12},children:[(0,A.jsxs)(`div`,{style:{fontFamily:`var(--font-mono)`,fontSize:`var(--font-size-lg)`},children:[f(e.xrayResult.result),` `,(0,A.jsx)(`span`,{style:{color:`var(--text-dim)`},children:e.xrayResult.unit}),(0,A.jsx)(X,{value:String(e.xrayResult.result),label:`result`})]}),(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:4,color:`var(--text-faint)`},children:e.xrayResult.description})]}),e.xrayError&&(0,A.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:12,color:`var(--danger)`},children:e.xrayError})]}),(0,A.jsxs)(U,{title:`Neutron: λ ↔ E ↔ v ↔ T`,children:[(0,A.jsx)(i,{options:Bn.map(e=>({value:e.value,label:e.label})),value:d,onChange:e=>{p(e.target.value),_.touch()},"aria-label":`neutron input quantity`}),(0,A.jsxs)(`div`,{style:{...G,marginTop:8},children:[(0,A.jsx)(g,{value:m,width:100,onChange:Y(_.touch,h)}),(0,A.jsx)(`span`,{style:{color:`var(--text-faint)`},children:Bn.find(e=>e.value===d)?.unit??``}),(0,A.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>void _.run(`Neutron conversion`,`quantity=${d}, value=${m}`,async()=>{let e=Number(m);if(!Number.isFinite(e))throw Error(`enter a numeric value`);let t=await w(d,e);return`λ = ${f(t.wavelength_a)} Å · E = ${f(t.energy_mev)} meV · v = ${f(t.velocity_m_s)} m/s · T = ${f(t.temperature_k)} K`}),children:`Convert`})]}),d===`wavelength`&&(0,A.jsx)(`div`,{style:{...G,marginTop:8},children:se.map(e=>(0,A.jsx)(y,{active:Number(m)===e.a,onClick:()=>{h(String(e.a)),_.touch()},children:e.label},e.label))}),Z(_.result)]})]})}var Hn=[{group:`Session`,tabs:[{value:`home`,label:`Home`},{value:`history`,label:`History`},{value:`favorites`,label:`Favorites`}]},{group:`Conversion`,tabs:[{value:`units`,label:`Units`},{value:`constants`,label:`Constants`}]},{group:`Structure`,tabs:[{value:`xray`,label:`X-ray / Neutron`},{value:`crystal`,label:`Crystal`},{value:`sld`,label:`SLD`},{value:`elements`,label:`Elements`},{value:`substrates`,label:`Substrates`}]},{group:`Transport`,tabs:[{value:`electrical`,label:`Electrical`},{value:`thermal`,label:`Thermal`},{value:`diffusion`,label:`Diffusion`}]},{group:`Optics & Vacuum`,tabs:[{value:`optics`,label:`Optics`},{value:`vacuum`,label:`Vacuum`}]},{group:`Devices`,tabs:[{value:`semiconductor`,label:`Semiconductor`},{value:`superconductor`,label:`Superconductor`},{value:`thinfilm`,label:`Thin Film`}]},{group:`Magnetism`,tabs:[{value:`magnetic`,label:`Magnetic`}]},{group:`Electrochemistry`,tabs:[{value:`electrochemistry`,label:`Electrochemistry`}]}];function Un(){let e=ge();return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`select`,{className:`qz-select`,style:{width:`100%`},value:e.tab,onChange:t=>e.setTab(t.target.value),"aria-label":`calculator`,children:Hn.map(e=>(0,A.jsx)(`optgroup`,{label:e.group,children:e.tabs.map(e=>(0,A.jsx)(`option`,{value:e.value,children:e.label},e.value))},e.group))}),e.tab===`home`&&(0,A.jsx)(Ze,{onPick:e.setTab}),e.tab===`history`&&(0,A.jsx)(Xe,{}),e.tab===`favorites`&&(0,A.jsx)(qe,{}),e.tab===`units`&&(0,A.jsx)(jn,{c:e}),e.tab===`xray`&&(0,A.jsx)(Vn,{c:e}),e.tab===`crystal`&&(0,A.jsx)(ye,{c:e}),e.tab===`sld`&&(0,A.jsx)(It,{c:e}),e.tab===`elements`&&(0,A.jsx)(We,{}),e.tab===`constants`&&(0,A.jsx)(M,{}),e.tab===`electrical`&&(0,A.jsx)(Pe,{}),e.tab===`thermal`&&(0,A.jsx)(nn,{}),e.tab===`diffusion`&&(0,A.jsx)(we,{}),e.tab===`optics`&&(0,A.jsx)(mt,{}),e.tab===`vacuum`&&(0,A.jsx)(zn,{}),e.tab===`electrochemistry`&&(0,A.jsx)(Be,{}),e.tab===`substrates`&&(0,A.jsx)(Ht,{}),e.tab===`semiconductor`&&(0,A.jsx)(Mt,{}),e.tab===`superconductor`&&(0,A.jsx)(Qt,{}),e.tab===`thinfilm`&&(0,A.jsx)(On,{}),e.tab===`magnetic`&&(0,A.jsx)(ot,{})]})}export{Un as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-NZYk81nU.js";import{a as t}from"./ConfirmDialog-CL2Dq9Ll.js";import{t as n}from"./CalculatorsContent-B5povxeH.js";import{t as r}from"./ToolWindow-CwcNSGJV.js";var i=e();function a(){let e=t(e=>e.setCalculatorsOpen);return(0,i.jsx)(r,{id:`calculators`,title:`Calculators`,y:70,width:480,onClose:()=>e(!1),children:(0,i.jsx)(n,{})})}export{a as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./react-C5lyt4z4.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{a as r}from"./ConfirmDialog-CL2Dq9Ll.js";import{m as i}from"./plural-CnKl_Ak3.js";import{r as a}from"./ParamDialog-CmNOZNzn.js";import{_t as o,ft as s,pt as c,vt as l}from"./index-Bu9ms6dO.js";var u=e(t(),1),d=n(),f=`terms AND'ed; bare = name/tag, or tag:… name:… format:…`;function p({hierarchy:e,onShowInLibrary:t}){let n=r(e=>e.collections),p=r(e=>e.addCollection),m=r(e=>e.renameCollection),h=r(e=>e.updateCollectionQuery),g=r(e=>e.removeCollection),[_,v]=(0,u.useState)(new Set),y=(0,u.useRef)(null);if(n.length===0)return null;let b=e=>v(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,d.jsxs)(`div`,{className:`qzk-lib-group`,ref:y,tabIndex:-1,onKeyDown:s,children:[(0,d.jsxs)(`div`,{style:{display:`flex`,alignItems:`stretch`},children:[(0,d.jsx)(`span`,{className:`qzk-lib-title`,style:{flex:1,padding:`4px 6px`},children:`Collections`}),(0,d.jsx)(`button`,{className:`qz-btn qz-ghost qz-sm`,title:`New Collection…`,onClick:()=>{a(`New Collection`,[{key:`name`,label:`Name`,type:`text`,default:``},{key:`query`,label:`Query`,type:`text`,default:``,hint:f}]).then(e=>{e&&String(e.name).trim()&&p(String(e.name),String(e.query))})},children:`+`})]}),n.map(n=>{let r=i(e,n),s=_.has(n.id);return(0,d.jsxs)(`div`,{children:[(0,d.jsxs)(`div`,{style:{display:`flex`,alignItems:`stretch`},children:[(0,d.jsxs)(`button`,{className:`qzk-group-head`,style:{flex:1,minWidth:0},title:n.query?`query: ${n.query}`:`empty query — matches everything`,onClick:()=>b(n.id),children:[(0,d.jsx)(`span`,{className:`qzk-group-caret`,children:s?`▾`:`▸`}),(0,d.jsxs)(`span`,{className:`qzk-group-name`,children:[`⊙ `,n.name]}),(0,d.jsx)(`span`,{className:`qzk-group-count`,children:r.length})]}),(0,d.jsx)(`button`,{className:`qz-btn qz-ghost qz-sm`,title:`Rename Collection…`,onClick:()=>{a(`Rename Collection`,[{key:`name`,label:`Name`,type:`text`,default:n.name}]).then(e=>{e&&String(e.name).trim()&&m(n.id,String(e.name))})},children:`✎`}),(0,d.jsx)(`button`,{className:`qz-btn qz-ghost qz-sm`,title:`Edit Collection filter…`,onClick:()=>{a(`Edit Collection filter`,[{key:`query`,label:`Query`,type:`text`,default:n.query,hint:f}]).then(e=>{e&&h(n.id,String(e.query))})},children:`⚙`}),(0,d.jsx)(`button`,{className:`qz-btn qz-ghost qz-sm`,title:`Delete Collection (its members are untouched — L0.48)`,onClick:()=>c(y.current,()=>g(n.id)),children:`×`})]}),s&&r.map(e=>(0,d.jsxs)(`button`,{type:`button`,className:`qzk-collection-member`,title:`Show in Library — ${e.name}`,onClick:()=>t(e),children:[(0,d.jsx)(`span`,{className:`qzk-ds-icon`,"aria-hidden":`true`,title:l[e.kind],children:o[e.kind]}),(0,d.jsx)(`span`,{children:e.name})]},e.key)),s&&r.length===0&&(0,d.jsx)(`div`,{className:`qzk-ds-meta`,style:{padding:`2px 20px`},children:`no matches`})]},n.id)})]})}export{p as default};
@@ -0,0 +1 @@
1
+ import{n as e,r as t}from"./primitives-ChiQwT3D.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{a as r}from"./ConfirmDialog-CL2Dq9Ll.js";import{x as i}from"./rowstate-CAm8HGoq.js";import{t as a}from"./ToolWindow-CwcNSGJV.js";var o=n();function s(){let n=r(e=>e.setColumnSwitcherOpen),s=r(e=>e.datasets),c=r(e=>e.activeId),l=r(e=>e.yKeys),u=r(e=>e.xKey),d=r(e=>e.seriesOrder),f=r(e=>e.seriesLabels),p=r(e=>e.hiddenChannels),m=r(e=>e.soloChannel),h=s.find(e=>e.id===c)??null,g=h?i(h.data,l,u,h.channelRoles,d):[],_=g.filter(e=>!p.includes(e)),v=_.length===1&&g.length>1?_[0]:null,y=e=>f[e]??h?.data.labels[e]??`ch ${e}`,b=e=>{if(g.length<2)return;let t=v==null?e===1?-1:0:g.indexOf(v);m(g[(t+e+g.length)%g.length])};return(0,o.jsx)(a,{id:`columnswitcher`,title:`Column switcher`,width:280,onClose:()=>n(!1),children:!h||g.length<2?(0,o.jsx)(`div`,{style:{color:`var(--text-faint)`},children:`Needs a dataset with at least two plotted channels.`}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,o.jsx)(e,{onClick:()=>b(-1),title:`Previous channel (wraps)`,children:`◀`}),(0,o.jsx)(t,{style:{flex:1},value:v==null?``:String(v),onChange:e=>m(e.target.value===``?null:Number(e.target.value)),title:`Solo one channel — every other series is hidden until you step on or show all`,options:[{value:``,label:`All (${g.length})`},...g.map(e=>({value:String(e),label:y(e)}))]}),(0,o.jsx)(e,{onClick:()=>b(1),title:`Next channel (wraps)`,children:`▶`})]}),(0,o.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginTop:8},children:[(0,o.jsx)(`span`,{style:{color:`var(--text-dim)`},children:v==null?`showing all channels`:`solo: ${y(v)}`}),(0,o.jsx)(e,{onClick:()=>m(null),disabled:v==null,children:`Show all`})]})]})})}export{s as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./react-C5lyt4z4.js";import{n}from"./primitives-ChiQwT3D.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{B as i,V as a,a as o,r as s,z as c}from"./ConfirmDialog-CL2Dq9Ll.js";import{i as l}from"./toasts-v4ZA--Hu.js";import{n as u}from"./useDialogFocus-C74ZJt54.js";import{St as d}from"./index-Bu9ms6dO.js";var f=e(t(),1),p=r();function m(){let e=d(e=>e.seed),t=d(e=>e.close),r=o(e=>e.datasets),m=o(e=>e.workbooks),h=o(e=>e.combineWorkbooks),g=(0,f.useRef)(null),_=(0,f.useId)(),[v,y]=(0,f.useState)([]),[b,x]=(0,f.useState)(new Set),[S,C]=(0,f.useState)(``),[w,T]=(0,f.useState)(!1),[E,D]=(0,f.useState)(null);(0,f.useEffect)(()=>{y(e?i(e,o.getState().datasets):[]),x(new Set),C(``),T(!1),D(null)},[e]),s(`modal`,()=>(t(),!0),e!==null),u(g,e!==null);let O=v.filter(e=>!b.has(e)),k=O.map(e=>r.find(t=>t.id===e)?.name??e),A=c(k),j=a(k);if((0,f.useEffect)(()=>{w||C(j??``)},[j,w]),!e)return null;let M=O.length>=1&&S.trim()!==``,N=()=>{if(!M)return;let e=new Set(o.getState().datasets.map(e=>e.id)),n=O.filter(t=>e.has(t)),r=O.length-n.length;if(n.length===0){D(`Combine unavailable: every selected worksheet no longer exists — re-open Combine to refresh the selection`);return}h({workbookIds:[],worksheetIds:n},S)&&(r>0&&l(`combined ${n.length} worksheet(s) — skipped ${r} that no longer exist`,`ok`),t())},P=e=>x(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,p.jsx)(`div`,{className:`qz-overlay-backdrop`,onMouseDown:t,children:(0,p.jsxs)(`div`,{className:`qzk-glass qz-dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":_,ref:g,tabIndex:-1,onMouseDown:e=>e.stopPropagation(),onKeyDown:e=>{e.key===`Enter`&&M&&N(),e.key!==`Escape`&&e.stopPropagation()},children:[(0,p.jsx)(`h2`,{id:_,children:`Combine into new workbook`}),(0,p.jsxs)(`div`,{className:`qz-ws-row`,children:[(0,p.jsx)(`span`,{className:`k`,children:`Name`}),(0,p.jsx)(`input`,{className:`qz-input`,"aria-label":`Workbook name`,value:S,onChange:e=>{T(!0),C(e.target.value)}})]}),(0,p.jsx)(`div`,{style:{maxHeight:220,overflowY:`auto`,marginTop:8,display:`grid`,gap:4},children:v.map(e=>{let t=r.find(t=>t.id===e),n=t?.workbookId?m.find(e=>e.id===t.workbookId)?.name:void 0;return(0,p.jsxs)(`label`,{className:`qzk-combine-item`,style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:!b.has(e),onChange:()=>P(e),"aria-label":t?.name??e}),(0,p.jsx)(`span`,{children:t?.name??e}),n&&(0,p.jsxs)(`span`,{className:`qzk-ds-meta`,children:[`— `,n]})]},e)})}),(0,p.jsx)(`div`,{className:`qzk-ds-meta`,style:{marginTop:8},children:`Worksheet names in the new workbook:`}),(0,p.jsx)(`div`,{className:`qzk-combine-preview`,style:{display:`grid`,gap:2},children:A.length===0?(0,p.jsx)(`span`,{className:`qzk-ds-meta`,children:`nothing selected`}):A.map((e,t)=>(0,p.jsx)(`span`,{children:e},`${e}-${t}`))}),E&&(0,p.jsx)(`div`,{className:`qzk-ds-meta`,style:{color:`var(--danger, #d33)`,marginTop:8},children:E}),(0,p.jsxs)(`div`,{className:`qz-btn-row`,children:[(0,p.jsx)(n,{onClick:t,children:`Cancel`}),(0,p.jsx)(n,{variant:`primary`,disabled:!M,onClick:N,children:`Combine`})]})]})})}export{m as default};