dominds 1.3.1 → 1.4.2

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 (184) hide show
  1. package/README.md +9 -2
  2. package/README.zh.md +9 -2
  3. package/dist/apps/app-lock-file.js +33 -57
  4. package/dist/apps/configuration-file.js +267 -0
  5. package/dist/apps/enabled-apps.js +217 -252
  6. package/dist/apps/manifest.js +132 -0
  7. package/dist/apps/resolution-file.js +80 -192
  8. package/dist/apps/workspace-app-state.js +8 -0
  9. package/dist/cli/disable.js +18 -22
  10. package/dist/cli/enable.js +20 -58
  11. package/dist/cli/install.js +74 -80
  12. package/dist/cli/uninstall.js +48 -25
  13. package/dist/cli/update.js +36 -80
  14. package/dist/docs/app-constitution.md +12 -7
  15. package/dist/docs/app-constitution.zh.md +13 -8
  16. package/dist/llm/kernel-driver/engine.js +10 -4
  17. package/dist/llm/kernel-driver/flow.js +93 -0
  18. package/dist/llm/kernel-driver/loop.js +4 -1
  19. package/dist/llm/kernel-driver/subdialog.js +5 -1
  20. package/dist/llm/kernel-driver/tellask-special.js +48 -6
  21. package/dist/server/server-core.js +19 -4
  22. package/dist/server/websocket-handler.js +26 -6
  23. package/dist/static/assets/{_basePickBy-CmziIRM9.js → _basePickBy-B2o4z1Hf.js} +3 -3
  24. package/dist/static/assets/{_basePickBy-CmziIRM9.js.map → _basePickBy-B2o4z1Hf.js.map} +1 -1
  25. package/dist/static/assets/{_baseUniq-CgDZxcD0.js → _baseUniq-CLmcxjdl.js} +2 -2
  26. package/dist/static/assets/{_baseUniq-CgDZxcD0.js.map → _baseUniq-CLmcxjdl.js.map} +1 -1
  27. package/dist/static/assets/{arc-Df9rjNNk.js → arc-CymD_KN7.js} +2 -2
  28. package/dist/static/assets/{arc-Df9rjNNk.js.map → arc-CymD_KN7.js.map} +1 -1
  29. package/dist/static/assets/{architectureDiagram-VXUJARFQ-Bif8topC.js → architectureDiagram-VXUJARFQ-DJQfSJUH.js} +7 -7
  30. package/dist/static/assets/{architectureDiagram-VXUJARFQ-Bif8topC.js.map → architectureDiagram-VXUJARFQ-DJQfSJUH.js.map} +1 -1
  31. package/dist/static/assets/{blockDiagram-VD42YOAC-D9Egoflr.js → blockDiagram-VD42YOAC-pHVz60D0.js} +7 -7
  32. package/dist/static/assets/{blockDiagram-VD42YOAC-D9Egoflr.js.map → blockDiagram-VD42YOAC-pHVz60D0.js.map} +1 -1
  33. package/dist/static/assets/{c4Diagram-YG6GDRKO-DBf1NeBf.js → c4Diagram-YG6GDRKO-B0WnCfAT.js} +3 -3
  34. package/dist/static/assets/{c4Diagram-YG6GDRKO-DBf1NeBf.js.map → c4Diagram-YG6GDRKO-B0WnCfAT.js.map} +1 -1
  35. package/dist/static/assets/{channel-Dc34yAJl.js → channel-CX9BlKil.js} +2 -2
  36. package/dist/static/assets/{channel-Dc34yAJl.js.map → channel-CX9BlKil.js.map} +1 -1
  37. package/dist/static/assets/{chunk-4BX2VUAB-B65G1dJI.js → chunk-4BX2VUAB-lXArRj3o.js} +2 -2
  38. package/dist/static/assets/{chunk-4BX2VUAB-B65G1dJI.js.map → chunk-4BX2VUAB-lXArRj3o.js.map} +1 -1
  39. package/dist/static/assets/{chunk-55IACEB6-CSDEOGl2.js → chunk-55IACEB6-CdqwynH9.js} +2 -2
  40. package/dist/static/assets/{chunk-55IACEB6-CSDEOGl2.js.map → chunk-55IACEB6-CdqwynH9.js.map} +1 -1
  41. package/dist/static/assets/{chunk-B4BG7PRW-Cb6W3QWJ.js → chunk-B4BG7PRW-Y-uXcJst.js} +5 -5
  42. package/dist/static/assets/{chunk-B4BG7PRW-Cb6W3QWJ.js.map → chunk-B4BG7PRW-Y-uXcJst.js.map} +1 -1
  43. package/dist/static/assets/{chunk-DI55MBZ5-ZAJWeVWH.js → chunk-DI55MBZ5-C5xSbRST.js} +4 -4
  44. package/dist/static/assets/{chunk-DI55MBZ5-ZAJWeVWH.js.map → chunk-DI55MBZ5-C5xSbRST.js.map} +1 -1
  45. package/dist/static/assets/{chunk-FMBD7UC4-DiwRlImb.js → chunk-FMBD7UC4-5uefwCjI.js} +2 -2
  46. package/dist/static/assets/{chunk-FMBD7UC4-DiwRlImb.js.map → chunk-FMBD7UC4-5uefwCjI.js.map} +1 -1
  47. package/dist/static/assets/{chunk-QN33PNHL-wilj7fb5.js → chunk-QN33PNHL-DzWVcvpI.js} +2 -2
  48. package/dist/static/assets/{chunk-QN33PNHL-wilj7fb5.js.map → chunk-QN33PNHL-DzWVcvpI.js.map} +1 -1
  49. package/dist/static/assets/{chunk-QZHKN3VN-DGmviJfR.js → chunk-QZHKN3VN-BrrvAZdP.js} +2 -2
  50. package/dist/static/assets/{chunk-QZHKN3VN-DGmviJfR.js.map → chunk-QZHKN3VN-BrrvAZdP.js.map} +1 -1
  51. package/dist/static/assets/{chunk-TZMSLE5B-Nm5wTXa_.js → chunk-TZMSLE5B-DyKOlPTY.js} +2 -2
  52. package/dist/static/assets/{chunk-TZMSLE5B-Nm5wTXa_.js.map → chunk-TZMSLE5B-DyKOlPTY.js.map} +1 -1
  53. package/dist/static/assets/{classDiagram-2ON5EDUG-BvUbXD6H.js → classDiagram-2ON5EDUG-FCrnlCWC.js} +6 -6
  54. package/dist/static/assets/{classDiagram-2ON5EDUG-BvUbXD6H.js.map → classDiagram-2ON5EDUG-FCrnlCWC.js.map} +1 -1
  55. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BvUbXD6H.js → classDiagram-v2-WZHVMYZB-FCrnlCWC.js} +6 -6
  56. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BvUbXD6H.js.map → classDiagram-v2-WZHVMYZB-FCrnlCWC.js.map} +1 -1
  57. package/dist/static/assets/{clone-0VLS7GaA.js → clone-BlI81KqZ.js} +2 -2
  58. package/dist/static/assets/{clone-0VLS7GaA.js.map → clone-BlI81KqZ.js.map} +1 -1
  59. package/dist/static/assets/{cose-bilkent-S5V4N54A-anaPs-75.js → cose-bilkent-S5V4N54A-yM7S2atz.js} +2 -2
  60. package/dist/static/assets/{cose-bilkent-S5V4N54A-anaPs-75.js.map → cose-bilkent-S5V4N54A-yM7S2atz.js.map} +1 -1
  61. package/dist/static/assets/{dagre-6UL2VRFP-YwdsZ11r.js → dagre-6UL2VRFP-BcweuZHt.js} +7 -7
  62. package/dist/static/assets/{dagre-6UL2VRFP-YwdsZ11r.js.map → dagre-6UL2VRFP-BcweuZHt.js.map} +1 -1
  63. package/dist/static/assets/{diagram-PSM6KHXK-5KQCf3h2.js → diagram-PSM6KHXK-D4-QwLW1.js} +8 -8
  64. package/dist/static/assets/{diagram-PSM6KHXK-5KQCf3h2.js.map → diagram-PSM6KHXK-D4-QwLW1.js.map} +1 -1
  65. package/dist/static/assets/{diagram-QEK2KX5R-Mf24XxZL.js → diagram-QEK2KX5R-BVbuejJn.js} +7 -7
  66. package/dist/static/assets/{diagram-QEK2KX5R-Mf24XxZL.js.map → diagram-QEK2KX5R-BVbuejJn.js.map} +1 -1
  67. package/dist/static/assets/{diagram-S2PKOQOG-DyQjD4D5.js → diagram-S2PKOQOG-pB6N6Tq_.js} +7 -7
  68. package/dist/static/assets/{diagram-S2PKOQOG-DyQjD4D5.js.map → diagram-S2PKOQOG-pB6N6Tq_.js.map} +1 -1
  69. package/dist/static/assets/{erDiagram-Q2GNP2WA-CEzTKw1u.js → erDiagram-Q2GNP2WA-DLKmthuw.js} +5 -5
  70. package/dist/static/assets/{erDiagram-Q2GNP2WA-CEzTKw1u.js.map → erDiagram-Q2GNP2WA-DLKmthuw.js.map} +1 -1
  71. package/dist/static/assets/{flowDiagram-NV44I4VS-DT821XSz.js → flowDiagram-NV44I4VS-BsBhWukh.js} +6 -6
  72. package/dist/static/assets/{flowDiagram-NV44I4VS-DT821XSz.js.map → flowDiagram-NV44I4VS-BsBhWukh.js.map} +1 -1
  73. package/dist/static/assets/{ganttDiagram-JELNMOA3-DlmeVsGg.js → ganttDiagram-JELNMOA3-Debz-J-C.js} +3 -3
  74. package/dist/static/assets/{ganttDiagram-JELNMOA3-DlmeVsGg.js.map → ganttDiagram-JELNMOA3-Debz-J-C.js.map} +1 -1
  75. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-yAfyBG_d.js → gitGraphDiagram-V2S2FVAM-BnAPFBGR.js} +8 -8
  76. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-yAfyBG_d.js.map → gitGraphDiagram-V2S2FVAM-BnAPFBGR.js.map} +1 -1
  77. package/dist/static/assets/{graph-BYv8vyWe.js → graph-DbzWiBNK.js} +3 -3
  78. package/dist/static/assets/{graph-BYv8vyWe.js.map → graph-DbzWiBNK.js.map} +1 -1
  79. package/dist/static/assets/{index-DMbwqOm6.js → index-B-8J28g7.js} +987 -1049
  80. package/dist/static/assets/index-B-8J28g7.js.map +1 -0
  81. package/dist/static/assets/{index-BiNcBn_U.css → index-CD5wtC_i.css} +1 -1
  82. package/dist/static/assets/{infoDiagram-HS3SLOUP-DaadramQ.js → infoDiagram-HS3SLOUP-CZ5hWoxV.js} +6 -6
  83. package/dist/static/assets/{infoDiagram-HS3SLOUP-DaadramQ.js.map → infoDiagram-HS3SLOUP-CZ5hWoxV.js.map} +1 -1
  84. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ftN8hxu3.js → journeyDiagram-XKPGCS4Q-CKN3oSxk.js} +5 -5
  85. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ftN8hxu3.js.map → journeyDiagram-XKPGCS4Q-CKN3oSxk.js.map} +1 -1
  86. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BIXETQ-C.js → kanban-definition-3W4ZIXB7-BQCMklfJ.js} +3 -3
  87. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BIXETQ-C.js.map → kanban-definition-3W4ZIXB7-BQCMklfJ.js.map} +1 -1
  88. package/dist/static/assets/{layout-OTbrj0Ye.js → layout-C5B58szc.js} +5 -5
  89. package/dist/static/assets/{layout-OTbrj0Ye.js.map → layout-C5B58szc.js.map} +1 -1
  90. package/dist/static/assets/{linear-CVfOC669.js → linear-_32fut6G.js} +2 -2
  91. package/dist/static/assets/{linear-CVfOC669.js.map → linear-_32fut6G.js.map} +1 -1
  92. package/dist/static/assets/{mindmap-definition-VGOIOE7T-D2zv5uI9.js → mindmap-definition-VGOIOE7T-C_goMzjx.js} +4 -4
  93. package/dist/static/assets/{mindmap-definition-VGOIOE7T-D2zv5uI9.js.map → mindmap-definition-VGOIOE7T-C_goMzjx.js.map} +1 -1
  94. package/dist/static/assets/{pieDiagram-ADFJNKIX-DaUXTsv7.js → pieDiagram-ADFJNKIX-BQ2n0cOB.js} +8 -8
  95. package/dist/static/assets/{pieDiagram-ADFJNKIX-DaUXTsv7.js.map → pieDiagram-ADFJNKIX-BQ2n0cOB.js.map} +1 -1
  96. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-B7O2wPX9.js → quadrantDiagram-AYHSOK5B-BLg7_neg.js} +3 -3
  97. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-B7O2wPX9.js.map → quadrantDiagram-AYHSOK5B-BLg7_neg.js.map} +1 -1
  98. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DpauVPY1.js → requirementDiagram-UZGBJVZJ-DwkJt0zi.js} +4 -4
  99. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DpauVPY1.js.map → requirementDiagram-UZGBJVZJ-DwkJt0zi.js.map} +1 -1
  100. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B3Hbfvad.js → sankeyDiagram-TZEHDZUN-DmxmatUB.js} +2 -2
  101. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B3Hbfvad.js.map → sankeyDiagram-TZEHDZUN-DmxmatUB.js.map} +1 -1
  102. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KdbWByWT.js → sequenceDiagram-WL72ISMW-KHU_eApU.js} +4 -4
  103. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KdbWByWT.js.map → sequenceDiagram-WL72ISMW-KHU_eApU.js.map} +1 -1
  104. package/dist/static/assets/{stateDiagram-FKZM4ZOC-yDOCVezC.js → stateDiagram-FKZM4ZOC-B3DBCxAL.js} +9 -9
  105. package/dist/static/assets/{stateDiagram-FKZM4ZOC-yDOCVezC.js.map → stateDiagram-FKZM4ZOC-B3DBCxAL.js.map} +1 -1
  106. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-CpCJhvQO.js → stateDiagram-v2-4FDKWEC3-C-uIk7gh.js} +5 -5
  107. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-CpCJhvQO.js.map → stateDiagram-v2-4FDKWEC3-C-uIk7gh.js.map} +1 -1
  108. package/dist/static/assets/{timeline-definition-IT6M3QCI-CHxuEjhV.js → timeline-definition-IT6M3QCI-SysEcQCC.js} +3 -3
  109. package/dist/static/assets/{timeline-definition-IT6M3QCI-CHxuEjhV.js.map → timeline-definition-IT6M3QCI-SysEcQCC.js.map} +1 -1
  110. package/dist/static/assets/{treemap-GDKQZRPO-Bsqu3wIy.js → treemap-GDKQZRPO-d0AbKEc4.js} +5 -5
  111. package/dist/static/assets/{treemap-GDKQZRPO-Bsqu3wIy.js.map → treemap-GDKQZRPO-d0AbKEc4.js.map} +1 -1
  112. package/dist/static/assets/{xychartDiagram-PRI3JC2R-RZy33lFF.js → xychartDiagram-PRI3JC2R-CmSQMxUh.js} +3 -3
  113. package/dist/static/assets/{xychartDiagram-PRI3JC2R-RZy33lFF.js.map → xychartDiagram-PRI3JC2R-CmSQMxUh.js.map} +1 -1
  114. package/dist/static/index.html +2 -2
  115. package/dist/tools/fs.js +1 -1
  116. package/package.json +9 -7
  117. package/dist/agent-priming.js +0 -2051
  118. package/dist/apps/installed-file.js +0 -207
  119. package/dist/apps/runtime-port.js +0 -91
  120. package/dist/docs/dominds-agent-priming.md +0 -218
  121. package/dist/docs/dominds-agent-priming.zh.md +0 -196
  122. package/dist/docs/drive-logic-context-refactor-plan.zh.md +0 -338
  123. package/dist/docs/keep-going.md +0 -176
  124. package/dist/docs/keep-going.zh.md +0 -162
  125. package/dist/docs/kernel-app-architecture.md +0 -286
  126. package/dist/docs/kernel-app-architecture.zh.md +0 -285
  127. package/dist/docs/showing-by-doing.md +0 -208
  128. package/dist/docs/showing-by-doing.zh.md +0 -177
  129. package/dist/docs/team-mgmt-toolset.md +0 -482
  130. package/dist/docs/team-mgmt-toolset.zh.md +0 -426
  131. package/dist/llm/driver-entry.js +0 -28
  132. package/dist/llm/driver-v2/context-health.js +0 -121
  133. package/dist/llm/driver-v2/context.js +0 -56
  134. package/dist/llm/driver-v2/core.js +0 -1545
  135. package/dist/llm/driver-v2/index.js +0 -26
  136. package/dist/llm/driver-v2/orchestrator.js +0 -158
  137. package/dist/llm/driver-v2/policy.js +0 -129
  138. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +0 -73
  139. package/dist/llm/driver-v2/round.js +0 -366
  140. package/dist/llm/driver-v2/runtime-utils.js +0 -365
  141. package/dist/llm/driver-v2/saying-events.js +0 -20
  142. package/dist/llm/driver-v2/subdialog-txn.js +0 -42
  143. package/dist/llm/driver-v2/supdialog-response.js +0 -400
  144. package/dist/llm/driver-v2/tellask-bridge.js +0 -1148
  145. package/dist/llm/driver-v2/types.js +0 -10
  146. package/dist/llm/driver-v2-ref-only/context-health.js +0 -121
  147. package/dist/llm/driver-v2-ref-only/context.js +0 -17
  148. package/dist/llm/driver-v2-ref-only/core.js +0 -1710
  149. package/dist/llm/driver-v2-ref-only/index.js +0 -26
  150. package/dist/llm/driver-v2-ref-only/orchestrator.js +0 -158
  151. package/dist/llm/driver-v2-ref-only/policy.js +0 -129
  152. package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +0 -73
  153. package/dist/llm/driver-v2-ref-only/round.js +0 -366
  154. package/dist/llm/driver-v2-ref-only/runtime-utils.js +0 -473
  155. package/dist/llm/driver-v2-ref-only/saying-events.js +0 -18
  156. package/dist/llm/driver-v2-ref-only/subdialog-txn.js +0 -42
  157. package/dist/llm/driver-v2-ref-only/supdialog-response.js +0 -453
  158. package/dist/llm/driver-v2-ref-only/tellask-bridge.js +0 -1178
  159. package/dist/llm/driver-v2-ref-only/types.js +0 -10
  160. package/dist/llm/driver.js +0 -4093
  161. package/dist/minds/promptdocs.js +0 -263
  162. package/dist/server/prompts-routes.js +0 -545
  163. package/dist/shared/team-mgmt-manual.js +0 -120
  164. package/dist/shared/types/prompts.js +0 -2
  165. package/dist/shared/types/tellask.js +0 -8
  166. package/dist/showing-by-doing.js +0 -1091
  167. package/dist/snippets/README.en.md +0 -3
  168. package/dist/snippets/README.md +0 -4
  169. package/dist/static/assets/index-DMbwqOm6.js.map +0 -1
  170. package/dist/tellask.js +0 -439
  171. package/dist/tools/context-health.js +0 -177
  172. package/dist/tools/diag.js +0 -583
  173. package/dist/tools/prompts/memory/en/errors.md +0 -155
  174. package/dist/tools/prompts/memory/en/index.md +0 -47
  175. package/dist/tools/prompts/memory/en/principles.md +0 -87
  176. package/dist/tools/prompts/memory/en/scenarios.md +0 -174
  177. package/dist/tools/prompts/memory/en/tools.md +0 -129
  178. package/dist/tools/prompts/memory/zh/errors.md +0 -155
  179. package/dist/tools/prompts/memory/zh/index.md +0 -47
  180. package/dist/tools/prompts/memory/zh/principles.md +0 -89
  181. package/dist/tools/prompts/memory/zh/scenarios.md +0 -174
  182. package/dist/tools/prompts/memory/zh/tools.md +0 -129
  183. package/dist/tools/team-mgmt.js +0 -3487
  184. package/dist/utils/task-doc.js +0 -236
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-YwdsZ11r.js","assets/graph-BYv8vyWe.js","assets/_baseUniq-CgDZxcD0.js","assets/layout-OTbrj0Ye.js","assets/_basePickBy-CmziIRM9.js","assets/clone-0VLS7GaA.js","assets/cose-bilkent-S5V4N54A-anaPs-75.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-DBf1NeBf.js","assets/chunk-TZMSLE5B-Nm5wTXa_.js","assets/flowDiagram-NV44I4VS-DT821XSz.js","assets/chunk-FMBD7UC4-DiwRlImb.js","assets/chunk-55IACEB6-CSDEOGl2.js","assets/chunk-QN33PNHL-wilj7fb5.js","assets/channel-Dc34yAJl.js","assets/erDiagram-Q2GNP2WA-CEzTKw1u.js","assets/gitGraphDiagram-V2S2FVAM-yAfyBG_d.js","assets/chunk-4BX2VUAB-B65G1dJI.js","assets/chunk-QZHKN3VN-DGmviJfR.js","assets/treemap-GDKQZRPO-Bsqu3wIy.js","assets/ganttDiagram-JELNMOA3-DlmeVsGg.js","assets/linear-CVfOC669.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-HS3SLOUP-DaadramQ.js","assets/pieDiagram-ADFJNKIX-DaUXTsv7.js","assets/arc-Df9rjNNk.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-B7O2wPX9.js","assets/xychartDiagram-PRI3JC2R-RZy33lFF.js","assets/requirementDiagram-UZGBJVZJ-DpauVPY1.js","assets/sequenceDiagram-WL72ISMW-KdbWByWT.js","assets/classDiagram-2ON5EDUG-BvUbXD6H.js","assets/chunk-B4BG7PRW-Cb6W3QWJ.js","assets/classDiagram-v2-WZHVMYZB-BvUbXD6H.js","assets/stateDiagram-FKZM4ZOC-yDOCVezC.js","assets/chunk-DI55MBZ5-ZAJWeVWH.js","assets/stateDiagram-v2-4FDKWEC3-CpCJhvQO.js","assets/journeyDiagram-XKPGCS4Q-ftN8hxu3.js","assets/timeline-definition-IT6M3QCI-CHxuEjhV.js","assets/mindmap-definition-VGOIOE7T-D2zv5uI9.js","assets/kanban-definition-3W4ZIXB7-BIXETQ-C.js","assets/sankeyDiagram-TZEHDZUN-B3Hbfvad.js","assets/diagram-S2PKOQOG-DyQjD4D5.js","assets/diagram-QEK2KX5R-Mf24XxZL.js","assets/blockDiagram-VD42YOAC-D9Egoflr.js","assets/architectureDiagram-VXUJARFQ-Bif8topC.js","assets/diagram-PSM6KHXK-5KQCf3h2.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-BcweuZHt.js","assets/graph-DbzWiBNK.js","assets/_baseUniq-CLmcxjdl.js","assets/layout-C5B58szc.js","assets/_basePickBy-B2o4z1Hf.js","assets/clone-BlI81KqZ.js","assets/cose-bilkent-S5V4N54A-yM7S2atz.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-B0WnCfAT.js","assets/chunk-TZMSLE5B-DyKOlPTY.js","assets/flowDiagram-NV44I4VS-BsBhWukh.js","assets/chunk-FMBD7UC4-5uefwCjI.js","assets/chunk-55IACEB6-CdqwynH9.js","assets/chunk-QN33PNHL-DzWVcvpI.js","assets/channel-CX9BlKil.js","assets/erDiagram-Q2GNP2WA-DLKmthuw.js","assets/gitGraphDiagram-V2S2FVAM-BnAPFBGR.js","assets/chunk-4BX2VUAB-lXArRj3o.js","assets/chunk-QZHKN3VN-BrrvAZdP.js","assets/treemap-GDKQZRPO-d0AbKEc4.js","assets/ganttDiagram-JELNMOA3-Debz-J-C.js","assets/linear-_32fut6G.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-HS3SLOUP-CZ5hWoxV.js","assets/pieDiagram-ADFJNKIX-BQ2n0cOB.js","assets/arc-CymD_KN7.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-BLg7_neg.js","assets/xychartDiagram-PRI3JC2R-CmSQMxUh.js","assets/requirementDiagram-UZGBJVZJ-DwkJt0zi.js","assets/sequenceDiagram-WL72ISMW-KHU_eApU.js","assets/classDiagram-2ON5EDUG-FCrnlCWC.js","assets/chunk-B4BG7PRW-Y-uXcJst.js","assets/classDiagram-v2-WZHVMYZB-FCrnlCWC.js","assets/stateDiagram-FKZM4ZOC-B3DBCxAL.js","assets/chunk-DI55MBZ5-C5xSbRST.js","assets/stateDiagram-v2-4FDKWEC3-C-uIk7gh.js","assets/journeyDiagram-XKPGCS4Q-CKN3oSxk.js","assets/timeline-definition-IT6M3QCI-SysEcQCC.js","assets/mindmap-definition-VGOIOE7T-C_goMzjx.js","assets/kanban-definition-3W4ZIXB7-BQCMklfJ.js","assets/sankeyDiagram-TZEHDZUN-DmxmatUB.js","assets/diagram-S2PKOQOG-pB6N6Tq_.js","assets/diagram-QEK2KX5R-BVbuejJn.js","assets/blockDiagram-VD42YOAC-pHVz60D0.js","assets/architectureDiagram-VXUJARFQ-DJQfSJUH.js","assets/diagram-PSM6KHXK-D4-QwLW1.js"])))=>i.map(i=>d[i]);
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -4450,7 +4450,7 @@ const _createHooksMap = function _createHooksMap2() {
4450
4450
  function createDOMPurify() {
4451
4451
  let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
4452
4452
  const DOMPurify = (root2) => createDOMPurify(root2);
4453
- DOMPurify.version = "3.3.1";
4453
+ DOMPurify.version = "3.3.2";
4454
4454
  DOMPurify.removed = [];
4455
4455
  if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
4456
4456
  DOMPurify.isSupported = false;
@@ -4651,7 +4651,7 @@ function createDOMPurify() {
4651
4651
  }
4652
4652
  if (USE_PROFILES) {
4653
4653
  ALLOWED_TAGS = addToSet({}, text$4);
4654
- ALLOWED_ATTR = [];
4654
+ ALLOWED_ATTR = create$1(null);
4655
4655
  if (USE_PROFILES.html === true) {
4656
4656
  addToSet(ALLOWED_TAGS, html$1);
4657
4657
  addToSet(ALLOWED_ATTR, html);
@@ -4672,6 +4672,12 @@ function createDOMPurify() {
4672
4672
  addToSet(ALLOWED_ATTR, xml);
4673
4673
  }
4674
4674
  }
4675
+ if (!objectHasOwnProperty(cfg, "ADD_TAGS")) {
4676
+ EXTRA_ELEMENT_HANDLING.tagCheck = null;
4677
+ }
4678
+ if (!objectHasOwnProperty(cfg, "ADD_ATTR")) {
4679
+ EXTRA_ELEMENT_HANDLING.attributeCheck = null;
4680
+ }
4675
4681
  if (cfg.ADD_TAGS) {
4676
4682
  if (typeof cfg.ADD_TAGS === "function") {
4677
4683
  EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
@@ -4950,6 +4956,9 @@ function createDOMPurify() {
4950
4956
  return false;
4951
4957
  };
4952
4958
  const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
4959
+ if (FORBID_ATTR[lcName]) {
4960
+ return false;
4961
+ }
4953
4962
  if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
4954
4963
  return false;
4955
4964
  }
@@ -5016,7 +5025,7 @@ function createDOMPurify() {
5016
5025
  _removeAttribute(name, currentNode);
5017
5026
  value = SANITIZE_NAMED_PROPS_PREFIX + value;
5018
5027
  }
5019
- if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) {
5028
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
5020
5029
  _removeAttribute(name, currentNode);
5021
5030
  continue;
5022
5031
  }
@@ -62524,65 +62533,11 @@ class DomindsCodeBlock extends HTMLElement {
62524
62533
  if (!customElements.get("dominds-code-block")) {
62525
62534
  customElements.define("dominds-code-block", DomindsCodeBlock);
62526
62535
  }
62527
- class SourceLocation {
62528
- // The + prefix indicates that these fields aren't writeable
62529
- // Lexer holding the input string.
62530
- // Start offset, zero-based inclusive.
62531
- // End offset, zero-based exclusive.
62532
- constructor(lexer, start2, end) {
62533
- this.lexer = void 0;
62534
- this.start = void 0;
62535
- this.end = void 0;
62536
- this.lexer = lexer;
62537
- this.start = start2;
62538
- this.end = end;
62539
- }
62540
- /**
62541
- * Merges two `SourceLocation`s from location providers, given they are
62542
- * provided in order of appearance.
62543
- * - Returns the first one's location if only the first is provided.
62544
- * - Returns a merged range of the first and the last if both are provided
62545
- * and their lexers match.
62546
- * - Otherwise, returns null.
62547
- */
62548
- static range(first, second) {
62549
- if (!second) {
62550
- return first && first.loc;
62551
- } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) {
62552
- return null;
62553
- } else {
62554
- return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end);
62555
- }
62556
- }
62557
- }
62558
- class Token {
62559
- // don't expand the token
62560
- // used in \noexpand
62561
- constructor(text2, loc) {
62562
- this.text = void 0;
62563
- this.loc = void 0;
62564
- this.noexpand = void 0;
62565
- this.treatAsRelax = void 0;
62566
- this.text = text2;
62567
- this.loc = loc;
62568
- }
62569
- /**
62570
- * Given a pair of tokens (this and endToken), compute a `Token` encompassing
62571
- * the whole input range enclosed by these two.
62572
- */
62573
- range(endToken, text2) {
62574
- return new Token(text2, SourceLocation.range(this, endToken));
62575
- }
62576
- }
62577
- class ParseError {
62536
+ class ParseError extends Error {
62578
62537
  // Error start position based on passed-in Token or ParseNode.
62579
62538
  // Length of affected text based on passed-in Token or ParseNode.
62580
62539
  // The underlying error message without any context added.
62581
62540
  constructor(message, token2) {
62582
- this.name = void 0;
62583
- this.position = void 0;
62584
- this.length = void 0;
62585
- this.rawMessage = void 0;
62586
62541
  var error2 = "KaTeX parse error: " + message;
62587
62542
  var start2;
62588
62543
  var end;
@@ -62611,18 +62566,16 @@ class ParseError {
62611
62566
  }
62612
62567
  error2 += left + underlined + right;
62613
62568
  }
62614
- var self2 = new Error(error2);
62615
- self2.name = "ParseError";
62616
- self2.__proto__ = ParseError.prototype;
62617
- self2.position = start2;
62569
+ super(error2);
62570
+ this.name = "ParseError";
62571
+ Object.setPrototypeOf(this, ParseError.prototype);
62572
+ this.position = start2;
62618
62573
  if (start2 != null && end != null) {
62619
- self2.length = end - start2;
62574
+ this.length = end - start2;
62620
62575
  }
62621
- self2.rawMessage = message;
62622
- return self2;
62576
+ this.rawMessage = message;
62623
62577
  }
62624
62578
  }
62625
- ParseError.prototype.__proto__ = Error.prototype;
62626
62579
  var uppercase = /([A-Z])/g;
62627
62580
  var hyphenate = (str2) => str2.replace(uppercase, "-$1").toLowerCase();
62628
62581
  var ESCAPE_LOOKUP = {
@@ -62759,7 +62712,7 @@ var SETTINGS_SCHEMA = {
62759
62712
  }
62760
62713
  };
62761
62714
  function getDefaultValue(schema2) {
62762
- if (schema2.default) {
62715
+ if ("default" in schema2) {
62763
62716
  return schema2.default;
62764
62717
  }
62765
62718
  var type2 = schema2.type;
@@ -62780,26 +62733,14 @@ function getDefaultValue(schema2) {
62780
62733
  }
62781
62734
  class Settings {
62782
62735
  constructor(options) {
62783
- this.displayMode = void 0;
62784
- this.output = void 0;
62785
- this.leqno = void 0;
62786
- this.fleqn = void 0;
62787
- this.throwOnError = void 0;
62788
- this.errorColor = void 0;
62789
- this.macros = void 0;
62790
- this.minRuleThickness = void 0;
62791
- this.colorIsTextColor = void 0;
62792
- this.strict = void 0;
62793
- this.trust = void 0;
62794
- this.maxSize = void 0;
62795
- this.maxExpand = void 0;
62796
- this.globalGroup = void 0;
62736
+ if (options === void 0) {
62737
+ options = {};
62738
+ }
62797
62739
  options = options || {};
62798
- for (var prop in SETTINGS_SCHEMA) {
62799
- if (SETTINGS_SCHEMA.hasOwnProperty(prop)) {
62800
- var schema2 = SETTINGS_SCHEMA[prop];
62801
- this[prop] = options[prop] !== void 0 ? schema2.processor ? schema2.processor(options[prop]) : options[prop] : getDefaultValue(schema2);
62802
- }
62740
+ for (var prop of Object.keys(SETTINGS_SCHEMA)) {
62741
+ var schema2 = SETTINGS_SCHEMA[prop];
62742
+ var optionValue = options[prop];
62743
+ this[prop] = optionValue !== void 0 ? schema2.processor ? schema2.processor(optionValue) : optionValue : getDefaultValue(schema2);
62803
62744
  }
62804
62745
  }
62805
62746
  /**
@@ -62859,7 +62800,7 @@ class Settings {
62859
62800
  * get added by this function (changing the specified object).
62860
62801
  */
62861
62802
  isTrusted(context) {
62862
- if (context.url && !context.protocol) {
62803
+ if ("url" in context && context.url && !context.protocol) {
62863
62804
  var protocol = protocolFromUrl(context.url);
62864
62805
  if (protocol == null) {
62865
62806
  return false;
@@ -62872,9 +62813,6 @@ class Settings {
62872
62813
  }
62873
62814
  class Style {
62874
62815
  constructor(id28, size, cramped) {
62875
- this.id = void 0;
62876
- this.size = void 0;
62877
- this.cramped = void 0;
62878
62816
  this.id = id28;
62879
62817
  this.size = size;
62880
62818
  this.cramped = cramped;
@@ -63203,48 +63141,387 @@ var tallDelim = function tallDelim2(label, midHeight) {
63203
63141
  throw new Error("Unknown stretchy delimiter.");
63204
63142
  }
63205
63143
  };
63206
- class DocumentFragment {
63207
- // Never used; needed for satisfying interface.
63208
- constructor(children2) {
63209
- this.children = void 0;
63210
- this.classes = void 0;
63211
- this.height = void 0;
63212
- this.depth = void 0;
63213
- this.maxFontSize = void 0;
63214
- this.style = void 0;
63215
- this.children = children2;
63216
- this.classes = [];
63144
+ var ptPerUnit = {
63145
+ // https://en.wikibooks.org/wiki/LaTeX/Lengths and
63146
+ // https://tex.stackexchange.com/a/8263
63147
+ "pt": 1,
63148
+ // TeX point
63149
+ "mm": 7227 / 2540,
63150
+ // millimeter
63151
+ "cm": 7227 / 254,
63152
+ // centimeter
63153
+ "in": 72.27,
63154
+ // inch
63155
+ "bp": 803 / 800,
63156
+ // big (PostScript) points
63157
+ "pc": 12,
63158
+ // pica
63159
+ "dd": 1238 / 1157,
63160
+ // didot
63161
+ "cc": 14856 / 1157,
63162
+ // cicero (12 didot)
63163
+ "nd": 685 / 642,
63164
+ // new didot
63165
+ "nc": 1370 / 107,
63166
+ // new cicero (12 new didot)
63167
+ "sp": 1 / 65536,
63168
+ // scaled point (TeX's internal smallest unit)
63169
+ // https://tex.stackexchange.com/a/41371
63170
+ "px": 803 / 800
63171
+ // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX
63172
+ };
63173
+ var relativeUnit = {
63174
+ "ex": true,
63175
+ "em": true,
63176
+ "mu": true
63177
+ };
63178
+ var validUnit = function validUnit2(unit) {
63179
+ if (typeof unit !== "string") {
63180
+ unit = unit.unit;
63181
+ }
63182
+ return unit in ptPerUnit || unit in relativeUnit || unit === "ex";
63183
+ };
63184
+ var calculateSize$1 = function calculateSize(sizeValue, options) {
63185
+ var scale;
63186
+ if (sizeValue.unit in ptPerUnit) {
63187
+ scale = ptPerUnit[sizeValue.unit] / options.fontMetrics().ptPerEm / options.sizeMultiplier;
63188
+ } else if (sizeValue.unit === "mu") {
63189
+ scale = options.fontMetrics().cssEmPerMu;
63190
+ } else {
63191
+ var unitOptions;
63192
+ if (options.style.isTight()) {
63193
+ unitOptions = options.havingStyle(options.style.text());
63194
+ } else {
63195
+ unitOptions = options;
63196
+ }
63197
+ if (sizeValue.unit === "ex") {
63198
+ scale = unitOptions.fontMetrics().xHeight;
63199
+ } else if (sizeValue.unit === "em") {
63200
+ scale = unitOptions.fontMetrics().quad;
63201
+ } else {
63202
+ throw new ParseError("Invalid unit: '" + sizeValue.unit + "'");
63203
+ }
63204
+ if (unitOptions !== options) {
63205
+ scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;
63206
+ }
63207
+ }
63208
+ return Math.min(sizeValue.number * scale, options.maxSize);
63209
+ };
63210
+ var makeEm = function makeEm2(n2) {
63211
+ return +n2.toFixed(4) + "em";
63212
+ };
63213
+ var createClass = function createClass2(classes) {
63214
+ return classes.filter((cls) => cls).join(" ");
63215
+ };
63216
+ var initNode = function initNode2(classes, options, style2) {
63217
+ this.classes = classes || [];
63218
+ this.attributes = {};
63219
+ this.height = 0;
63220
+ this.depth = 0;
63221
+ this.maxFontSize = 0;
63222
+ this.style = style2 || {};
63223
+ if (options) {
63224
+ if (options.style.isTight()) {
63225
+ this.classes.push("mtight");
63226
+ }
63227
+ var color2 = options.getColor();
63228
+ if (color2) {
63229
+ this.style.color = color2;
63230
+ }
63231
+ }
63232
+ };
63233
+ var toNode = function toNode2(tagName) {
63234
+ var node2 = document.createElement(tagName);
63235
+ node2.className = createClass(this.classes);
63236
+ for (var key of Object.keys(this.style)) {
63237
+ node2.style[key] = this.style[key];
63238
+ }
63239
+ for (var attr of Object.keys(this.attributes)) {
63240
+ node2.setAttribute(attr, this.attributes[attr]);
63241
+ }
63242
+ for (var i2 = 0; i2 < this.children.length; i2++) {
63243
+ node2.appendChild(this.children[i2].toNode());
63244
+ }
63245
+ return node2;
63246
+ };
63247
+ var invalidAttributeNameRegex = /[\s"'>/=\x00-\x1f]/;
63248
+ var toMarkup = function toMarkup2(tagName) {
63249
+ var markup = "<" + tagName;
63250
+ if (this.classes.length) {
63251
+ markup += ' class="' + escape$1(createClass(this.classes)) + '"';
63252
+ }
63253
+ var styles2 = "";
63254
+ for (var key of Object.keys(this.style)) {
63255
+ styles2 += hyphenate(key) + ":" + this.style[key] + ";";
63256
+ }
63257
+ if (styles2) {
63258
+ markup += ' style="' + escape$1(styles2) + '"';
63259
+ }
63260
+ for (var attr of Object.keys(this.attributes)) {
63261
+ if (invalidAttributeNameRegex.test(attr)) {
63262
+ throw new ParseError("Invalid attribute name '" + attr + "'");
63263
+ }
63264
+ markup += " " + attr + '="' + escape$1(this.attributes[attr]) + '"';
63265
+ }
63266
+ markup += ">";
63267
+ for (var i2 = 0; i2 < this.children.length; i2++) {
63268
+ markup += this.children[i2].toMarkup();
63269
+ }
63270
+ markup += "</" + tagName + ">";
63271
+ return markup;
63272
+ };
63273
+ class Span {
63274
+ constructor(classes, children2, options, style2) {
63275
+ initNode.call(this, classes, options, style2);
63276
+ this.children = children2 || [];
63277
+ }
63278
+ /**
63279
+ * Sets an arbitrary attribute on the span. Warning: use this wisely. Not
63280
+ * all browsers support attributes the same, and having too many custom
63281
+ * attributes is probably bad.
63282
+ */
63283
+ setAttribute(attribute2, value) {
63284
+ this.attributes[attribute2] = value;
63285
+ }
63286
+ hasClass(className) {
63287
+ return this.classes.includes(className);
63288
+ }
63289
+ toNode() {
63290
+ return toNode.call(this, "span");
63291
+ }
63292
+ toMarkup() {
63293
+ return toMarkup.call(this, "span");
63294
+ }
63295
+ }
63296
+ class Anchor {
63297
+ constructor(href, classes, children2, options) {
63298
+ initNode.call(this, classes, options);
63299
+ this.children = children2 || [];
63300
+ this.setAttribute("href", href);
63301
+ }
63302
+ setAttribute(attribute2, value) {
63303
+ this.attributes[attribute2] = value;
63304
+ }
63305
+ hasClass(className) {
63306
+ return this.classes.includes(className);
63307
+ }
63308
+ toNode() {
63309
+ return toNode.call(this, "a");
63310
+ }
63311
+ toMarkup() {
63312
+ return toMarkup.call(this, "a");
63313
+ }
63314
+ }
63315
+ class Img {
63316
+ constructor(src, alt, style2) {
63317
+ this.alt = alt;
63318
+ this.src = src;
63319
+ this.classes = ["mord"];
63217
63320
  this.height = 0;
63218
63321
  this.depth = 0;
63219
63322
  this.maxFontSize = 0;
63220
- this.style = {};
63323
+ this.style = style2;
63221
63324
  }
63222
63325
  hasClass(className) {
63223
63326
  return this.classes.includes(className);
63224
63327
  }
63225
- /** Convert the fragment into a node. */
63226
63328
  toNode() {
63227
- var frag = document.createDocumentFragment();
63329
+ var node2 = document.createElement("img");
63330
+ node2.src = this.src;
63331
+ node2.alt = this.alt;
63332
+ node2.className = "mord";
63333
+ for (var key of Object.keys(this.style)) {
63334
+ node2.style[key] = this.style[key];
63335
+ }
63336
+ return node2;
63337
+ }
63338
+ toMarkup() {
63339
+ var markup = '<img src="' + escape$1(this.src) + '"' + (' alt="' + escape$1(this.alt) + '"');
63340
+ var styles2 = "";
63341
+ for (var key of Object.keys(this.style)) {
63342
+ styles2 += hyphenate(key) + ":" + this.style[key] + ";";
63343
+ }
63344
+ if (styles2) {
63345
+ markup += ' style="' + escape$1(styles2) + '"';
63346
+ }
63347
+ markup += "'/>";
63348
+ return markup;
63349
+ }
63350
+ }
63351
+ var iCombinations = {
63352
+ "î": "ı̂",
63353
+ "ï": "ı̈",
63354
+ "í": "ı́",
63355
+ // 'ī': '\u0131\u0304', // enable when we add Extended Latin
63356
+ "ì": "ı̀"
63357
+ };
63358
+ class SymbolNode {
63359
+ constructor(text2, height, depth, italic, skew2, width, classes, style2) {
63360
+ this.text = text2;
63361
+ this.height = height || 0;
63362
+ this.depth = depth || 0;
63363
+ this.italic = italic || 0;
63364
+ this.skew = skew2 || 0;
63365
+ this.width = width || 0;
63366
+ this.classes = classes || [];
63367
+ this.style = style2 || {};
63368
+ this.maxFontSize = 0;
63369
+ var script = scriptFromCodepoint(this.text.charCodeAt(0));
63370
+ if (script) {
63371
+ this.classes.push(script + "_fallback");
63372
+ }
63373
+ if (/[îïíì]/.test(this.text)) {
63374
+ this.text = iCombinations[this.text];
63375
+ }
63376
+ }
63377
+ hasClass(className) {
63378
+ return this.classes.includes(className);
63379
+ }
63380
+ /**
63381
+ * Creates a text node or span from a symbol node. Note that a span is only
63382
+ * created if it is needed.
63383
+ */
63384
+ toNode() {
63385
+ var node2 = document.createTextNode(this.text);
63386
+ var span = null;
63387
+ if (this.italic > 0) {
63388
+ span = document.createElement("span");
63389
+ span.style.marginRight = makeEm(this.italic);
63390
+ }
63391
+ if (this.classes.length > 0) {
63392
+ span = span || document.createElement("span");
63393
+ span.className = createClass(this.classes);
63394
+ }
63395
+ for (var key of Object.keys(this.style)) {
63396
+ span = span || document.createElement("span");
63397
+ span.style[key] = this.style[key];
63398
+ }
63399
+ if (span) {
63400
+ span.appendChild(node2);
63401
+ return span;
63402
+ } else {
63403
+ return node2;
63404
+ }
63405
+ }
63406
+ /**
63407
+ * Creates markup for a symbol node.
63408
+ */
63409
+ toMarkup() {
63410
+ var needsSpan = false;
63411
+ var markup = "<span";
63412
+ if (this.classes.length) {
63413
+ needsSpan = true;
63414
+ markup += ' class="';
63415
+ markup += escape$1(createClass(this.classes));
63416
+ markup += '"';
63417
+ }
63418
+ var styles2 = "";
63419
+ if (this.italic > 0) {
63420
+ styles2 += "margin-right:" + this.italic + "em;";
63421
+ }
63422
+ for (var key of Object.keys(this.style)) {
63423
+ styles2 += hyphenate(key) + ":" + this.style[key] + ";";
63424
+ }
63425
+ if (styles2) {
63426
+ needsSpan = true;
63427
+ markup += ' style="' + escape$1(styles2) + '"';
63428
+ }
63429
+ var escaped = escape$1(this.text);
63430
+ if (needsSpan) {
63431
+ markup += ">";
63432
+ markup += escaped;
63433
+ markup += "</span>";
63434
+ return markup;
63435
+ } else {
63436
+ return escaped;
63437
+ }
63438
+ }
63439
+ }
63440
+ class SvgNode {
63441
+ constructor(children2, attributes) {
63442
+ this.children = children2 || [];
63443
+ this.attributes = attributes || {};
63444
+ }
63445
+ toNode() {
63446
+ var svgNS = "http://www.w3.org/2000/svg";
63447
+ var node2 = document.createElementNS(svgNS, "svg");
63448
+ for (var attr of Object.keys(this.attributes)) {
63449
+ node2.setAttribute(attr, this.attributes[attr]);
63450
+ }
63228
63451
  for (var i2 = 0; i2 < this.children.length; i2++) {
63229
- frag.appendChild(this.children[i2].toNode());
63452
+ node2.appendChild(this.children[i2].toNode());
63230
63453
  }
63231
- return frag;
63454
+ return node2;
63232
63455
  }
63233
- /** Convert the fragment into HTML markup. */
63234
63456
  toMarkup() {
63235
- var markup = "";
63457
+ var markup = '<svg xmlns="http://www.w3.org/2000/svg"';
63458
+ for (var attr of Object.keys(this.attributes)) {
63459
+ markup += " " + attr + '="' + escape$1(this.attributes[attr]) + '"';
63460
+ }
63461
+ markup += ">";
63236
63462
  for (var i2 = 0; i2 < this.children.length; i2++) {
63237
63463
  markup += this.children[i2].toMarkup();
63238
63464
  }
63465
+ markup += "</svg>";
63239
63466
  return markup;
63240
63467
  }
63241
- /**
63242
- * Converts the math node into a string, similar to innerText. Applies to
63243
- * MathDomNode's only.
63244
- */
63245
- toText() {
63246
- var toText = (child) => child.toText();
63247
- return this.children.map(toText).join("");
63468
+ }
63469
+ class PathNode {
63470
+ constructor(pathName, alternate) {
63471
+ this.pathName = pathName;
63472
+ this.alternate = alternate;
63473
+ }
63474
+ toNode() {
63475
+ var svgNS = "http://www.w3.org/2000/svg";
63476
+ var node2 = document.createElementNS(svgNS, "path");
63477
+ if (this.alternate) {
63478
+ node2.setAttribute("d", this.alternate);
63479
+ } else {
63480
+ node2.setAttribute("d", path[this.pathName]);
63481
+ }
63482
+ return node2;
63483
+ }
63484
+ toMarkup() {
63485
+ if (this.alternate) {
63486
+ return '<path d="' + escape$1(this.alternate) + '"/>';
63487
+ } else {
63488
+ return '<path d="' + escape$1(path[this.pathName]) + '"/>';
63489
+ }
63490
+ }
63491
+ }
63492
+ class LineNode {
63493
+ constructor(attributes) {
63494
+ this.attributes = attributes || {};
63495
+ }
63496
+ toNode() {
63497
+ var svgNS = "http://www.w3.org/2000/svg";
63498
+ var node2 = document.createElementNS(svgNS, "line");
63499
+ for (var attr of Object.keys(this.attributes)) {
63500
+ node2.setAttribute(attr, this.attributes[attr]);
63501
+ }
63502
+ return node2;
63503
+ }
63504
+ toMarkup() {
63505
+ var markup = "<line";
63506
+ for (var attr of Object.keys(this.attributes)) {
63507
+ markup += " " + attr + '="' + escape$1(this.attributes[attr]) + '"';
63508
+ }
63509
+ markup += "/>";
63510
+ return markup;
63511
+ }
63512
+ }
63513
+ function assertSymbolDomNode(group) {
63514
+ if (group instanceof SymbolNode) {
63515
+ return group;
63516
+ } else {
63517
+ throw new Error("Expected symbolNode but got " + String(group) + ".");
63518
+ }
63519
+ }
63520
+ function assertSpan(group) {
63521
+ if (group instanceof Span) {
63522
+ return group;
63523
+ } else {
63524
+ throw new Error("Expected span<HtmlDomNode> but got " + String(group) + ".");
63248
63525
  }
63249
63526
  }
63250
63527
  var fontMetricsData = {
@@ -65529,721 +65806,6 @@ function getGlobalMetrics(size) {
65529
65806
  }
65530
65807
  return fontMetricsBySizeIndex[sizeIndex];
65531
65808
  }
65532
- var sizeStyleMap = [
65533
- // Each element contains [textsize, scriptsize, scriptscriptsize].
65534
- // The size mappings are taken from TeX with \normalsize=10pt.
65535
- [1, 1, 1],
65536
- // size1: [5, 5, 5] \tiny
65537
- [2, 1, 1],
65538
- // size2: [6, 5, 5]
65539
- [3, 1, 1],
65540
- // size3: [7, 5, 5] \scriptsize
65541
- [4, 2, 1],
65542
- // size4: [8, 6, 5] \footnotesize
65543
- [5, 2, 1],
65544
- // size5: [9, 6, 5] \small
65545
- [6, 3, 1],
65546
- // size6: [10, 7, 5] \normalsize
65547
- [7, 4, 2],
65548
- // size7: [12, 8, 6] \large
65549
- [8, 6, 3],
65550
- // size8: [14.4, 10, 7] \Large
65551
- [9, 7, 6],
65552
- // size9: [17.28, 12, 10] \LARGE
65553
- [10, 8, 7],
65554
- // size10: [20.74, 14.4, 12] \huge
65555
- [11, 10, 9]
65556
- // size11: [24.88, 20.74, 17.28] \HUGE
65557
- ];
65558
- var sizeMultipliers = [
65559
- // fontMetrics.js:getGlobalMetrics also uses size indexes, so if
65560
- // you change size indexes, change that function.
65561
- 0.5,
65562
- 0.6,
65563
- 0.7,
65564
- 0.8,
65565
- 0.9,
65566
- 1,
65567
- 1.2,
65568
- 1.44,
65569
- 1.728,
65570
- 2.074,
65571
- 2.488
65572
- ];
65573
- var sizeAtStyle = function sizeAtStyle2(size, style2) {
65574
- return style2.size < 2 ? size : sizeStyleMap[size - 1][style2.size - 1];
65575
- };
65576
- class Options {
65577
- // A font family applies to a group of fonts (i.e. SansSerif), while a font
65578
- // represents a specific font (i.e. SansSerif Bold).
65579
- // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm
65580
- /**
65581
- * The base size index.
65582
- */
65583
- constructor(data) {
65584
- this.style = void 0;
65585
- this.color = void 0;
65586
- this.size = void 0;
65587
- this.textSize = void 0;
65588
- this.phantom = void 0;
65589
- this.font = void 0;
65590
- this.fontFamily = void 0;
65591
- this.fontWeight = void 0;
65592
- this.fontShape = void 0;
65593
- this.sizeMultiplier = void 0;
65594
- this.maxSize = void 0;
65595
- this.minRuleThickness = void 0;
65596
- this._fontMetrics = void 0;
65597
- this.style = data.style;
65598
- this.color = data.color;
65599
- this.size = data.size || Options.BASESIZE;
65600
- this.textSize = data.textSize || this.size;
65601
- this.phantom = !!data.phantom;
65602
- this.font = data.font || "";
65603
- this.fontFamily = data.fontFamily || "";
65604
- this.fontWeight = data.fontWeight || "";
65605
- this.fontShape = data.fontShape || "";
65606
- this.sizeMultiplier = sizeMultipliers[this.size - 1];
65607
- this.maxSize = data.maxSize;
65608
- this.minRuleThickness = data.minRuleThickness;
65609
- this._fontMetrics = void 0;
65610
- }
65611
- /**
65612
- * Returns a new options object with the same properties as "this". Properties
65613
- * from "extension" will be copied to the new options object.
65614
- */
65615
- extend(extension2) {
65616
- var data = {
65617
- style: this.style,
65618
- size: this.size,
65619
- textSize: this.textSize,
65620
- color: this.color,
65621
- phantom: this.phantom,
65622
- font: this.font,
65623
- fontFamily: this.fontFamily,
65624
- fontWeight: this.fontWeight,
65625
- fontShape: this.fontShape,
65626
- maxSize: this.maxSize,
65627
- minRuleThickness: this.minRuleThickness
65628
- };
65629
- for (var key in extension2) {
65630
- if (extension2.hasOwnProperty(key)) {
65631
- data[key] = extension2[key];
65632
- }
65633
- }
65634
- return new Options(data);
65635
- }
65636
- /**
65637
- * Return an options object with the given style. If `this.style === style`,
65638
- * returns `this`.
65639
- */
65640
- havingStyle(style2) {
65641
- if (this.style === style2) {
65642
- return this;
65643
- } else {
65644
- return this.extend({
65645
- style: style2,
65646
- size: sizeAtStyle(this.textSize, style2)
65647
- });
65648
- }
65649
- }
65650
- /**
65651
- * Return an options object with a cramped version of the current style. If
65652
- * the current style is cramped, returns `this`.
65653
- */
65654
- havingCrampedStyle() {
65655
- return this.havingStyle(this.style.cramp());
65656
- }
65657
- /**
65658
- * Return an options object with the given size and in at least `\textstyle`.
65659
- * Returns `this` if appropriate.
65660
- */
65661
- havingSize(size) {
65662
- if (this.size === size && this.textSize === size) {
65663
- return this;
65664
- } else {
65665
- return this.extend({
65666
- style: this.style.text(),
65667
- size,
65668
- textSize: size,
65669
- sizeMultiplier: sizeMultipliers[size - 1]
65670
- });
65671
- }
65672
- }
65673
- /**
65674
- * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,
65675
- * changes to at least `\textstyle`.
65676
- */
65677
- havingBaseStyle(style2) {
65678
- style2 = style2 || this.style.text();
65679
- var wantSize = sizeAtStyle(Options.BASESIZE, style2);
65680
- if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style2) {
65681
- return this;
65682
- } else {
65683
- return this.extend({
65684
- style: style2,
65685
- size: wantSize
65686
- });
65687
- }
65688
- }
65689
- /**
65690
- * Remove the effect of sizing changes such as \Huge.
65691
- * Keep the effect of the current style, such as \scriptstyle.
65692
- */
65693
- havingBaseSizing() {
65694
- var size;
65695
- switch (this.style.id) {
65696
- case 4:
65697
- case 5:
65698
- size = 3;
65699
- break;
65700
- case 6:
65701
- case 7:
65702
- size = 1;
65703
- break;
65704
- default:
65705
- size = 6;
65706
- }
65707
- return this.extend({
65708
- style: this.style.text(),
65709
- size
65710
- });
65711
- }
65712
- /**
65713
- * Create a new options object with the given color.
65714
- */
65715
- withColor(color2) {
65716
- return this.extend({
65717
- color: color2
65718
- });
65719
- }
65720
- /**
65721
- * Create a new options object with "phantom" set to true.
65722
- */
65723
- withPhantom() {
65724
- return this.extend({
65725
- phantom: true
65726
- });
65727
- }
65728
- /**
65729
- * Creates a new options object with the given math font or old text font.
65730
- * @type {[type]}
65731
- */
65732
- withFont(font) {
65733
- return this.extend({
65734
- font
65735
- });
65736
- }
65737
- /**
65738
- * Create a new options objects with the given fontFamily.
65739
- */
65740
- withTextFontFamily(fontFamily) {
65741
- return this.extend({
65742
- fontFamily,
65743
- font: ""
65744
- });
65745
- }
65746
- /**
65747
- * Creates a new options object with the given font weight
65748
- */
65749
- withTextFontWeight(fontWeight) {
65750
- return this.extend({
65751
- fontWeight,
65752
- font: ""
65753
- });
65754
- }
65755
- /**
65756
- * Creates a new options object with the given font weight
65757
- */
65758
- withTextFontShape(fontShape) {
65759
- return this.extend({
65760
- fontShape,
65761
- font: ""
65762
- });
65763
- }
65764
- /**
65765
- * Return the CSS sizing classes required to switch from enclosing options
65766
- * `oldOptions` to `this`. Returns an array of classes.
65767
- */
65768
- sizingClasses(oldOptions) {
65769
- if (oldOptions.size !== this.size) {
65770
- return ["sizing", "reset-size" + oldOptions.size, "size" + this.size];
65771
- } else {
65772
- return [];
65773
- }
65774
- }
65775
- /**
65776
- * Return the CSS sizing classes required to switch to the base size. Like
65777
- * `this.havingSize(BASESIZE).sizingClasses(this)`.
65778
- */
65779
- baseSizingClasses() {
65780
- if (this.size !== Options.BASESIZE) {
65781
- return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE];
65782
- } else {
65783
- return [];
65784
- }
65785
- }
65786
- /**
65787
- * Return the font metrics for this size.
65788
- */
65789
- fontMetrics() {
65790
- if (!this._fontMetrics) {
65791
- this._fontMetrics = getGlobalMetrics(this.size);
65792
- }
65793
- return this._fontMetrics;
65794
- }
65795
- /**
65796
- * Gets the CSS color of the current options object
65797
- */
65798
- getColor() {
65799
- if (this.phantom) {
65800
- return "transparent";
65801
- } else {
65802
- return this.color;
65803
- }
65804
- }
65805
- }
65806
- Options.BASESIZE = 6;
65807
- var ptPerUnit = {
65808
- // https://en.wikibooks.org/wiki/LaTeX/Lengths and
65809
- // https://tex.stackexchange.com/a/8263
65810
- "pt": 1,
65811
- // TeX point
65812
- "mm": 7227 / 2540,
65813
- // millimeter
65814
- "cm": 7227 / 254,
65815
- // centimeter
65816
- "in": 72.27,
65817
- // inch
65818
- "bp": 803 / 800,
65819
- // big (PostScript) points
65820
- "pc": 12,
65821
- // pica
65822
- "dd": 1238 / 1157,
65823
- // didot
65824
- "cc": 14856 / 1157,
65825
- // cicero (12 didot)
65826
- "nd": 685 / 642,
65827
- // new didot
65828
- "nc": 1370 / 107,
65829
- // new cicero (12 new didot)
65830
- "sp": 1 / 65536,
65831
- // scaled point (TeX's internal smallest unit)
65832
- // https://tex.stackexchange.com/a/41371
65833
- "px": 803 / 800
65834
- // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX
65835
- };
65836
- var relativeUnit = {
65837
- "ex": true,
65838
- "em": true,
65839
- "mu": true
65840
- };
65841
- var validUnit = function validUnit2(unit) {
65842
- if (typeof unit !== "string") {
65843
- unit = unit.unit;
65844
- }
65845
- return unit in ptPerUnit || unit in relativeUnit || unit === "ex";
65846
- };
65847
- var calculateSize$1 = function calculateSize(sizeValue, options) {
65848
- var scale;
65849
- if (sizeValue.unit in ptPerUnit) {
65850
- scale = ptPerUnit[sizeValue.unit] / options.fontMetrics().ptPerEm / options.sizeMultiplier;
65851
- } else if (sizeValue.unit === "mu") {
65852
- scale = options.fontMetrics().cssEmPerMu;
65853
- } else {
65854
- var unitOptions;
65855
- if (options.style.isTight()) {
65856
- unitOptions = options.havingStyle(options.style.text());
65857
- } else {
65858
- unitOptions = options;
65859
- }
65860
- if (sizeValue.unit === "ex") {
65861
- scale = unitOptions.fontMetrics().xHeight;
65862
- } else if (sizeValue.unit === "em") {
65863
- scale = unitOptions.fontMetrics().quad;
65864
- } else {
65865
- throw new ParseError("Invalid unit: '" + sizeValue.unit + "'");
65866
- }
65867
- if (unitOptions !== options) {
65868
- scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;
65869
- }
65870
- }
65871
- return Math.min(sizeValue.number * scale, options.maxSize);
65872
- };
65873
- var makeEm = function makeEm2(n2) {
65874
- return +n2.toFixed(4) + "em";
65875
- };
65876
- var createClass = function createClass2(classes) {
65877
- return classes.filter((cls) => cls).join(" ");
65878
- };
65879
- var initNode = function initNode2(classes, options, style2) {
65880
- this.classes = classes || [];
65881
- this.attributes = {};
65882
- this.height = 0;
65883
- this.depth = 0;
65884
- this.maxFontSize = 0;
65885
- this.style = style2 || {};
65886
- if (options) {
65887
- if (options.style.isTight()) {
65888
- this.classes.push("mtight");
65889
- }
65890
- var color2 = options.getColor();
65891
- if (color2) {
65892
- this.style.color = color2;
65893
- }
65894
- }
65895
- };
65896
- var toNode = function toNode2(tagName) {
65897
- var node2 = document.createElement(tagName);
65898
- node2.className = createClass(this.classes);
65899
- for (var style2 in this.style) {
65900
- if (this.style.hasOwnProperty(style2)) {
65901
- node2.style[style2] = this.style[style2];
65902
- }
65903
- }
65904
- for (var attr in this.attributes) {
65905
- if (this.attributes.hasOwnProperty(attr)) {
65906
- node2.setAttribute(attr, this.attributes[attr]);
65907
- }
65908
- }
65909
- for (var i2 = 0; i2 < this.children.length; i2++) {
65910
- node2.appendChild(this.children[i2].toNode());
65911
- }
65912
- return node2;
65913
- };
65914
- var invalidAttributeNameRegex = /[\s"'>/=\x00-\x1f]/;
65915
- var toMarkup = function toMarkup2(tagName) {
65916
- var markup = "<" + tagName;
65917
- if (this.classes.length) {
65918
- markup += ' class="' + escape$1(createClass(this.classes)) + '"';
65919
- }
65920
- var styles2 = "";
65921
- for (var style2 in this.style) {
65922
- if (this.style.hasOwnProperty(style2)) {
65923
- styles2 += hyphenate(style2) + ":" + this.style[style2] + ";";
65924
- }
65925
- }
65926
- if (styles2) {
65927
- markup += ' style="' + escape$1(styles2) + '"';
65928
- }
65929
- for (var attr in this.attributes) {
65930
- if (this.attributes.hasOwnProperty(attr)) {
65931
- if (invalidAttributeNameRegex.test(attr)) {
65932
- throw new ParseError("Invalid attribute name '" + attr + "'");
65933
- }
65934
- markup += " " + attr + '="' + escape$1(this.attributes[attr]) + '"';
65935
- }
65936
- }
65937
- markup += ">";
65938
- for (var i2 = 0; i2 < this.children.length; i2++) {
65939
- markup += this.children[i2].toMarkup();
65940
- }
65941
- markup += "</" + tagName + ">";
65942
- return markup;
65943
- };
65944
- class Span {
65945
- constructor(classes, children2, options, style2) {
65946
- this.children = void 0;
65947
- this.attributes = void 0;
65948
- this.classes = void 0;
65949
- this.height = void 0;
65950
- this.depth = void 0;
65951
- this.width = void 0;
65952
- this.maxFontSize = void 0;
65953
- this.style = void 0;
65954
- initNode.call(this, classes, options, style2);
65955
- this.children = children2 || [];
65956
- }
65957
- /**
65958
- * Sets an arbitrary attribute on the span. Warning: use this wisely. Not
65959
- * all browsers support attributes the same, and having too many custom
65960
- * attributes is probably bad.
65961
- */
65962
- setAttribute(attribute2, value) {
65963
- this.attributes[attribute2] = value;
65964
- }
65965
- hasClass(className) {
65966
- return this.classes.includes(className);
65967
- }
65968
- toNode() {
65969
- return toNode.call(this, "span");
65970
- }
65971
- toMarkup() {
65972
- return toMarkup.call(this, "span");
65973
- }
65974
- }
65975
- class Anchor {
65976
- constructor(href, classes, children2, options) {
65977
- this.children = void 0;
65978
- this.attributes = void 0;
65979
- this.classes = void 0;
65980
- this.height = void 0;
65981
- this.depth = void 0;
65982
- this.maxFontSize = void 0;
65983
- this.style = void 0;
65984
- initNode.call(this, classes, options);
65985
- this.children = children2 || [];
65986
- this.setAttribute("href", href);
65987
- }
65988
- setAttribute(attribute2, value) {
65989
- this.attributes[attribute2] = value;
65990
- }
65991
- hasClass(className) {
65992
- return this.classes.includes(className);
65993
- }
65994
- toNode() {
65995
- return toNode.call(this, "a");
65996
- }
65997
- toMarkup() {
65998
- return toMarkup.call(this, "a");
65999
- }
66000
- }
66001
- class Img {
66002
- constructor(src, alt, style2) {
66003
- this.src = void 0;
66004
- this.alt = void 0;
66005
- this.classes = void 0;
66006
- this.height = void 0;
66007
- this.depth = void 0;
66008
- this.maxFontSize = void 0;
66009
- this.style = void 0;
66010
- this.alt = alt;
66011
- this.src = src;
66012
- this.classes = ["mord"];
66013
- this.style = style2;
66014
- }
66015
- hasClass(className) {
66016
- return this.classes.includes(className);
66017
- }
66018
- toNode() {
66019
- var node2 = document.createElement("img");
66020
- node2.src = this.src;
66021
- node2.alt = this.alt;
66022
- node2.className = "mord";
66023
- for (var style2 in this.style) {
66024
- if (this.style.hasOwnProperty(style2)) {
66025
- node2.style[style2] = this.style[style2];
66026
- }
66027
- }
66028
- return node2;
66029
- }
66030
- toMarkup() {
66031
- var markup = '<img src="' + escape$1(this.src) + '"' + (' alt="' + escape$1(this.alt) + '"');
66032
- var styles2 = "";
66033
- for (var style2 in this.style) {
66034
- if (this.style.hasOwnProperty(style2)) {
66035
- styles2 += hyphenate(style2) + ":" + this.style[style2] + ";";
66036
- }
66037
- }
66038
- if (styles2) {
66039
- markup += ' style="' + escape$1(styles2) + '"';
66040
- }
66041
- markup += "'/>";
66042
- return markup;
66043
- }
66044
- }
66045
- var iCombinations = {
66046
- "î": "ı̂",
66047
- "ï": "ı̈",
66048
- "í": "ı́",
66049
- // 'ī': '\u0131\u0304', // enable when we add Extended Latin
66050
- "ì": "ı̀"
66051
- };
66052
- class SymbolNode {
66053
- constructor(text2, height, depth, italic, skew2, width, classes, style2) {
66054
- this.text = void 0;
66055
- this.height = void 0;
66056
- this.depth = void 0;
66057
- this.italic = void 0;
66058
- this.skew = void 0;
66059
- this.width = void 0;
66060
- this.maxFontSize = void 0;
66061
- this.classes = void 0;
66062
- this.style = void 0;
66063
- this.text = text2;
66064
- this.height = height || 0;
66065
- this.depth = depth || 0;
66066
- this.italic = italic || 0;
66067
- this.skew = skew2 || 0;
66068
- this.width = width || 0;
66069
- this.classes = classes || [];
66070
- this.style = style2 || {};
66071
- this.maxFontSize = 0;
66072
- var script = scriptFromCodepoint(this.text.charCodeAt(0));
66073
- if (script) {
66074
- this.classes.push(script + "_fallback");
66075
- }
66076
- if (/[îïíì]/.test(this.text)) {
66077
- this.text = iCombinations[this.text];
66078
- }
66079
- }
66080
- hasClass(className) {
66081
- return this.classes.includes(className);
66082
- }
66083
- /**
66084
- * Creates a text node or span from a symbol node. Note that a span is only
66085
- * created if it is needed.
66086
- */
66087
- toNode() {
66088
- var node2 = document.createTextNode(this.text);
66089
- var span = null;
66090
- if (this.italic > 0) {
66091
- span = document.createElement("span");
66092
- span.style.marginRight = makeEm(this.italic);
66093
- }
66094
- if (this.classes.length > 0) {
66095
- span = span || document.createElement("span");
66096
- span.className = createClass(this.classes);
66097
- }
66098
- for (var style2 in this.style) {
66099
- if (this.style.hasOwnProperty(style2)) {
66100
- span = span || document.createElement("span");
66101
- span.style[style2] = this.style[style2];
66102
- }
66103
- }
66104
- if (span) {
66105
- span.appendChild(node2);
66106
- return span;
66107
- } else {
66108
- return node2;
66109
- }
66110
- }
66111
- /**
66112
- * Creates markup for a symbol node.
66113
- */
66114
- toMarkup() {
66115
- var needsSpan = false;
66116
- var markup = "<span";
66117
- if (this.classes.length) {
66118
- needsSpan = true;
66119
- markup += ' class="';
66120
- markup += escape$1(createClass(this.classes));
66121
- markup += '"';
66122
- }
66123
- var styles2 = "";
66124
- if (this.italic > 0) {
66125
- styles2 += "margin-right:" + this.italic + "em;";
66126
- }
66127
- for (var style2 in this.style) {
66128
- if (this.style.hasOwnProperty(style2)) {
66129
- styles2 += hyphenate(style2) + ":" + this.style[style2] + ";";
66130
- }
66131
- }
66132
- if (styles2) {
66133
- needsSpan = true;
66134
- markup += ' style="' + escape$1(styles2) + '"';
66135
- }
66136
- var escaped = escape$1(this.text);
66137
- if (needsSpan) {
66138
- markup += ">";
66139
- markup += escaped;
66140
- markup += "</span>";
66141
- return markup;
66142
- } else {
66143
- return escaped;
66144
- }
66145
- }
66146
- }
66147
- class SvgNode {
66148
- constructor(children2, attributes) {
66149
- this.children = void 0;
66150
- this.attributes = void 0;
66151
- this.children = children2 || [];
66152
- this.attributes = attributes || {};
66153
- }
66154
- toNode() {
66155
- var svgNS = "http://www.w3.org/2000/svg";
66156
- var node2 = document.createElementNS(svgNS, "svg");
66157
- for (var attr in this.attributes) {
66158
- if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
66159
- node2.setAttribute(attr, this.attributes[attr]);
66160
- }
66161
- }
66162
- for (var i2 = 0; i2 < this.children.length; i2++) {
66163
- node2.appendChild(this.children[i2].toNode());
66164
- }
66165
- return node2;
66166
- }
66167
- toMarkup() {
66168
- var markup = '<svg xmlns="http://www.w3.org/2000/svg"';
66169
- for (var attr in this.attributes) {
66170
- if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
66171
- markup += " " + attr + '="' + escape$1(this.attributes[attr]) + '"';
66172
- }
66173
- }
66174
- markup += ">";
66175
- for (var i2 = 0; i2 < this.children.length; i2++) {
66176
- markup += this.children[i2].toMarkup();
66177
- }
66178
- markup += "</svg>";
66179
- return markup;
66180
- }
66181
- }
66182
- class PathNode {
66183
- constructor(pathName, alternate) {
66184
- this.pathName = void 0;
66185
- this.alternate = void 0;
66186
- this.pathName = pathName;
66187
- this.alternate = alternate;
66188
- }
66189
- toNode() {
66190
- var svgNS = "http://www.w3.org/2000/svg";
66191
- var node2 = document.createElementNS(svgNS, "path");
66192
- if (this.alternate) {
66193
- node2.setAttribute("d", this.alternate);
66194
- } else {
66195
- node2.setAttribute("d", path[this.pathName]);
66196
- }
66197
- return node2;
66198
- }
66199
- toMarkup() {
66200
- if (this.alternate) {
66201
- return '<path d="' + escape$1(this.alternate) + '"/>';
66202
- } else {
66203
- return '<path d="' + escape$1(path[this.pathName]) + '"/>';
66204
- }
66205
- }
66206
- }
66207
- class LineNode {
66208
- constructor(attributes) {
66209
- this.attributes = void 0;
66210
- this.attributes = attributes || {};
66211
- }
66212
- toNode() {
66213
- var svgNS = "http://www.w3.org/2000/svg";
66214
- var node2 = document.createElementNS(svgNS, "line");
66215
- for (var attr in this.attributes) {
66216
- if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
66217
- node2.setAttribute(attr, this.attributes[attr]);
66218
- }
66219
- }
66220
- return node2;
66221
- }
66222
- toMarkup() {
66223
- var markup = "<line";
66224
- for (var attr in this.attributes) {
66225
- if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
66226
- markup += " " + attr + '="' + escape$1(this.attributes[attr]) + '"';
66227
- }
66228
- }
66229
- markup += "/>";
66230
- return markup;
66231
- }
66232
- }
66233
- function assertSymbolDomNode(group) {
66234
- if (group instanceof SymbolNode) {
66235
- return group;
66236
- } else {
66237
- throw new Error("Expected symbolNode but got " + String(group) + ".");
66238
- }
66239
- }
66240
- function assertSpan(group) {
66241
- if (group instanceof Span) {
66242
- return group;
66243
- } else {
66244
- throw new Error("Expected span<HtmlDomNode> but got " + String(group) + ".");
66245
- }
66246
- }
66247
65809
  var ATOMS = {
66248
65810
  "bin": 1,
66249
65811
  "close": 1,
@@ -67050,7 +66612,7 @@ var wideNumeralData = [
67050
66612
  ["mathtt", "texttt", "Typewriter-Regular"]
67051
66613
  // 0-9 monospace
67052
66614
  ];
67053
- var wideCharacterFont = function wideCharacterFont2(wideChar2, mode) {
66615
+ var wideCharacterFont = (wideChar2, mode) => {
67054
66616
  var H2 = wideChar2.charCodeAt(0);
67055
66617
  var L2 = wideChar2.charCodeAt(1);
67056
66618
  var codePoint = (H2 - 55296) * 1024 + (L2 - 56320) + 65536;
@@ -67069,9 +66631,50 @@ var wideCharacterFont = function wideCharacterFont2(wideChar2, mode) {
67069
66631
  throw new ParseError("Unsupported character: " + wideChar2);
67070
66632
  }
67071
66633
  };
66634
+ class DocumentFragment {
66635
+ // Never used; needed for satisfying interface.
66636
+ constructor(children2) {
66637
+ this.children = children2;
66638
+ this.classes = [];
66639
+ this.height = 0;
66640
+ this.depth = 0;
66641
+ this.maxFontSize = 0;
66642
+ this.style = {};
66643
+ }
66644
+ hasClass(className) {
66645
+ return this.classes.includes(className);
66646
+ }
66647
+ /** Convert the fragment into a node. */
66648
+ toNode() {
66649
+ var frag = document.createDocumentFragment();
66650
+ for (var i2 = 0; i2 < this.children.length; i2++) {
66651
+ frag.appendChild(this.children[i2].toNode());
66652
+ }
66653
+ return frag;
66654
+ }
66655
+ /** Convert the fragment into HTML markup. */
66656
+ toMarkup() {
66657
+ var markup = "";
66658
+ for (var i2 = 0; i2 < this.children.length; i2++) {
66659
+ markup += this.children[i2].toMarkup();
66660
+ }
66661
+ return markup;
66662
+ }
66663
+ /**
66664
+ * Converts the math node into a string, similar to innerText. Applies to
66665
+ * MathDomNode's only.
66666
+ */
66667
+ toText() {
66668
+ var toText = (child) => child.toText();
66669
+ return this.children.map(toText).join("");
66670
+ }
66671
+ }
67072
66672
  var lookupSymbol = function lookupSymbol2(value, fontName, mode) {
67073
- if (symbols[mode][value] && symbols[mode][value].replace) {
67074
- value = symbols[mode][value].replace;
66673
+ if (symbols[mode][value]) {
66674
+ var replacement = symbols[mode][value].replace;
66675
+ if (replacement) {
66676
+ value = replacement;
66677
+ }
67075
66678
  }
67076
66679
  return {
67077
66680
  value,
@@ -67195,13 +66798,13 @@ var canCombine = (prev2, next2) => {
67195
66798
  return false;
67196
66799
  }
67197
66800
  }
67198
- for (var style2 in prev2.style) {
67199
- if (prev2.style.hasOwnProperty(style2) && prev2.style[style2] !== next2.style[style2]) {
66801
+ for (var key of Object.keys(prev2.style)) {
66802
+ if (prev2.style[key] !== next2.style[key]) {
67200
66803
  return false;
67201
66804
  }
67202
66805
  }
67203
- for (var _style in next2.style) {
67204
- if (next2.style.hasOwnProperty(_style) && prev2.style[_style] !== next2.style[_style]) {
66806
+ for (var _key of Object.keys(next2.style)) {
66807
+ if (prev2.style[_key] !== next2.style[_key]) {
67205
66808
  return false;
67206
66809
  }
67207
66810
  }
@@ -67691,7 +67294,7 @@ var buildExpression$1 = function buildExpression(expression, options, isRealGrou
67691
67294
  var dummyPrev = makeSpan([surrounding[0] || "leftmost"], [], options);
67692
67295
  var dummyNext = makeSpan([surrounding[1] || "rightmost"], [], options);
67693
67296
  var isRoot = isRealGroup === "root";
67694
- traverseNonSpaceNodes(groups, (node3, prev2) => {
67297
+ _traverseNonSpaceNodes(groups, (node3, prev2) => {
67695
67298
  var prevType = prev2.classes[0];
67696
67299
  var type2 = node3.classes[0];
67697
67300
  if (prevType === "mbin" && binRightCanceller.has(type2)) {
@@ -67702,10 +67305,11 @@ var buildExpression$1 = function buildExpression(expression, options, isRealGrou
67702
67305
  }, {
67703
67306
  node: dummyPrev
67704
67307
  }, dummyNext, isRoot);
67705
- traverseNonSpaceNodes(groups, (node3, prev2) => {
67308
+ _traverseNonSpaceNodes(groups, (node3, prev2) => {
67309
+ var _tightSpacings$prevTy, _spacings$prevType;
67706
67310
  var prevType = getTypeOfDomTree(prev2);
67707
67311
  var type2 = getTypeOfDomTree(node3);
67708
- var space = prevType && type2 ? node3.hasClass("mtight") ? tightSpacings[prevType][type2] : spacings[prevType][type2] : null;
67312
+ var space = prevType && type2 ? node3.hasClass("mtight") ? (_tightSpacings$prevTy = tightSpacings[prevType]) == null ? void 0 : _tightSpacings$prevTy[type2] : (_spacings$prevType = spacings[prevType]) == null ? void 0 : _spacings$prevType[type2] : null;
67709
67313
  if (space) {
67710
67314
  return makeGlue(space, glueOptions);
67711
67315
  }
@@ -67714,7 +67318,7 @@ var buildExpression$1 = function buildExpression(expression, options, isRealGrou
67714
67318
  }, dummyNext, isRoot);
67715
67319
  return groups;
67716
67320
  };
67717
- var traverseNonSpaceNodes = function traverseNonSpaceNodes2(nodes, callback, prev2, next2, isRoot) {
67321
+ var _traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev2, next2, isRoot) {
67718
67322
  if (next2) {
67719
67323
  nodes.push(next2);
67720
67324
  }
@@ -67723,7 +67327,7 @@ var traverseNonSpaceNodes = function traverseNonSpaceNodes2(nodes, callback, pre
67723
67327
  var node2 = nodes[i2];
67724
67328
  var partialGroup = checkPartialGroup(node2);
67725
67329
  if (partialGroup) {
67726
- traverseNonSpaceNodes2(partialGroup.children, callback, prev2, null, isRoot);
67330
+ _traverseNonSpaceNodes(partialGroup.children, callback, prev2, null, isRoot);
67727
67331
  continue;
67728
67332
  }
67729
67333
  var nonspace = !node2.hasClass("mspace");
@@ -67758,15 +67362,15 @@ var checkPartialGroup = function checkPartialGroup2(node2) {
67758
67362
  }
67759
67363
  return null;
67760
67364
  };
67761
- var getOutermostNode = function getOutermostNode2(node2, side) {
67365
+ var _getOutermostNode = function getOutermostNode(node2, side) {
67762
67366
  var partialGroup = checkPartialGroup(node2);
67763
67367
  if (partialGroup) {
67764
67368
  var children2 = partialGroup.children;
67765
67369
  if (children2.length) {
67766
67370
  if (side === "right") {
67767
- return getOutermostNode2(children2[children2.length - 1], "right");
67371
+ return _getOutermostNode(children2[children2.length - 1], "right");
67768
67372
  } else if (side === "left") {
67769
- return getOutermostNode2(children2[0], "left");
67373
+ return _getOutermostNode(children2[0], "left");
67770
67374
  }
67771
67375
  }
67772
67376
  }
@@ -67777,9 +67381,10 @@ var getTypeOfDomTree = function getTypeOfDomTree2(node2, side) {
67777
67381
  return null;
67778
67382
  }
67779
67383
  if (side) {
67780
- node2 = getOutermostNode(node2, side);
67384
+ node2 = _getOutermostNode(node2, side);
67781
67385
  }
67782
- return DomEnum[node2.classes[0]] || null;
67386
+ var className = node2.classes[0];
67387
+ return DomEnum[className] || null;
67783
67388
  };
67784
67389
  var makeNullDelimiter = function makeNullDelimiter2(options, classes) {
67785
67390
  var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses());
@@ -67854,7 +67459,7 @@ function buildHTML(tree, options) {
67854
67459
  }
67855
67460
  var tagChild;
67856
67461
  if (tag) {
67857
- tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options, true));
67462
+ tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options, true), options);
67858
67463
  tagChild.classes = ["tag"];
67859
67464
  children2.push(tagChild);
67860
67465
  } else if (eqnNum) {
@@ -67876,10 +67481,6 @@ function newDocumentFragment(children2) {
67876
67481
  }
67877
67482
  class MathNode {
67878
67483
  constructor(type2, children2, classes) {
67879
- this.type = void 0;
67880
- this.attributes = void 0;
67881
- this.children = void 0;
67882
- this.classes = void 0;
67883
67484
  this.type = type2;
67884
67485
  this.attributes = {};
67885
67486
  this.children = children2 || [];
@@ -67955,7 +67556,6 @@ class MathNode {
67955
67556
  }
67956
67557
  class TextNode {
67957
67558
  constructor(text2) {
67958
- this.text = void 0;
67959
67559
  this.text = text2;
67960
67560
  }
67961
67561
  /**
@@ -67984,8 +67584,6 @@ class SpaceNode {
67984
67584
  * Create a Space node with width given in CSS ems.
67985
67585
  */
67986
67586
  constructor(width) {
67987
- this.width = void 0;
67988
- this.character = void 0;
67989
67587
  this.width = width;
67990
67588
  if (width >= 0.05555 && width <= 0.05556) {
67991
67589
  this.character = " ";
@@ -68103,8 +67701,11 @@ var getVariant = function getVariant2(group, options) {
68103
67701
  if (noVariantSymbols.has(text2)) {
68104
67702
  return null;
68105
67703
  }
68106
- if (symbols[mode][text2] && symbols[mode][text2].replace) {
68107
- text2 = symbols[mode][text2].replace;
67704
+ if (symbols[mode][text2]) {
67705
+ var replacement = symbols[mode][text2].replace;
67706
+ if (replacement) {
67707
+ text2 = replacement;
67708
+ }
68108
67709
  }
68109
67710
  var fontName = fontMap[font].fontName;
68110
67711
  if (getCharacterMetrics(text2, fontName, mode)) {
@@ -68207,6 +67808,258 @@ function buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly)
68207
67808
  var wrapperClass = forMathmlOnly ? "katex" : "katex-mathml";
68208
67809
  return makeSpan([wrapperClass], [math2]);
68209
67810
  }
67811
+ var sizeStyleMap = [
67812
+ // Each element contains [textsize, scriptsize, scriptscriptsize].
67813
+ // The size mappings are taken from TeX with \normalsize=10pt.
67814
+ [1, 1, 1],
67815
+ // size1: [5, 5, 5] \tiny
67816
+ [2, 1, 1],
67817
+ // size2: [6, 5, 5]
67818
+ [3, 1, 1],
67819
+ // size3: [7, 5, 5] \scriptsize
67820
+ [4, 2, 1],
67821
+ // size4: [8, 6, 5] \footnotesize
67822
+ [5, 2, 1],
67823
+ // size5: [9, 6, 5] \small
67824
+ [6, 3, 1],
67825
+ // size6: [10, 7, 5] \normalsize
67826
+ [7, 4, 2],
67827
+ // size7: [12, 8, 6] \large
67828
+ [8, 6, 3],
67829
+ // size8: [14.4, 10, 7] \Large
67830
+ [9, 7, 6],
67831
+ // size9: [17.28, 12, 10] \LARGE
67832
+ [10, 8, 7],
67833
+ // size10: [20.74, 14.4, 12] \huge
67834
+ [11, 10, 9]
67835
+ // size11: [24.88, 20.74, 17.28] \HUGE
67836
+ ];
67837
+ var sizeMultipliers = [
67838
+ // fontMetrics.js:getGlobalMetrics also uses size indexes, so if
67839
+ // you change size indexes, change that function.
67840
+ 0.5,
67841
+ 0.6,
67842
+ 0.7,
67843
+ 0.8,
67844
+ 0.9,
67845
+ 1,
67846
+ 1.2,
67847
+ 1.44,
67848
+ 1.728,
67849
+ 2.074,
67850
+ 2.488
67851
+ ];
67852
+ var sizeAtStyle = function sizeAtStyle2(size, style2) {
67853
+ return style2.size < 2 ? size : sizeStyleMap[size - 1][style2.size - 1];
67854
+ };
67855
+ class Options {
67856
+ constructor(data) {
67857
+ this.style = data.style;
67858
+ this.color = data.color;
67859
+ this.size = data.size || Options.BASESIZE;
67860
+ this.textSize = data.textSize || this.size;
67861
+ this.phantom = !!data.phantom;
67862
+ this.font = data.font || "";
67863
+ this.fontFamily = data.fontFamily || "";
67864
+ this.fontWeight = data.fontWeight || "";
67865
+ this.fontShape = data.fontShape || "";
67866
+ this.sizeMultiplier = sizeMultipliers[this.size - 1];
67867
+ this.maxSize = data.maxSize;
67868
+ this.minRuleThickness = data.minRuleThickness;
67869
+ this._fontMetrics = void 0;
67870
+ }
67871
+ /**
67872
+ * Returns a new options object with the same properties as "this". Properties
67873
+ * from "extension" will be copied to the new options object.
67874
+ */
67875
+ extend(extension2) {
67876
+ var data = {
67877
+ style: this.style,
67878
+ size: this.size,
67879
+ textSize: this.textSize,
67880
+ color: this.color,
67881
+ phantom: this.phantom,
67882
+ font: this.font,
67883
+ fontFamily: this.fontFamily,
67884
+ fontWeight: this.fontWeight,
67885
+ fontShape: this.fontShape,
67886
+ maxSize: this.maxSize,
67887
+ minRuleThickness: this.minRuleThickness
67888
+ };
67889
+ Object.assign(data, extension2);
67890
+ return new Options(data);
67891
+ }
67892
+ /**
67893
+ * Return an options object with the given style. If `this.style === style`,
67894
+ * returns `this`.
67895
+ */
67896
+ havingStyle(style2) {
67897
+ if (this.style === style2) {
67898
+ return this;
67899
+ } else {
67900
+ return this.extend({
67901
+ style: style2,
67902
+ size: sizeAtStyle(this.textSize, style2)
67903
+ });
67904
+ }
67905
+ }
67906
+ /**
67907
+ * Return an options object with a cramped version of the current style. If
67908
+ * the current style is cramped, returns `this`.
67909
+ */
67910
+ havingCrampedStyle() {
67911
+ return this.havingStyle(this.style.cramp());
67912
+ }
67913
+ /**
67914
+ * Return an options object with the given size and in at least `\textstyle`.
67915
+ * Returns `this` if appropriate.
67916
+ */
67917
+ havingSize(size) {
67918
+ if (this.size === size && this.textSize === size) {
67919
+ return this;
67920
+ } else {
67921
+ return this.extend({
67922
+ style: this.style.text(),
67923
+ size,
67924
+ textSize: size,
67925
+ sizeMultiplier: sizeMultipliers[size - 1]
67926
+ });
67927
+ }
67928
+ }
67929
+ /**
67930
+ * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,
67931
+ * changes to at least `\textstyle`.
67932
+ */
67933
+ havingBaseStyle(style2) {
67934
+ style2 = style2 || this.style.text();
67935
+ var wantSize = sizeAtStyle(Options.BASESIZE, style2);
67936
+ if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style2) {
67937
+ return this;
67938
+ } else {
67939
+ return this.extend({
67940
+ style: style2,
67941
+ size: wantSize
67942
+ });
67943
+ }
67944
+ }
67945
+ /**
67946
+ * Remove the effect of sizing changes such as \Huge.
67947
+ * Keep the effect of the current style, such as \scriptstyle.
67948
+ */
67949
+ havingBaseSizing() {
67950
+ var size;
67951
+ switch (this.style.id) {
67952
+ case 4:
67953
+ case 5:
67954
+ size = 3;
67955
+ break;
67956
+ case 6:
67957
+ case 7:
67958
+ size = 1;
67959
+ break;
67960
+ default:
67961
+ size = 6;
67962
+ }
67963
+ return this.extend({
67964
+ style: this.style.text(),
67965
+ size
67966
+ });
67967
+ }
67968
+ /**
67969
+ * Create a new options object with the given color.
67970
+ */
67971
+ withColor(color2) {
67972
+ return this.extend({
67973
+ color: color2
67974
+ });
67975
+ }
67976
+ /**
67977
+ * Create a new options object with "phantom" set to true.
67978
+ */
67979
+ withPhantom() {
67980
+ return this.extend({
67981
+ phantom: true
67982
+ });
67983
+ }
67984
+ /**
67985
+ * Creates a new options object with the given math font or old text font.
67986
+ * @type {[type]}
67987
+ */
67988
+ withFont(font) {
67989
+ return this.extend({
67990
+ font
67991
+ });
67992
+ }
67993
+ /**
67994
+ * Create a new options objects with the given fontFamily.
67995
+ */
67996
+ withTextFontFamily(fontFamily) {
67997
+ return this.extend({
67998
+ fontFamily,
67999
+ font: ""
68000
+ });
68001
+ }
68002
+ /**
68003
+ * Creates a new options object with the given font weight
68004
+ */
68005
+ withTextFontWeight(fontWeight) {
68006
+ return this.extend({
68007
+ fontWeight,
68008
+ font: ""
68009
+ });
68010
+ }
68011
+ /**
68012
+ * Creates a new options object with the given font weight
68013
+ */
68014
+ withTextFontShape(fontShape) {
68015
+ return this.extend({
68016
+ fontShape,
68017
+ font: ""
68018
+ });
68019
+ }
68020
+ /**
68021
+ * Return the CSS sizing classes required to switch from enclosing options
68022
+ * `oldOptions` to `this`. Returns an array of classes.
68023
+ */
68024
+ sizingClasses(oldOptions) {
68025
+ if (oldOptions.size !== this.size) {
68026
+ return ["sizing", "reset-size" + oldOptions.size, "size" + this.size];
68027
+ } else {
68028
+ return [];
68029
+ }
68030
+ }
68031
+ /**
68032
+ * Return the CSS sizing classes required to switch to the base size. Like
68033
+ * `this.havingSize(BASESIZE).sizingClasses(this)`.
68034
+ */
68035
+ baseSizingClasses() {
68036
+ if (this.size !== Options.BASESIZE) {
68037
+ return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE];
68038
+ } else {
68039
+ return [];
68040
+ }
68041
+ }
68042
+ /**
68043
+ * Return the font metrics for this size.
68044
+ */
68045
+ fontMetrics() {
68046
+ if (!this._fontMetrics) {
68047
+ this._fontMetrics = getGlobalMetrics(this.size);
68048
+ }
68049
+ return this._fontMetrics;
68050
+ }
68051
+ /**
68052
+ * Gets the CSS color of the current options object
68053
+ */
68054
+ getColor() {
68055
+ if (this.phantom) {
68056
+ return "transparent";
68057
+ } else {
68058
+ return this.color;
68059
+ }
68060
+ }
68061
+ }
68062
+ Options.BASESIZE = 6;
68210
68063
  var optionsFromSettings = function optionsFromSettings2(settings) {
68211
68064
  return new Options({
68212
68065
  style: settings.displayMode ? Style$1.DISPLAY : Style$1.TEXT,
@@ -68774,8 +68627,6 @@ defineFunction({
68774
68627
  below: optArgs[0]
68775
68628
  };
68776
68629
  },
68777
- // Flow is unable to correctly infer the type of `group`, even though it's
68778
- // unambiguously determined from the passed-in `type` above.
68779
68630
  htmlBuilder(group, options) {
68780
68631
  var style2 = options.style;
68781
68632
  var newOptions = options.havingStyle(style2.sup());
@@ -70008,23 +69859,25 @@ var delimTypeToFont = function delimTypeToFont2(type2) {
70008
69859
  } else if (type2.type === "stack") {
70009
69860
  return "Size4-Regular";
70010
69861
  } else {
70011
- throw new Error("Add support for delim type '" + type2.type + "' here.");
69862
+ var delimKind = type2.type;
69863
+ throw new Error("Add support for delim type '" + delimKind + "' here.");
70012
69864
  }
70013
69865
  };
70014
69866
  var traverseSequence = function traverseSequence2(delim, height, sequence, options) {
70015
69867
  var start2 = Math.min(2, 3 - options.style.size);
70016
69868
  for (var i2 = start2; i2 < sequence.length; i2++) {
70017
- if (sequence[i2].type === "stack") {
69869
+ var delimType = sequence[i2];
69870
+ if (delimType.type === "stack") {
70018
69871
  break;
70019
69872
  }
70020
- var metrics = getMetrics(delim, delimTypeToFont(sequence[i2]), "math");
69873
+ var metrics = getMetrics(delim, delimTypeToFont(delimType), "math");
70021
69874
  var heightDepth = metrics.height + metrics.depth;
70022
- if (sequence[i2].type === "small") {
70023
- var newOptions = options.havingBaseStyle(sequence[i2].style);
69875
+ if (delimType.type === "small") {
69876
+ var newOptions = options.havingBaseStyle(delimType.style);
70024
69877
  heightDepth *= newOptions.sizeMultiplier;
70025
69878
  }
70026
69879
  if (heightDepth > height) {
70027
- return sequence[i2];
69880
+ return delimType;
70028
69881
  }
70029
69882
  }
70030
69883
  return sequence[sequence.length - 1];
@@ -70395,7 +70248,6 @@ var htmlBuilder$7 = (group, options) => {
70395
70248
  options.fontMetrics().fboxrule,
70396
70249
  // default
70397
70250
  options.minRuleThickness
70398
- // User override.
70399
70251
  );
70400
70252
  topPad = options.fontMetrics().fboxsep + (label === "colorbox" ? 0 : ruleThickness);
70401
70253
  bottomPad = topPad;
@@ -70505,7 +70357,6 @@ var mathmlBuilder$6 = (group, options) => {
70505
70357
  options.fontMetrics().fboxrule,
70506
70358
  // default
70507
70359
  options.minRuleThickness
70508
- // user override
70509
70360
  );
70510
70361
  node2.setAttribute("style", "border: " + thk + "em solid " + String(group.borderColor));
70511
70362
  }
@@ -70666,6 +70517,49 @@ var _macros = {};
70666
70517
  function defineMacro(name, body) {
70667
70518
  _macros[name] = body;
70668
70519
  }
70520
+ class SourceLocation {
70521
+ // The + prefix indicates that these fields aren't writeable
70522
+ // Lexer holding the input string.
70523
+ // Start offset, zero-based inclusive.
70524
+ // End offset, zero-based exclusive.
70525
+ constructor(lexer, start2, end) {
70526
+ this.lexer = lexer;
70527
+ this.start = start2;
70528
+ this.end = end;
70529
+ }
70530
+ /**
70531
+ * Merges two `SourceLocation`s from location providers, given they are
70532
+ * provided in order of appearance.
70533
+ * - Returns the first one's location if only the first is provided.
70534
+ * - Returns a merged range of the first and the last if both are provided
70535
+ * and their lexers match.
70536
+ * - Otherwise, returns null.
70537
+ */
70538
+ static range(first, second) {
70539
+ if (!second) {
70540
+ return first && first.loc;
70541
+ } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) {
70542
+ return null;
70543
+ } else {
70544
+ return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end);
70545
+ }
70546
+ }
70547
+ }
70548
+ class Token {
70549
+ // don't expand the token
70550
+ // used in \noexpand
70551
+ constructor(text2, loc) {
70552
+ this.text = text2;
70553
+ this.loc = loc;
70554
+ }
70555
+ /**
70556
+ * Given a pair of tokens (this and endToken), compute a `Token` encompassing
70557
+ * the whole input range enclosed by these two.
70558
+ */
70559
+ range(endToken, text2) {
70560
+ return new Token(text2, SourceLocation.range(this, endToken));
70561
+ }
70562
+ }
70669
70563
  function getHLines(parser) {
70670
70564
  var hlineInfo = [];
70671
70565
  parser.consumeSpaces();
@@ -70747,13 +70641,13 @@ function parseArray(parser, _ref, style2) {
70747
70641
  beginRow();
70748
70642
  hLinesBeforeRow.push(getHLines(parser));
70749
70643
  while (true) {
70750
- var cell = parser.parseExpression(false, singleRow ? "\\end" : "\\\\");
70644
+ var cellBody = parser.parseExpression(false, singleRow ? "\\end" : "\\\\");
70751
70645
  parser.gullet.endGroup();
70752
70646
  parser.gullet.beginGroup();
70753
- cell = {
70647
+ var cell = {
70754
70648
  type: "ordgroup",
70755
70649
  mode: parser.mode,
70756
- body: cell
70650
+ body: cellBody
70757
70651
  };
70758
70652
  if (style2) {
70759
70653
  cell = {
@@ -70776,7 +70670,7 @@ function parseArray(parser, _ref, style2) {
70776
70670
  parser.consume();
70777
70671
  } else if (next2 === "\\end") {
70778
70672
  endRow();
70779
- if (row.length === 1 && cell.type === "styling" && cell.body[0].body.length === 0 && (body.length > 1 || !emptySingleRow)) {
70673
+ if (row.length === 1 && cell.type === "styling" && cell.body.length === 1 && cell.body[0].type === "ordgroup" && cell.body[0].body.length === 0 && (body.length > 1 || !emptySingleRow)) {
70780
70674
  body.pop();
70781
70675
  }
70782
70676
  if (hLinesBeforeRow.length < body.length + 1) {
@@ -70835,7 +70729,6 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
70835
70729
  // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em.
70836
70730
  options.fontMetrics().arrayRuleWidth,
70837
70731
  options.minRuleThickness
70838
- // User override.
70839
70732
  );
70840
70733
  var pt = 1 / options.fontMetrics().ptPerEm;
70841
70734
  var arraycolsep = 5 * pt;
@@ -70940,9 +70833,11 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
70940
70833
  c2 < nc || colDescrNum < colDescriptions.length;
70941
70834
  ++c2, ++colDescrNum
70942
70835
  ) {
70943
- var colDescr = colDescriptions[colDescrNum] || {};
70836
+ var _colDescr3;
70837
+ var colDescr = colDescriptions[colDescrNum];
70944
70838
  var firstSeparator = true;
70945
- while (colDescr.type === "separator") {
70839
+ while (((_colDescr = colDescr) == null ? void 0 : _colDescr.type) === "separator") {
70840
+ var _colDescr;
70946
70841
  if (!firstSeparator) {
70947
70842
  colSep = makeSpan(["arraycolsep"], []);
70948
70843
  colSep.style.width = makeEm(options.fontMetrics().doubleRuleSep);
@@ -70964,7 +70859,7 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
70964
70859
  throw new ParseError("Invalid separator type: " + colDescr.separator);
70965
70860
  }
70966
70861
  colDescrNum++;
70967
- colDescr = colDescriptions[colDescrNum] || {};
70862
+ colDescr = colDescriptions[colDescrNum];
70968
70863
  firstSeparator = false;
70969
70864
  }
70970
70865
  if (c2 >= nc) {
@@ -70972,15 +70867,15 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
70972
70867
  }
70973
70868
  var sepwidth = void 0;
70974
70869
  if (c2 > 0 || group.hskipBeforeAndAfter) {
70975
- var _colDescr$pregap;
70976
- sepwidth = (_colDescr$pregap = colDescr.pregap) != null ? _colDescr$pregap : arraycolsep;
70870
+ var _colDescr$pregap, _colDescr2;
70871
+ sepwidth = (_colDescr$pregap = (_colDescr2 = colDescr) == null ? void 0 : _colDescr2.pregap) != null ? _colDescr$pregap : arraycolsep;
70977
70872
  if (sepwidth !== 0) {
70978
70873
  colSep = makeSpan(["arraycolsep"], []);
70979
70874
  colSep.style.width = makeEm(sepwidth);
70980
70875
  cols.push(colSep);
70981
70876
  }
70982
70877
  }
70983
- var col = [];
70878
+ var colElems = [];
70984
70879
  for (r2 = 0; r2 < nr; ++r2) {
70985
70880
  var row = body[r2];
70986
70881
  var elem = row[c2];
@@ -70990,21 +70885,21 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
70990
70885
  var _shift2 = row.pos - offset;
70991
70886
  elem.depth = row.depth;
70992
70887
  elem.height = row.height;
70993
- col.push({
70888
+ colElems.push({
70994
70889
  type: "elem",
70995
70890
  elem,
70996
70891
  shift: _shift2
70997
70892
  });
70998
70893
  }
70999
- col = makeVList({
70894
+ var colVList = makeVList({
71000
70895
  positionType: "individualShift",
71001
- children: col
70896
+ children: colElems
71002
70897
  });
71003
- col = makeSpan(["col-align-" + (colDescr.align || "c")], [col]);
71004
- cols.push(col);
70898
+ var colSpan = makeSpan(["col-align-" + (((_colDescr3 = colDescr) == null ? void 0 : _colDescr3.align) || "c")], [colVList]);
70899
+ cols.push(colSpan);
71005
70900
  if (c2 < nc - 1 || group.hskipBeforeAndAfter) {
71006
- var _colDescr$postgap;
71007
- sepwidth = (_colDescr$postgap = colDescr.postgap) != null ? _colDescr$postgap : arraycolsep;
70901
+ var _colDescr$postgap, _colDescr4;
70902
+ sepwidth = (_colDescr$postgap = (_colDescr4 = colDescr) == null ? void 0 : _colDescr4.postgap) != null ? _colDescr$postgap : arraycolsep;
71008
70903
  if (sepwidth !== 0) {
71009
70904
  colSep = makeSpan(["arraycolsep"], []);
71010
70905
  colSep.style.width = makeEm(sepwidth);
@@ -71012,13 +70907,13 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
71012
70907
  }
71013
70908
  }
71014
70909
  }
71015
- body = makeSpan(["mtable"], cols);
70910
+ var tableBody = makeSpan(["mtable"], cols);
71016
70911
  if (hlines.length > 0) {
71017
70912
  var line2 = makeLineSpan("hline", options, ruleThickness);
71018
70913
  var dashes = makeLineSpan("hdashline", options, ruleThickness);
71019
70914
  var vListElems = [{
71020
70915
  type: "elem",
71021
- elem: body,
70916
+ elem: tableBody,
71022
70917
  shift: 0
71023
70918
  }];
71024
70919
  while (hlines.length > 0) {
@@ -71038,20 +70933,20 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
71038
70933
  });
71039
70934
  }
71040
70935
  }
71041
- body = makeVList({
70936
+ tableBody = makeVList({
71042
70937
  positionType: "individualShift",
71043
70938
  children: vListElems
71044
70939
  });
71045
70940
  }
71046
70941
  if (tagSpans.length === 0) {
71047
- return makeSpan(["mord"], [body], options);
70942
+ return makeSpan(["mord"], [tableBody], options);
71048
70943
  } else {
71049
70944
  var eqnNumCol = makeVList({
71050
70945
  positionType: "individualShift",
71051
70946
  children: tagSpans
71052
70947
  });
71053
- eqnNumCol = makeSpan(["tag"], [eqnNumCol], options);
71054
- return makeFragment([body, eqnNumCol]);
70948
+ var tagCol = makeSpan(["tag"], [eqnNumCol], options);
70949
+ return makeFragment([tableBody, tagCol]);
71055
70950
  }
71056
70951
  };
71057
70952
  var alignMap = {
@@ -71100,15 +70995,16 @@ var mathmlBuilder$5 = function mathmlBuilder(group, options) {
71100
70995
  iEnd -= 1;
71101
70996
  }
71102
70997
  for (var _i2 = iStart; _i2 < iEnd; _i2++) {
71103
- if (cols[_i2].type === "align") {
71104
- align += alignMap[cols[_i2].align];
70998
+ var col = cols[_i2];
70999
+ if (col.type === "align") {
71000
+ align += alignMap[col.align];
71105
71001
  if (prevTypeWasAlign) {
71106
71002
  columnLines += "none ";
71107
71003
  }
71108
71004
  prevTypeWasAlign = true;
71109
- } else if (cols[_i2].type === "separator") {
71005
+ } else if (col.type === "separator") {
71110
71006
  if (prevTypeWasAlign) {
71111
- columnLines += cols[_i2].separator === "|" ? "solid " : "dashed ";
71007
+ columnLines += col.separator === "|" ? "solid " : "dashed ";
71112
71008
  prevTypeWasAlign = false;
71113
71009
  }
71114
71010
  }
@@ -71170,7 +71066,7 @@ var alignedHandler = function alignedHandler2(context, args) {
71170
71066
  maxNumCols: isSplit ? 2 : void 0,
71171
71067
  leqno: context.parser.settings.leqno
71172
71068
  }, "display");
71173
- var numMaths;
71069
+ var numMaths = 0;
71174
71070
  var numCols = 0;
71175
71071
  var emptyGroup = {
71176
71072
  type: "ordgroup",
@@ -71363,12 +71259,12 @@ defineEnvironment({
71363
71259
  if (cols.length > 1) {
71364
71260
  throw new ParseError("{subarray} can contain only one column");
71365
71261
  }
71366
- var res = {
71262
+ var payload = {
71367
71263
  cols,
71368
71264
  hskipBeforeAndAfter: false,
71369
71265
  arraystretch: 0.5
71370
71266
  };
71371
- res = parseArray(context.parser, res, "script");
71267
+ var res = parseArray(context.parser, payload, "script");
71372
71268
  if (res.body.length > 0 && res.body[0].length > 1) {
71373
71269
  throw new ParseError("{subarray} can contain only one column");
71374
71270
  }
@@ -72900,7 +72796,7 @@ var htmlBuilder$2 = (grp, options) => {
72900
72796
  var slant = 0;
72901
72797
  if ((base2 instanceof SymbolNode || group.name === "\\oiint" || group.name === "\\oiiint") && !group.suppressBaseShift) {
72902
72798
  baseShift = (base2.height - base2.depth) / 2 - options.fontMetrics().axisHeight;
72903
- slant = base2.italic;
72799
+ slant = base2.italic || 0;
72904
72800
  }
72905
72801
  if (hasLimits) {
72906
72802
  return assembleSupSub(base2, supGroup, subGroup, options, style2, slant, baseShift);
@@ -73095,7 +72991,7 @@ var htmlBuilder$1 = (grp, options) => {
73095
72991
  var base2;
73096
72992
  if (group.body.length > 0) {
73097
72993
  var body = group.body.map((child2) => {
73098
- var childText = child2.text;
72994
+ var childText = "text" in child2 ? child2.text : void 0;
73099
72995
  if (typeof childText === "string") {
73100
72996
  return {
73101
72997
  type: "textord",
@@ -73133,7 +73029,6 @@ var mathmlBuilder2 = (group, options) => {
73133
73029
  switch (node2.type) {
73134
73030
  case "mi":
73135
73031
  case "mn":
73136
- case "ms":
73137
73032
  case "mspace":
73138
73033
  case "mtext":
73139
73034
  break;
@@ -73278,52 +73173,7 @@ defineFunction({
73278
73173
  return new MathNode("mphantom", inner2);
73279
73174
  }
73280
73175
  });
73281
- defineFunction({
73282
- type: "hphantom",
73283
- names: ["\\hphantom"],
73284
- props: {
73285
- numArgs: 1,
73286
- allowedInText: true
73287
- },
73288
- handler: (_ref2, args) => {
73289
- var {
73290
- parser
73291
- } = _ref2;
73292
- var body = args[0];
73293
- return {
73294
- type: "hphantom",
73295
- mode: parser.mode,
73296
- body
73297
- };
73298
- },
73299
- htmlBuilder: (group, options) => {
73300
- var node2 = makeSpan([], [buildGroup$1(group.body, options.withPhantom())]);
73301
- node2.height = 0;
73302
- node2.depth = 0;
73303
- if (node2.children) {
73304
- for (var i2 = 0; i2 < node2.children.length; i2++) {
73305
- node2.children[i2].height = 0;
73306
- node2.children[i2].depth = 0;
73307
- }
73308
- }
73309
- node2 = makeVList({
73310
- positionType: "firstBaseline",
73311
- children: [{
73312
- type: "elem",
73313
- elem: node2
73314
- }]
73315
- });
73316
- return makeSpan(["mord"], [node2], options);
73317
- },
73318
- mathmlBuilder: (group, options) => {
73319
- var inner2 = buildExpression2(ordargument(group.body), options);
73320
- var phantom = new MathNode("mphantom", inner2);
73321
- var node2 = new MathNode("mpadded", [phantom]);
73322
- node2.setAttribute("height", "0px");
73323
- node2.setAttribute("depth", "0px");
73324
- return node2;
73325
- }
73326
- });
73176
+ defineMacro("\\hphantom", "\\smash{\\phantom{#1}}");
73327
73177
  defineFunction({
73328
73178
  type: "vphantom",
73329
73179
  names: ["\\vphantom"],
@@ -73331,10 +73181,10 @@ defineFunction({
73331
73181
  numArgs: 1,
73332
73182
  allowedInText: true
73333
73183
  },
73334
- handler: (_ref3, args) => {
73184
+ handler: (_ref2, args) => {
73335
73185
  var {
73336
73186
  parser
73337
- } = _ref3;
73187
+ } = _ref2;
73338
73188
  var body = args[0];
73339
73189
  return {
73340
73190
  type: "vphantom",
@@ -73542,7 +73392,7 @@ defineFunction({
73542
73392
  var letter = "";
73543
73393
  for (var i2 = 0; i2 < tbArg.body.length; ++i2) {
73544
73394
  var node2 = tbArg.body[i2];
73545
- letter = node2.text;
73395
+ letter = assertSymbolNodeType(node2).text;
73546
73396
  if (letter === "t") {
73547
73397
  smashHeight = true;
73548
73398
  } else if (letter === "b") {
@@ -73573,17 +73423,20 @@ defineFunction({
73573
73423
  }
73574
73424
  if (group.smashHeight) {
73575
73425
  node2.height = 0;
73576
- if (node2.children) {
73577
- for (var i2 = 0; i2 < node2.children.length; i2++) {
73578
- node2.children[i2].height = 0;
73579
- }
73580
- }
73581
73426
  }
73582
73427
  if (group.smashDepth) {
73583
73428
  node2.depth = 0;
73584
- if (node2.children) {
73585
- for (var _i2 = 0; _i2 < node2.children.length; _i2++) {
73586
- node2.children[_i2].depth = 0;
73429
+ }
73430
+ if (group.smashHeight && group.smashDepth) {
73431
+ return makeSpan(["mord", "smash"], [node2], options);
73432
+ }
73433
+ if (node2.children) {
73434
+ for (var i2 = 0; i2 < node2.children.length; i2++) {
73435
+ if (group.smashHeight) {
73436
+ node2.children[i2].height = 0;
73437
+ }
73438
+ if (group.smashDepth) {
73439
+ node2.children[i2].depth = 0;
73587
73440
  }
73588
73441
  }
73589
73442
  }
@@ -74263,10 +74116,6 @@ class Lexer {
74263
74116
  // Category codes. The lexer only supports comment characters (14) for now.
74264
74117
  // MacroExpander additionally distinguishes active (13).
74265
74118
  constructor(input, settings) {
74266
- this.input = void 0;
74267
- this.settings = void 0;
74268
- this.tokenRegex = void 0;
74269
- this.catcodes = void 0;
74270
74119
  this.input = input;
74271
74120
  this.settings = settings;
74272
74121
  this.tokenRegex = new RegExp(tokenRegexString, "g");
@@ -74321,9 +74170,6 @@ class Namespace {
74321
74170
  if (globalMacros === void 0) {
74322
74171
  globalMacros = {};
74323
74172
  }
74324
- this.current = void 0;
74325
- this.builtins = void 0;
74326
- this.undefStack = void 0;
74327
74173
  this.current = globalMacros;
74328
74174
  this.builtins = builtins;
74329
74175
  this.undefStack = [];
@@ -74506,7 +74352,7 @@ var digitToNumber = {
74506
74352
  defineMacro("\\char", function(context) {
74507
74353
  var token2 = context.popToken();
74508
74354
  var base2;
74509
- var number = "";
74355
+ var number = 0;
74510
74356
  if (token2.text === "'") {
74511
74357
  base2 = 8;
74512
74358
  token2 = context.popToken();
@@ -74644,7 +74490,6 @@ defineMacro("⌞", "\\llcorner");
74644
74490
  defineMacro("⌟", "\\lrcorner");
74645
74491
  defineMacro("©", "\\copyright");
74646
74492
  defineMacro("®", "\\textregistered");
74647
- defineMacro("️", "\\textregistered");
74648
74493
  defineMacro("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');
74649
74494
  defineMacro("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');
74650
74495
  defineMacro("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');
@@ -75092,12 +74937,6 @@ var implicitCommands = {
75092
74937
  };
75093
74938
  class MacroExpander {
75094
74939
  constructor(input, settings, mode) {
75095
- this.settings = void 0;
75096
- this.expansionCount = void 0;
75097
- this.lexer = void 0;
75098
- this.macros = void 0;
75099
- this.stack = void 0;
75100
- this.mode = void 0;
75101
74940
  this.settings = settings;
75102
74941
  this.expansionCount = 0;
75103
74942
  this.feed(input);
@@ -75370,7 +75209,6 @@ class MacroExpander {
75370
75209
  return token2;
75371
75210
  }
75372
75211
  }
75373
- throw new Error();
75374
75212
  }
75375
75213
  /**
75376
75214
  * Fully expand the given macro name and return the resulting list of
@@ -75971,15 +75809,11 @@ var unicodeSymbols = {
75971
75809
  };
75972
75810
  class Parser {
75973
75811
  constructor(input, settings) {
75974
- this.mode = void 0;
75975
- this.gullet = void 0;
75976
- this.settings = void 0;
75977
- this.leftrightDepth = void 0;
75978
- this.nextToken = void 0;
75979
75812
  this.mode = "math";
75980
75813
  this.gullet = new MacroExpander(input, settings, this.mode);
75981
75814
  this.settings = settings;
75982
75815
  this.leftrightDepth = 0;
75816
+ this.nextToken = null;
75983
75817
  }
75984
75818
  /**
75985
75819
  * Checks a result to make sure it has the right type, and throws an
@@ -76106,12 +75940,13 @@ class Parser {
76106
75940
  var overIndex = -1;
76107
75941
  var funcName;
76108
75942
  for (var i2 = 0; i2 < body.length; i2++) {
76109
- if (body[i2].type === "infix") {
75943
+ var node2 = body[i2];
75944
+ if (node2.type === "infix") {
76110
75945
  if (overIndex !== -1) {
76111
- throw new ParseError("only one infix operator per group", body[i2].token);
75946
+ throw new ParseError("only one infix operator per group", node2.token);
76112
75947
  }
76113
75948
  overIndex = i2;
76114
- funcName = body[i2].replaceWith;
75949
+ funcName = node2.replaceWith;
76115
75950
  }
76116
75951
  }
76117
75952
  if (overIndex !== -1 && funcName) {
@@ -76137,13 +75972,13 @@ class Parser {
76137
75972
  body: denomBody
76138
75973
  };
76139
75974
  }
76140
- var node2;
75975
+ var _node;
76141
75976
  if (funcName === "\\\\abovefrac") {
76142
- node2 = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);
75977
+ _node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);
76143
75978
  } else {
76144
- node2 = this.callFunction(funcName, [numerNode, denomNode], []);
75979
+ _node = this.callFunction(funcName, [numerNode, denomNode], []);
76145
75980
  }
76146
- return [node2];
75981
+ return [_node];
76147
75982
  } else {
76148
75983
  return body;
76149
75984
  }
@@ -76357,7 +76192,7 @@ class Parser {
76357
76192
  for (var i2 = 0; i2 < totalArgs; i2++) {
76358
76193
  var argType = funcData.argTypes && funcData.argTypes[i2];
76359
76194
  var isOptional = i2 < funcData.numOptionalArgs;
76360
- if (funcData.primitive && argType == null || // \sqrt expands into primitive if optional argument doesn't exist
76195
+ if ("primitive" in funcData && funcData.primitive && argType == null || // \sqrt expands into primitive if optional argument doesn't exist
76361
76196
  funcData.type === "sqrt" && i2 === 1 && optArgs[0] == null) {
76362
76197
  argType = "primitive";
76363
76198
  }
@@ -76632,13 +76467,21 @@ class Parser {
76632
76467
  var n2 = group.length - 1;
76633
76468
  for (var i2 = 0; i2 < n2; ++i2) {
76634
76469
  var a2 = group[i2];
76470
+ if (a2.type !== "textord") {
76471
+ continue;
76472
+ }
76635
76473
  var v2 = a2.text;
76636
- if (v2 === "-" && group[i2 + 1].text === "-") {
76637
- if (i2 + 1 < n2 && group[i2 + 2].text === "-") {
76474
+ var next2 = group[i2 + 1];
76475
+ if (!next2 || next2.type !== "textord") {
76476
+ continue;
76477
+ }
76478
+ if (v2 === "-" && next2.text === "-") {
76479
+ var afterNext = group[i2 + 2];
76480
+ if (i2 + 1 < n2 && afterNext && afterNext.type === "textord" && afterNext.text === "-") {
76638
76481
  group.splice(i2, 3, {
76639
76482
  type: "textord",
76640
76483
  mode: "text",
76641
- loc: SourceLocation.range(a2, group[i2 + 2]),
76484
+ loc: SourceLocation.range(a2, afterNext),
76642
76485
  text: "---"
76643
76486
  });
76644
76487
  n2 -= 2;
@@ -76646,17 +76489,17 @@ class Parser {
76646
76489
  group.splice(i2, 2, {
76647
76490
  type: "textord",
76648
76491
  mode: "text",
76649
- loc: SourceLocation.range(a2, group[i2 + 1]),
76492
+ loc: SourceLocation.range(a2, next2),
76650
76493
  text: "--"
76651
76494
  });
76652
76495
  n2 -= 1;
76653
76496
  }
76654
76497
  }
76655
- if ((v2 === "'" || v2 === "`") && group[i2 + 1].text === v2) {
76498
+ if ((v2 === "'" || v2 === "`") && next2.text === v2) {
76656
76499
  group.splice(i2, 2, {
76657
76500
  type: "textord",
76658
76501
  mode: "text",
76659
- loc: SourceLocation.range(a2, group[i2 + 1]),
76502
+ loc: SourceLocation.range(a2, next2),
76660
76503
  text: v2 + v2
76661
76504
  });
76662
76505
  n2 -= 1;
@@ -76764,7 +76607,7 @@ class Parser {
76764
76607
  label: command,
76765
76608
  isStretchy: false,
76766
76609
  isShifty: true,
76767
- // $FlowFixMe
76610
+ // TODO(ts)
76768
76611
  base: symbol
76769
76612
  };
76770
76613
  }
@@ -76843,7 +76686,7 @@ var renderToHTMLTree = function renderToHTMLTree2(expression, options) {
76843
76686
  return renderError(error2, expression, settings);
76844
76687
  }
76845
76688
  };
76846
- var version = "0.16.33";
76689
+ var version = "0.16.37";
76847
76690
  var __domTree = {
76848
76691
  Span,
76849
76692
  Anchor,
@@ -97388,12 +97231,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
97388
97231
  registerLayoutLoaders([
97389
97232
  {
97390
97233
  name: "dagre",
97391
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-YwdsZ11r.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
97234
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-BcweuZHt.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
97392
97235
  },
97393
97236
  ...[
97394
97237
  {
97395
97238
  name: "cose-bilkent",
97396
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-anaPs-75.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
97239
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-yM7S2atz.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
97397
97240
  }
97398
97241
  ]
97399
97242
  ]);
@@ -97833,7 +97676,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
97833
97676
  }, "detector");
97834
97677
  var loader = /* @__PURE__ */ __name(async () => {
97835
97678
  const { diagram: diagram2 } = await __vitePreload(async () => {
97836
- const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-DBf1NeBf.js");
97679
+ const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-B0WnCfAT.js");
97837
97680
  return { diagram: diagram22 };
97838
97681
  }, true ? __vite__mapDeps([8,9]) : void 0);
97839
97682
  return { id, diagram: diagram2 };
@@ -97853,7 +97696,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
97853
97696
  }, "detector");
97854
97697
  var loader2 = /* @__PURE__ */ __name(async () => {
97855
97698
  const { diagram: diagram2 } = await __vitePreload(async () => {
97856
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-DT821XSz.js");
97699
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-BsBhWukh.js");
97857
97700
  return { diagram: diagram22 };
97858
97701
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
97859
97702
  return { id: id2, diagram: diagram2 };
@@ -97879,7 +97722,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
97879
97722
  }, "detector");
97880
97723
  var loader3 = /* @__PURE__ */ __name(async () => {
97881
97724
  const { diagram: diagram2 } = await __vitePreload(async () => {
97882
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-DT821XSz.js");
97725
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-BsBhWukh.js");
97883
97726
  return { diagram: diagram22 };
97884
97727
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
97885
97728
  return { id: id3, diagram: diagram2 };
@@ -97896,7 +97739,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
97896
97739
  }, "detector");
97897
97740
  var loader4 = /* @__PURE__ */ __name(async () => {
97898
97741
  const { diagram: diagram2 } = await __vitePreload(async () => {
97899
- const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-CEzTKw1u.js");
97742
+ const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-DLKmthuw.js");
97900
97743
  return { diagram: diagram22 };
97901
97744
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
97902
97745
  return { id: id4, diagram: diagram2 };
@@ -97913,7 +97756,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
97913
97756
  }, "detector");
97914
97757
  var loader5 = /* @__PURE__ */ __name(async () => {
97915
97758
  const { diagram: diagram2 } = await __vitePreload(async () => {
97916
- const { diagram: diagram22 } = await import("./gitGraphDiagram-V2S2FVAM-yAfyBG_d.js");
97759
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-V2S2FVAM-BnAPFBGR.js");
97917
97760
  return { diagram: diagram22 };
97918
97761
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
97919
97762
  return { id: id5, diagram: diagram2 };
@@ -97930,7 +97773,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
97930
97773
  }, "detector");
97931
97774
  var loader6 = /* @__PURE__ */ __name(async () => {
97932
97775
  const { diagram: diagram2 } = await __vitePreload(async () => {
97933
- const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-DlmeVsGg.js");
97776
+ const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-Debz-J-C.js");
97934
97777
  return { diagram: diagram22 };
97935
97778
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
97936
97779
  return { id: id6, diagram: diagram2 };
@@ -97947,7 +97790,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
97947
97790
  }, "detector");
97948
97791
  var loader7 = /* @__PURE__ */ __name(async () => {
97949
97792
  const { diagram: diagram2 } = await __vitePreload(async () => {
97950
- const { diagram: diagram22 } = await import("./infoDiagram-HS3SLOUP-DaadramQ.js");
97793
+ const { diagram: diagram22 } = await import("./infoDiagram-HS3SLOUP-CZ5hWoxV.js");
97951
97794
  return { diagram: diagram22 };
97952
97795
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
97953
97796
  return { id: id7, diagram: diagram2 };
@@ -97963,7 +97806,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
97963
97806
  }, "detector");
97964
97807
  var loader8 = /* @__PURE__ */ __name(async () => {
97965
97808
  const { diagram: diagram2 } = await __vitePreload(async () => {
97966
- const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-DaUXTsv7.js");
97809
+ const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-BQ2n0cOB.js");
97967
97810
  return { diagram: diagram22 };
97968
97811
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
97969
97812
  return { id: id8, diagram: diagram2 };
@@ -97979,7 +97822,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
97979
97822
  }, "detector");
97980
97823
  var loader9 = /* @__PURE__ */ __name(async () => {
97981
97824
  const { diagram: diagram2 } = await __vitePreload(async () => {
97982
- const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-B7O2wPX9.js");
97825
+ const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-BLg7_neg.js");
97983
97826
  return { diagram: diagram22 };
97984
97827
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
97985
97828
  return { id: id9, diagram: diagram2 };
@@ -97996,7 +97839,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
97996
97839
  }, "detector");
97997
97840
  var loader10 = /* @__PURE__ */ __name(async () => {
97998
97841
  const { diagram: diagram2 } = await __vitePreload(async () => {
97999
- const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-RZy33lFF.js");
97842
+ const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-CmSQMxUh.js");
98000
97843
  return { diagram: diagram22 };
98001
97844
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
98002
97845
  return { id: id10, diagram: diagram2 };
@@ -98013,7 +97856,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
98013
97856
  }, "detector");
98014
97857
  var loader11 = /* @__PURE__ */ __name(async () => {
98015
97858
  const { diagram: diagram2 } = await __vitePreload(async () => {
98016
- const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-DpauVPY1.js");
97859
+ const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-DwkJt0zi.js");
98017
97860
  return { diagram: diagram22 };
98018
97861
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
98019
97862
  return { id: id11, diagram: diagram2 };
@@ -98030,7 +97873,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
98030
97873
  }, "detector");
98031
97874
  var loader12 = /* @__PURE__ */ __name(async () => {
98032
97875
  const { diagram: diagram2 } = await __vitePreload(async () => {
98033
- const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-KdbWByWT.js");
97876
+ const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-KHU_eApU.js");
98034
97877
  return { diagram: diagram22 };
98035
97878
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
98036
97879
  return { id: id12, diagram: diagram2 };
@@ -98050,7 +97893,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
98050
97893
  }, "detector");
98051
97894
  var loader13 = /* @__PURE__ */ __name(async () => {
98052
97895
  const { diagram: diagram2 } = await __vitePreload(async () => {
98053
- const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-BvUbXD6H.js");
97896
+ const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-FCrnlCWC.js");
98054
97897
  return { diagram: diagram22 };
98055
97898
  }, true ? __vite__mapDeps([32,33,11,12,13]) : void 0);
98056
97899
  return { id: id13, diagram: diagram2 };
@@ -98070,7 +97913,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
98070
97913
  }, "detector");
98071
97914
  var loader14 = /* @__PURE__ */ __name(async () => {
98072
97915
  const { diagram: diagram2 } = await __vitePreload(async () => {
98073
- const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-BvUbXD6H.js");
97916
+ const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-FCrnlCWC.js");
98074
97917
  return { diagram: diagram22 };
98075
97918
  }, true ? __vite__mapDeps([34,33,11,12,13]) : void 0);
98076
97919
  return { id: id14, diagram: diagram2 };
@@ -98090,7 +97933,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
98090
97933
  }, "detector");
98091
97934
  var loader15 = /* @__PURE__ */ __name(async () => {
98092
97935
  const { diagram: diagram2 } = await __vitePreload(async () => {
98093
- const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-yDOCVezC.js");
97936
+ const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-B3DBCxAL.js");
98094
97937
  return { diagram: diagram22 };
98095
97938
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
98096
97939
  return { id: id15, diagram: diagram2 };
@@ -98113,7 +97956,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
98113
97956
  }, "detector");
98114
97957
  var loader16 = /* @__PURE__ */ __name(async () => {
98115
97958
  const { diagram: diagram2 } = await __vitePreload(async () => {
98116
- const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-CpCJhvQO.js");
97959
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-C-uIk7gh.js");
98117
97960
  return { diagram: diagram22 };
98118
97961
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
98119
97962
  return { id: id16, diagram: diagram2 };
@@ -98130,7 +97973,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
98130
97973
  }, "detector");
98131
97974
  var loader17 = /* @__PURE__ */ __name(async () => {
98132
97975
  const { diagram: diagram2 } = await __vitePreload(async () => {
98133
- const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-ftN8hxu3.js");
97976
+ const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-CKN3oSxk.js");
98134
97977
  return { diagram: diagram22 };
98135
97978
  }, true ? __vite__mapDeps([38,9,11,26]) : void 0);
98136
97979
  return { id: id17, diagram: diagram2 };
@@ -98200,7 +98043,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
98200
98043
  }, "detector");
98201
98044
  var loader18 = /* @__PURE__ */ __name(async () => {
98202
98045
  const { diagram: diagram2 } = await __vitePreload(async () => {
98203
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-DT821XSz.js");
98046
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-BsBhWukh.js");
98204
98047
  return { diagram: diagram22 };
98205
98048
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
98206
98049
  return { id: id18, diagram: diagram2 };
@@ -98217,7 +98060,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
98217
98060
  }, "detector");
98218
98061
  var loader19 = /* @__PURE__ */ __name(async () => {
98219
98062
  const { diagram: diagram2 } = await __vitePreload(async () => {
98220
- const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-CHxuEjhV.js");
98063
+ const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-SysEcQCC.js");
98221
98064
  return { diagram: diagram22 };
98222
98065
  }, true ? __vite__mapDeps([39,26]) : void 0);
98223
98066
  return { id: id19, diagram: diagram2 };
@@ -98234,7 +98077,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
98234
98077
  }, "detector");
98235
98078
  var loader20 = /* @__PURE__ */ __name(async () => {
98236
98079
  const { diagram: diagram2 } = await __vitePreload(async () => {
98237
- const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-D2zv5uI9.js");
98080
+ const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-C_goMzjx.js");
98238
98081
  return { diagram: diagram22 };
98239
98082
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
98240
98083
  return { id: id20, diagram: diagram2 };
@@ -98251,7 +98094,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
98251
98094
  }, "detector");
98252
98095
  var loader21 = /* @__PURE__ */ __name(async () => {
98253
98096
  const { diagram: diagram2 } = await __vitePreload(async () => {
98254
- const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-BIXETQ-C.js");
98097
+ const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-BQCMklfJ.js");
98255
98098
  return { diagram: diagram22 };
98256
98099
  }, true ? __vite__mapDeps([41,11]) : void 0);
98257
98100
  return { id: id21, diagram: diagram2 };
@@ -98268,7 +98111,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
98268
98111
  }, "detector");
98269
98112
  var loader22 = /* @__PURE__ */ __name(async () => {
98270
98113
  const { diagram: diagram2 } = await __vitePreload(async () => {
98271
- const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-B3Hbfvad.js");
98114
+ const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-DmxmatUB.js");
98272
98115
  return { diagram: diagram22 };
98273
98116
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
98274
98117
  return { id: id22, diagram: diagram2 };
@@ -98285,7 +98128,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
98285
98128
  }, "detector");
98286
98129
  var loader23 = /* @__PURE__ */ __name(async () => {
98287
98130
  const { diagram: diagram2 } = await __vitePreload(async () => {
98288
- const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-DyQjD4D5.js");
98131
+ const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-pB6N6Tq_.js");
98289
98132
  return { diagram: diagram22 };
98290
98133
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
98291
98134
  return { id: id23, diagram: diagram2 };
@@ -98301,7 +98144,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
98301
98144
  }, "detector");
98302
98145
  var loader24 = /* @__PURE__ */ __name(async () => {
98303
98146
  const { diagram: diagram2 } = await __vitePreload(async () => {
98304
- const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-Mf24XxZL.js");
98147
+ const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-BVbuejJn.js");
98305
98148
  return { diagram: diagram22 };
98306
98149
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
98307
98150
  return { id: id24, diagram: diagram2 };
@@ -98317,7 +98160,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
98317
98160
  }, "detector");
98318
98161
  var loader25 = /* @__PURE__ */ __name(async () => {
98319
98162
  const { diagram: diagram2 } = await __vitePreload(async () => {
98320
- const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-D9Egoflr.js");
98163
+ const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-pHVz60D0.js");
98321
98164
  return { diagram: diagram22 };
98322
98165
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
98323
98166
  return { id: id25, diagram: diagram2 };
@@ -98334,7 +98177,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
98334
98177
  }, "detector");
98335
98178
  var loader26 = /* @__PURE__ */ __name(async () => {
98336
98179
  const { diagram: diagram2 } = await __vitePreload(async () => {
98337
- const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-Bif8topC.js");
98180
+ const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-DJQfSJUH.js");
98338
98181
  return { diagram: diagram22 };
98339
98182
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
98340
98183
  return { id: id26, diagram: diagram2 };
@@ -98351,7 +98194,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
98351
98194
  }, "detector");
98352
98195
  var loader27 = /* @__PURE__ */ __name(async () => {
98353
98196
  const { diagram: diagram2 } = await __vitePreload(async () => {
98354
- const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-5KQCf3h2.js");
98197
+ const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-D4-QwLW1.js");
98355
98198
  return { diagram: diagram22 };
98356
98199
  }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
98357
98200
  return { id: id27, diagram: diagram2 };
@@ -99592,6 +99435,12 @@ if (!customElements.get("dominds-markdown-section")) {
99592
99435
  }
99593
99436
  const CALLING_CONTENT_INITIAL_MAX_HEIGHT_PX = 120;
99594
99437
  const CALLING_EXPAND_STEP_VIEWPORT_RATIO = 1 / 3;
99438
+ const AUTO_SCROLL_FOLLOW_THRESHOLD_PX = 32;
99439
+ const AUTO_SCROLL_WHEEL_RESISTANCE_PX = 56;
99440
+ const AUTO_SCROLL_WHEEL_DECAY_MS = 520;
99441
+ const AUTO_SCROLL_WHEEL_SETTLE_POLL_MS = 96;
99442
+ const AUTO_SCROLL_WHEEL_MAX_RESISTANCE = 1.8;
99443
+ const AUTO_SCROLL_WHEEL_IDLE_EPSILON = 0.03;
99595
99444
  class DomindsDialogContainer extends HTMLElement {
99596
99445
  constructor() {
99597
99446
  super();
@@ -99601,11 +99450,18 @@ class DomindsDialogContainer extends HTMLElement {
99601
99450
  this.runState = null;
99602
99451
  this.suppressEvents = false;
99603
99452
  this.autoScrollEnabled = true;
99453
+ this.autoScrollPinnedToBottom = true;
99454
+ this.autoScrollLastUserRemainingPx = 0;
99604
99455
  this.scrollContainer = null;
99605
99456
  this.boundOnScrollContainerScroll = null;
99457
+ this.boundOnScrollContainerWheel = null;
99606
99458
  this.autoScrollResizeObserver = null;
99607
99459
  this.autoScrollResizeScrollRaf = null;
99608
99460
  this.autoScrollResizeObservedEl = null;
99461
+ this.autoScrollWheelResistance = 0;
99462
+ this.autoScrollWheelLastDecayAtMs = 0;
99463
+ this.autoScrollWheelLastUpEventAtMs = 0;
99464
+ this.autoScrollWheelSettleTimer = null;
99609
99465
  this.teammateCallingSectionBySeq = /* @__PURE__ */ new Map();
99610
99466
  this.callingSectionByCallId = /* @__PURE__ */ new Map();
99611
99467
  this.pendingCallTimingById = /* @__PURE__ */ new Map();
@@ -99947,8 +99803,7 @@ class DomindsDialogContainer extends HTMLElement {
99947
99803
  }
99948
99804
  if (!target) return;
99949
99805
  this.pendingScrollRequest = null;
99950
- this.autoScrollEnabled = false;
99951
- this.updateScrollToBottomButton();
99806
+ this.resetAutoScrollState(false);
99952
99807
  target.scrollIntoView({ behavior: "smooth", block: "center" });
99953
99808
  let selector2 = null;
99954
99809
  if (req.kind === "by_call_id") {
@@ -99972,12 +99827,18 @@ class DomindsDialogContainer extends HTMLElement {
99972
99827
  }
99973
99828
  detachScrollContainerListener() {
99974
99829
  const container = this.scrollContainer;
99975
- const listener = this.boundOnScrollContainerScroll;
99976
- if (container && listener) {
99977
- container.removeEventListener("scroll", listener);
99830
+ const scrollListener = this.boundOnScrollContainerScroll;
99831
+ if (container && scrollListener) {
99832
+ container.removeEventListener("scroll", scrollListener);
99833
+ }
99834
+ const wheelListener = this.boundOnScrollContainerWheel;
99835
+ if (container && wheelListener) {
99836
+ container.removeEventListener("wheel", wheelListener);
99978
99837
  }
99979
99838
  this.scrollContainer = null;
99980
99839
  this.boundOnScrollContainerScroll = null;
99840
+ this.boundOnScrollContainerWheel = null;
99841
+ this.stopAutoScrollWheelSettleTimer();
99981
99842
  }
99982
99843
  ensureScrollContainerListener() {
99983
99844
  const container = this.parentElement instanceof HTMLElement ? this.parentElement : null;
@@ -99988,17 +99849,95 @@ class DomindsDialogContainer extends HTMLElement {
99988
99849
  this.boundOnScrollContainerScroll = () => {
99989
99850
  const current = this.scrollContainer;
99990
99851
  if (!current) return;
99991
- this.autoScrollEnabled = this.isScrollContainerAtBottom(current);
99992
- this.updateScrollToBottomButton();
99852
+ this.refreshAutoScrollStateFromScroll(current);
99853
+ };
99854
+ this.boundOnScrollContainerWheel = (event) => {
99855
+ this.handleAutoScrollWheel(event);
99993
99856
  };
99994
99857
  container.addEventListener("scroll", this.boundOnScrollContainerScroll, { passive: true });
99995
- this.autoScrollEnabled = this.isScrollContainerAtBottom(container);
99996
- this.updateScrollToBottomButton();
99858
+ container.addEventListener("wheel", this.boundOnScrollContainerWheel, { passive: true });
99859
+ this.refreshAutoScrollStateFromScroll(container);
99860
+ }
99861
+ getScrollContainerRemainingPx(container) {
99862
+ return Math.max(0, container.scrollHeight - container.scrollTop - container.clientHeight);
99997
99863
  }
99998
99864
  isScrollContainerAtBottom(container) {
99999
- const thresholdPx = 32;
100000
- const remaining = container.scrollHeight - container.scrollTop - container.clientHeight;
100001
- return remaining <= thresholdPx;
99865
+ return this.getScrollContainerRemainingPx(container) <= AUTO_SCROLL_FOLLOW_THRESHOLD_PX;
99866
+ }
99867
+ stopAutoScrollWheelSettleTimer() {
99868
+ if (this.autoScrollWheelSettleTimer === null) return;
99869
+ window.clearTimeout(this.autoScrollWheelSettleTimer);
99870
+ this.autoScrollWheelSettleTimer = null;
99871
+ }
99872
+ decayAutoScrollWheelResistance(nowMs) {
99873
+ if (this.autoScrollWheelLastDecayAtMs === 0) {
99874
+ this.autoScrollWheelLastDecayAtMs = nowMs;
99875
+ return this.autoScrollWheelResistance;
99876
+ }
99877
+ const elapsedMs = Math.max(0, nowMs - this.autoScrollWheelLastDecayAtMs);
99878
+ if (elapsedMs > 0 && this.autoScrollWheelResistance > 0) {
99879
+ this.autoScrollWheelResistance *= Math.exp(-elapsedMs / AUTO_SCROLL_WHEEL_DECAY_MS);
99880
+ if (this.autoScrollWheelResistance < AUTO_SCROLL_WHEEL_IDLE_EPSILON / 2) {
99881
+ this.autoScrollWheelResistance = 0;
99882
+ }
99883
+ }
99884
+ this.autoScrollWheelLastDecayAtMs = nowMs;
99885
+ return this.autoScrollWheelResistance;
99886
+ }
99887
+ getAutoScrollWheelResistancePx(nowMs) {
99888
+ return this.decayAutoScrollWheelResistance(nowMs) * AUTO_SCROLL_WHEEL_RESISTANCE_PX;
99889
+ }
99890
+ recomputeAutoScrollEnabled(nowMs) {
99891
+ const effectiveRemainingPx = this.autoScrollLastUserRemainingPx + (this.autoScrollPinnedToBottom ? this.getAutoScrollWheelResistancePx(nowMs) : 0);
99892
+ this.autoScrollEnabled = effectiveRemainingPx <= AUTO_SCROLL_FOLLOW_THRESHOLD_PX;
99893
+ this.updateScrollToBottomButton();
99894
+ }
99895
+ refreshAutoScrollStateFromScroll(container) {
99896
+ const remainingPx = this.getScrollContainerRemainingPx(container);
99897
+ this.autoScrollPinnedToBottom = this.isScrollContainerAtBottom(container);
99898
+ this.autoScrollLastUserRemainingPx = remainingPx;
99899
+ this.recomputeAutoScrollEnabled(performance.now());
99900
+ }
99901
+ resetAutoScrollState(enabled) {
99902
+ this.autoScrollPinnedToBottom = enabled;
99903
+ this.autoScrollLastUserRemainingPx = enabled ? 0 : AUTO_SCROLL_FOLLOW_THRESHOLD_PX + 1;
99904
+ this.autoScrollEnabled = enabled;
99905
+ this.autoScrollWheelResistance = 0;
99906
+ this.autoScrollWheelLastDecayAtMs = 0;
99907
+ this.autoScrollWheelLastUpEventAtMs = 0;
99908
+ this.stopAutoScrollWheelSettleTimer();
99909
+ this.updateScrollToBottomButton();
99910
+ }
99911
+ scheduleAutoScrollWheelSettle() {
99912
+ if (!this.autoScrollPinnedToBottom) return;
99913
+ if (this.autoScrollWheelSettleTimer !== null) return;
99914
+ this.autoScrollWheelSettleTimer = window.setTimeout(() => {
99915
+ this.autoScrollWheelSettleTimer = null;
99916
+ this.recomputeAutoScrollEnabled(performance.now());
99917
+ if (this.autoScrollWheelResistance >= AUTO_SCROLL_WHEEL_IDLE_EPSILON) {
99918
+ this.scheduleAutoScrollWheelSettle();
99919
+ }
99920
+ }, AUTO_SCROLL_WHEEL_SETTLE_POLL_MS);
99921
+ }
99922
+ handleAutoScrollWheel(event) {
99923
+ if (!Number.isFinite(event.deltaY) || event.deltaY === 0) return;
99924
+ const nowMs = performance.now();
99925
+ const currentResistance = this.decayAutoScrollWheelResistance(nowMs);
99926
+ const intensity = Math.min(1.25, Math.abs(event.deltaY) / 90);
99927
+ if (event.deltaY < 0) {
99928
+ const gapMs = this.autoScrollWheelLastUpEventAtMs === 0 ? Number.POSITIVE_INFINITY : nowMs - this.autoScrollWheelLastUpEventAtMs;
99929
+ const continuityBoost = gapMs < 140 ? 0.38 : gapMs < 260 ? 0.22 : gapMs < 420 ? 0.1 : 0;
99930
+ this.autoScrollWheelResistance = Math.min(
99931
+ AUTO_SCROLL_WHEEL_MAX_RESISTANCE,
99932
+ currentResistance + 0.18 + intensity * 0.32 + continuityBoost
99933
+ );
99934
+ this.autoScrollWheelLastUpEventAtMs = nowMs;
99935
+ } else {
99936
+ this.autoScrollWheelResistance = Math.max(0, currentResistance - (0.1 + intensity * 0.2));
99937
+ }
99938
+ this.autoScrollWheelLastDecayAtMs = nowMs;
99939
+ this.recomputeAutoScrollEnabled(nowMs);
99940
+ this.scheduleAutoScrollWheelSettle();
100002
99941
  }
100003
99942
  async loadTeamConfiguration() {
100004
99943
  try {
@@ -100027,8 +99966,7 @@ class DomindsDialogContainer extends HTMLElement {
100027
99966
  }
100028
99967
  async setDialog(dialog) {
100029
99968
  this.suppressEvents = true;
100030
- this.autoScrollEnabled = true;
100031
- this.updateScrollToBottomButton();
99969
+ this.resetAutoScrollState(true);
100032
99970
  if (this.currentDialog) {
100033
99971
  this.previousDialog = this.currentDialog;
100034
99972
  }
@@ -100045,8 +99983,7 @@ class DomindsDialogContainer extends HTMLElement {
100045
99983
  }
100046
99984
  clearDialog() {
100047
99985
  this.suppressEvents = true;
100048
- this.autoScrollEnabled = true;
100049
- this.updateScrollToBottomButton();
99986
+ this.resetAutoScrollState(true);
100050
99987
  this.cleanup();
100051
99988
  this.currentDialog = void 0;
100052
99989
  this.render();
@@ -100073,8 +100010,7 @@ class DomindsDialogContainer extends HTMLElement {
100073
100010
  async setCurrentCourse(course) {
100074
100011
  if (!this.currentDialog) return;
100075
100012
  this.suppressEvents = true;
100076
- this.autoScrollEnabled = true;
100077
- this.updateScrollToBottomButton();
100013
+ this.resetAutoScrollState(true);
100078
100014
  this.cleanup();
100079
100015
  this.currentCourse = course;
100080
100016
  this.wsManager.sendRaw({
@@ -100095,6 +100031,7 @@ class DomindsDialogContainer extends HTMLElement {
100095
100031
  resetForCourse(course) {
100096
100032
  this.clearGenerationGlow();
100097
100033
  this.stopAutoScrollObservation();
100034
+ this.stopAutoScrollWheelSettleTimer();
100098
100035
  this.generationBubble = void 0;
100099
100036
  this.thinkingSection = void 0;
100100
100037
  this.markdownSection = void 0;
@@ -100117,6 +100054,7 @@ class DomindsDialogContainer extends HTMLElement {
100117
100054
  cleanup() {
100118
100055
  this.clearGenerationGlow();
100119
100056
  this.stopAutoScrollObservation();
100057
+ this.stopAutoScrollWheelSettleTimer();
100120
100058
  this.previousDialog = void 0;
100121
100059
  this.runState = null;
100122
100060
  this.generationBubble = void 0;
@@ -102444,8 +102382,7 @@ ${event.content}`;
102444
102382
  );
102445
102383
  if (scrollBtn) {
102446
102384
  scrollBtn.onclick = () => {
102447
- this.autoScrollEnabled = true;
102448
- this.updateScrollToBottomButton();
102385
+ this.resetAutoScrollState(true);
102449
102386
  this.scrollToBottom({ force: true });
102450
102387
  };
102451
102388
  }
@@ -103845,7 +103782,10 @@ ${event.content}`;
103845
103782
  const scrollContainer = this.scrollContainer;
103846
103783
  if (!scrollContainer) return;
103847
103784
  const forceScroll = options !== void 0 && options.force === true;
103848
- if (!forceScroll && !this.autoScrollEnabled) return;
103785
+ if (!forceScroll) {
103786
+ this.recomputeAutoScrollEnabled(performance.now());
103787
+ if (!this.autoScrollEnabled) return;
103788
+ }
103849
103789
  const doScroll = () => {
103850
103790
  const maxScroll = scrollContainer.scrollHeight - scrollContainer.clientHeight;
103851
103791
  scrollContainer.scrollTop = maxScroll;
@@ -119655,7 +119595,6 @@ const _DomindsConnectionStatus = class _DomindsConnectionStatus extends HTMLElem
119655
119595
  display: inline-flex;
119656
119596
  align-items: center;
119657
119597
  gap: 4px;
119658
- --status-text-optical-offset-y: -1px;
119659
119598
  }
119660
119599
 
119661
119600
  .status-container {
@@ -119753,7 +119692,6 @@ const _DomindsConnectionStatus = class _DomindsConnectionStatus extends HTMLElem
119753
119692
  height: 100%;
119754
119693
  font-weight: 500;
119755
119694
  line-height: 1;
119756
- transform: translateY(var(--status-text-optical-offset-y));
119757
119695
  white-space: nowrap;
119758
119696
  }
119759
119697
 
@@ -121497,4 +121435,4 @@ export {
121497
121435
  clear$2 as y,
121498
121436
  defaultConfig2 as z
121499
121437
  };
121500
- //# sourceMappingURL=index-DMbwqOm6.js.map
121438
+ //# sourceMappingURL=index-B-8J28g7.js.map