dominds 1.26.1 → 1.26.3

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 (138) hide show
  1. package/README.md +2 -0
  2. package/README.zh.md +2 -0
  3. package/dist/cli/webui.js +14 -4
  4. package/dist/docs/cli-usage.md +1 -1
  5. package/dist/docs/cli-usage.zh.md +1 -1
  6. package/dist/llm/gen/mock.js +11 -3
  7. package/dist/llm/kernel-driver/context-health.d.ts +1 -0
  8. package/dist/llm/kernel-driver/context-health.js +7 -0
  9. package/dist/llm/kernel-driver/drive.js +23 -30
  10. package/dist/llm/kernel-driver/idle-reminder-wake.js +6 -2
  11. package/dist/llm/kernel-driver/reminder-context.d.ts +25 -0
  12. package/dist/llm/kernel-driver/reminder-context.js +81 -0
  13. package/dist/llm/kernel-driver/reply-guidance.js +10 -4
  14. package/dist/llm/kernel-driver/tellask-special.js +50 -35
  15. package/dist/mcp/supervisor.js +2 -2
  16. package/dist/minds/system-prompt-parts.js +30 -30
  17. package/dist/minds/system-prompt.js +55 -40
  18. package/dist/persistence.js +15 -1
  19. package/dist/runtime/driver-messages.d.ts +32 -7
  20. package/dist/runtime/driver-messages.js +279 -118
  21. package/dist/runtime/inter-dialog-format.js +24 -12
  22. package/dist/runtime/reply-prompt-copy.d.ts +8 -8
  23. package/dist/runtime/reply-prompt-copy.js +69 -38
  24. package/dist/server/certificates.js +65 -25
  25. package/dist/server/network-hosts.js +42 -29
  26. package/dist/server.js +4 -4
  27. package/dist/tools/mcp.js +12 -12
  28. package/dist/tools/prompts/control/en/index.md +2 -2
  29. package/dist/tools/prompts/control/en/principles.md +12 -12
  30. package/dist/tools/prompts/control/en/scenarios.md +5 -5
  31. package/dist/tools/prompts/control/en/tools.md +10 -10
  32. package/dist/tools/prompts/control/zh/index.md +3 -3
  33. package/dist/tools/prompts/control/zh/principles.md +12 -12
  34. package/dist/tools/prompts/control/zh/scenarios.md +7 -7
  35. package/dist/tools/prompts/control/zh/tools.md +11 -11
  36. package/dist/tools/prompts/mcp_admin/en/principles.md +4 -4
  37. package/dist/tools/prompts/mcp_admin/en/scenarios.md +1 -1
  38. package/dist/tools/prompts/mcp_admin/en/tools.md +3 -3
  39. package/dist/tools/prompts/mcp_admin/zh/principles.md +4 -4
  40. package/dist/tools/prompts/mcp_admin/zh/scenarios.md +1 -1
  41. package/dist/tools/prompts/mcp_admin/zh/tools.md +3 -3
  42. package/dist/tools/team_mgmt-mcp-manual.js +12 -12
  43. package/package.json +3 -2
  44. package/webapp/dist/assets/{_basePickBy-DUivPKf7.js → _basePickBy-DTJFxmut.js} +3 -3
  45. package/webapp/dist/assets/{_basePickBy-DUivPKf7.js.map → _basePickBy-DTJFxmut.js.map} +1 -1
  46. package/webapp/dist/assets/{_baseUniq-hcs024vD.js → _baseUniq-CVu4lo4P.js} +2 -2
  47. package/webapp/dist/assets/{_baseUniq-hcs024vD.js.map → _baseUniq-CVu4lo4P.js.map} +1 -1
  48. package/webapp/dist/assets/{arc-Dr6-FXp5.js → arc-4mEKx1Qr.js} +2 -2
  49. package/webapp/dist/assets/{arc-Dr6-FXp5.js.map → arc-4mEKx1Qr.js.map} +1 -1
  50. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DXqcDq4R.js → architectureDiagram-2XIMDMQ5-CmUkdSiN.js} +7 -7
  51. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DXqcDq4R.js.map → architectureDiagram-2XIMDMQ5-CmUkdSiN.js.map} +1 -1
  52. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-IIP6LGXS.js → blockDiagram-WCTKOSBZ-CijmZ89y.js} +7 -7
  53. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-IIP6LGXS.js.map → blockDiagram-WCTKOSBZ-CijmZ89y.js.map} +1 -1
  54. package/webapp/dist/assets/{c4Diagram-IC4MRINW-D_d3F9XD.js → c4Diagram-IC4MRINW-D0GcQMKs.js} +3 -3
  55. package/webapp/dist/assets/{c4Diagram-IC4MRINW-D_d3F9XD.js.map → c4Diagram-IC4MRINW-D0GcQMKs.js.map} +1 -1
  56. package/webapp/dist/assets/{channel-CWWjsXtU.js → channel-6pgfGez4.js} +2 -2
  57. package/webapp/dist/assets/{channel-CWWjsXtU.js.map → channel-6pgfGez4.js.map} +1 -1
  58. package/webapp/dist/assets/{chunk-4BX2VUAB-BF4yph2W.js → chunk-4BX2VUAB-BQDAaqXK.js} +2 -2
  59. package/webapp/dist/assets/{chunk-4BX2VUAB-BF4yph2W.js.map → chunk-4BX2VUAB-BQDAaqXK.js.map} +1 -1
  60. package/webapp/dist/assets/{chunk-55IACEB6-Hn3CmDYz.js → chunk-55IACEB6-DGYbZ_6j.js} +2 -2
  61. package/webapp/dist/assets/{chunk-55IACEB6-Hn3CmDYz.js.map → chunk-55IACEB6-DGYbZ_6j.js.map} +1 -1
  62. package/webapp/dist/assets/{chunk-FMBD7UC4-C05pl9Ov.js → chunk-FMBD7UC4-EVNnQ_SU.js} +2 -2
  63. package/webapp/dist/assets/{chunk-FMBD7UC4-C05pl9Ov.js.map → chunk-FMBD7UC4-EVNnQ_SU.js.map} +1 -1
  64. package/webapp/dist/assets/{chunk-JSJVCQXG-BVlq_BAS.js → chunk-JSJVCQXG-BSQe2NHw.js} +2 -2
  65. package/webapp/dist/assets/{chunk-JSJVCQXG-BVlq_BAS.js.map → chunk-JSJVCQXG-BSQe2NHw.js.map} +1 -1
  66. package/webapp/dist/assets/{chunk-KX2RTZJC-BQoaRWif.js → chunk-KX2RTZJC-I1LMYfrr.js} +2 -2
  67. package/webapp/dist/assets/{chunk-KX2RTZJC-BQoaRWif.js.map → chunk-KX2RTZJC-I1LMYfrr.js.map} +1 -1
  68. package/webapp/dist/assets/{chunk-NQ4KR5QH-0okCAXtW.js → chunk-NQ4KR5QH-C9HmN9dA.js} +4 -4
  69. package/webapp/dist/assets/{chunk-NQ4KR5QH-0okCAXtW.js.map → chunk-NQ4KR5QH-C9HmN9dA.js.map} +1 -1
  70. package/webapp/dist/assets/{chunk-QZHKN3VN-DEiprgz-.js → chunk-QZHKN3VN-73ijGXNd.js} +2 -2
  71. package/webapp/dist/assets/{chunk-QZHKN3VN-DEiprgz-.js.map → chunk-QZHKN3VN-73ijGXNd.js.map} +1 -1
  72. package/webapp/dist/assets/{chunk-WL4C6EOR-B-Xkb3lo.js → chunk-WL4C6EOR-DeVu-9ac.js} +6 -6
  73. package/webapp/dist/assets/{chunk-WL4C6EOR-B-Xkb3lo.js.map → chunk-WL4C6EOR-DeVu-9ac.js.map} +1 -1
  74. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DCCQrdwF.js → classDiagram-VBA2DB6C-2HURCFLk.js} +7 -7
  75. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DCCQrdwF.js.map → classDiagram-VBA2DB6C-2HURCFLk.js.map} +1 -1
  76. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DCCQrdwF.js → classDiagram-v2-RAHNMMFH-2HURCFLk.js} +7 -7
  77. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DCCQrdwF.js.map → classDiagram-v2-RAHNMMFH-2HURCFLk.js.map} +1 -1
  78. package/webapp/dist/assets/{clone-Drtik9pk.js → clone-BNPlfGMh.js} +2 -2
  79. package/webapp/dist/assets/{clone-Drtik9pk.js.map → clone-BNPlfGMh.js.map} +1 -1
  80. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BBWvHErL.js → cose-bilkent-S5V4N54A-BeoZCFA5.js} +2 -2
  81. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BBWvHErL.js.map → cose-bilkent-S5V4N54A-BeoZCFA5.js.map} +1 -1
  82. package/webapp/dist/assets/{dagre-KLK3FWXG-2qk0ikdt.js → dagre-KLK3FWXG-DYxCt50h.js} +7 -7
  83. package/webapp/dist/assets/{dagre-KLK3FWXG-2qk0ikdt.js.map → dagre-KLK3FWXG-DYxCt50h.js.map} +1 -1
  84. package/webapp/dist/assets/{diagram-E7M64L7V-C1DbHDbf.js → diagram-E7M64L7V-BWxcTI3B.js} +8 -8
  85. package/webapp/dist/assets/{diagram-E7M64L7V-C1DbHDbf.js.map → diagram-E7M64L7V-BWxcTI3B.js.map} +1 -1
  86. package/webapp/dist/assets/{diagram-IFDJBPK2-DToz8zk9.js → diagram-IFDJBPK2-BAIPE4Rn.js} +7 -7
  87. package/webapp/dist/assets/{diagram-IFDJBPK2-DToz8zk9.js.map → diagram-IFDJBPK2-BAIPE4Rn.js.map} +1 -1
  88. package/webapp/dist/assets/{diagram-P4PSJMXO-B9V-tQMe.js → diagram-P4PSJMXO-CvcxPsVp.js} +7 -7
  89. package/webapp/dist/assets/{diagram-P4PSJMXO-B9V-tQMe.js.map → diagram-P4PSJMXO-CvcxPsVp.js.map} +1 -1
  90. package/webapp/dist/assets/{erDiagram-INFDFZHY-CV68FwGf.js → erDiagram-INFDFZHY-BDO90e-f.js} +5 -5
  91. package/webapp/dist/assets/{erDiagram-INFDFZHY-CV68FwGf.js.map → erDiagram-INFDFZHY-BDO90e-f.js.map} +1 -1
  92. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CW06almb.js → flowDiagram-PKNHOUZH-hd4TorKR.js} +7 -7
  93. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CW06almb.js.map → flowDiagram-PKNHOUZH-hd4TorKR.js.map} +1 -1
  94. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C96NncCU.js → ganttDiagram-A5KZAMGK-mID1sFSl.js} +3 -3
  95. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C96NncCU.js.map → ganttDiagram-A5KZAMGK-mID1sFSl.js.map} +1 -1
  96. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CAuIexWi.js → gitGraphDiagram-K3NZZRJ6-DaA7yodM.js} +8 -8
  97. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CAuIexWi.js.map → gitGraphDiagram-K3NZZRJ6-DaA7yodM.js.map} +1 -1
  98. package/webapp/dist/assets/{graph-CvhwAY6w.js → graph-B86JxOkQ.js} +3 -3
  99. package/webapp/dist/assets/{graph-CvhwAY6w.js.map → graph-B86JxOkQ.js.map} +1 -1
  100. package/webapp/dist/assets/{index-BOO_zFrI.js → index-DYO4ZL8y.js} +369 -389
  101. package/webapp/dist/assets/{index-BOO_zFrI.js.map → index-DYO4ZL8y.js.map} +1 -1
  102. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-C16Sckpz.js → infoDiagram-LFFYTUFH-DxF36W9g.js} +6 -6
  103. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-C16Sckpz.js.map → infoDiagram-LFFYTUFH-DxF36W9g.js.map} +1 -1
  104. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oNG6I0p3.js → ishikawaDiagram-PHBUUO56-wvAzRzSO.js} +2 -2
  105. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oNG6I0p3.js.map → ishikawaDiagram-PHBUUO56-wvAzRzSO.js.map} +1 -1
  106. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-437hhFHC.js → journeyDiagram-4ABVD52K-CIBXsttK.js} +5 -5
  107. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-437hhFHC.js.map → journeyDiagram-4ABVD52K-CIBXsttK.js.map} +1 -1
  108. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-DsCV_Tpx.js → kanban-definition-K7BYSVSG-DQTPyM5m.js} +3 -3
  109. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-DsCV_Tpx.js.map → kanban-definition-K7BYSVSG-DQTPyM5m.js.map} +1 -1
  110. package/webapp/dist/assets/{layout-BttZf7fQ.js → layout-BG7IzQAG.js} +5 -5
  111. package/webapp/dist/assets/{layout-BttZf7fQ.js.map → layout-BG7IzQAG.js.map} +1 -1
  112. package/webapp/dist/assets/{linear-B75vD4Ho.js → linear-5XR-mXYw.js} +2 -2
  113. package/webapp/dist/assets/{linear-B75vD4Ho.js.map → linear-5XR-mXYw.js.map} +1 -1
  114. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DA1-XaNi.js → mindmap-definition-YRQLILUH-BwTQE6uN.js} +4 -4
  115. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DA1-XaNi.js.map → mindmap-definition-YRQLILUH-BwTQE6uN.js.map} +1 -1
  116. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Bx6hUJ4Q.js → pieDiagram-SKSYHLDU-ZYB35zd5.js} +8 -8
  117. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Bx6hUJ4Q.js.map → pieDiagram-SKSYHLDU-ZYB35zd5.js.map} +1 -1
  118. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-zyduIle0.js → quadrantDiagram-337W2JSQ-BM041Q-W.js} +3 -3
  119. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-zyduIle0.js.map → quadrantDiagram-337W2JSQ-BM041Q-W.js.map} +1 -1
  120. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-BgfjyEJM.js → requirementDiagram-Z7DCOOCP-r_xMoroM.js} +4 -4
  121. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-BgfjyEJM.js.map → requirementDiagram-Z7DCOOCP-r_xMoroM.js.map} +1 -1
  122. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-lmOWaczS.js → sankeyDiagram-WA2Y5GQK-Ju2-t24N.js} +2 -2
  123. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-lmOWaczS.js.map → sankeyDiagram-WA2Y5GQK-Ju2-t24N.js.map} +1 -1
  124. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqJz-iYI.js → sequenceDiagram-2WXFIKYE-D83Bocd1.js} +4 -4
  125. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqJz-iYI.js.map → sequenceDiagram-2WXFIKYE-D83Bocd1.js.map} +1 -1
  126. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CngWYuX-.js → stateDiagram-RAJIS63D-mTmpZzpU.js} +9 -9
  127. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CngWYuX-.js.map → stateDiagram-RAJIS63D-mTmpZzpU.js.map} +1 -1
  128. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BxyHvrvU.js → stateDiagram-v2-FVOUBMTO-BCn7mFeH.js} +5 -5
  129. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BxyHvrvU.js.map → stateDiagram-v2-FVOUBMTO-BCn7mFeH.js.map} +1 -1
  130. package/webapp/dist/assets/{timeline-definition-YZTLITO2-C7t6WVS3.js → timeline-definition-YZTLITO2-C1QBcYz8.js} +3 -3
  131. package/webapp/dist/assets/{timeline-definition-YZTLITO2-C7t6WVS3.js.map → timeline-definition-YZTLITO2-C1QBcYz8.js.map} +1 -1
  132. package/webapp/dist/assets/{treemap-KZPCXAKY-BDZ3n5TC.js → treemap-KZPCXAKY-BEyfK-Fo.js} +5 -5
  133. package/webapp/dist/assets/{treemap-KZPCXAKY-BDZ3n5TC.js.map → treemap-KZPCXAKY-BEyfK-Fo.js.map} +1 -1
  134. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CEw7GPed.js → vennDiagram-LZ73GAT5-C6SZhLMq.js} +2 -2
  135. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CEw7GPed.js.map → vennDiagram-LZ73GAT5-C6SZhLMq.js.map} +1 -1
  136. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DmS8BiaA.js → xychartDiagram-JWTSCODW-BUlvexnm.js} +3 -3
  137. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DmS8BiaA.js.map → xychartDiagram-JWTSCODW-BUlvexnm.js.map} +1 -1
  138. package/webapp/dist/index.html +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-2qk0ikdt.js","assets/graph-CvhwAY6w.js","assets/_baseUniq-hcs024vD.js","assets/layout-BttZf7fQ.js","assets/_basePickBy-DUivPKf7.js","assets/clone-Drtik9pk.js","assets/cose-bilkent-S5V4N54A-BBWvHErL.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-D_d3F9XD.js","assets/chunk-JSJVCQXG-BVlq_BAS.js","assets/flowDiagram-PKNHOUZH-CW06almb.js","assets/chunk-FMBD7UC4-C05pl9Ov.js","assets/chunk-55IACEB6-Hn3CmDYz.js","assets/chunk-KX2RTZJC-BQoaRWif.js","assets/channel-CWWjsXtU.js","assets/erDiagram-INFDFZHY-CV68FwGf.js","assets/gitGraphDiagram-K3NZZRJ6-CAuIexWi.js","assets/chunk-4BX2VUAB-BF4yph2W.js","assets/chunk-QZHKN3VN-DEiprgz-.js","assets/treemap-KZPCXAKY-BDZ3n5TC.js","assets/ganttDiagram-A5KZAMGK-C96NncCU.js","assets/linear-B75vD4Ho.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-C16Sckpz.js","assets/pieDiagram-SKSYHLDU-Bx6hUJ4Q.js","assets/arc-Dr6-FXp5.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-zyduIle0.js","assets/xychartDiagram-JWTSCODW-DmS8BiaA.js","assets/requirementDiagram-Z7DCOOCP-BgfjyEJM.js","assets/sequenceDiagram-2WXFIKYE-DqJz-iYI.js","assets/classDiagram-VBA2DB6C-DCCQrdwF.js","assets/chunk-WL4C6EOR-B-Xkb3lo.js","assets/classDiagram-v2-RAHNMMFH-DCCQrdwF.js","assets/stateDiagram-RAJIS63D-CngWYuX-.js","assets/chunk-NQ4KR5QH-0okCAXtW.js","assets/stateDiagram-v2-FVOUBMTO-BxyHvrvU.js","assets/journeyDiagram-4ABVD52K-437hhFHC.js","assets/timeline-definition-YZTLITO2-C7t6WVS3.js","assets/mindmap-definition-YRQLILUH-DA1-XaNi.js","assets/kanban-definition-K7BYSVSG-DsCV_Tpx.js","assets/sankeyDiagram-WA2Y5GQK-lmOWaczS.js","assets/diagram-P4PSJMXO-B9V-tQMe.js","assets/diagram-IFDJBPK2-DToz8zk9.js","assets/blockDiagram-WCTKOSBZ-IIP6LGXS.js","assets/architectureDiagram-2XIMDMQ5-DXqcDq4R.js","assets/diagram-E7M64L7V-C1DbHDbf.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-DYxCt50h.js","assets/graph-B86JxOkQ.js","assets/_baseUniq-CVu4lo4P.js","assets/layout-BG7IzQAG.js","assets/_basePickBy-DTJFxmut.js","assets/clone-BNPlfGMh.js","assets/cose-bilkent-S5V4N54A-BeoZCFA5.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-D0GcQMKs.js","assets/chunk-JSJVCQXG-BSQe2NHw.js","assets/flowDiagram-PKNHOUZH-hd4TorKR.js","assets/chunk-FMBD7UC4-EVNnQ_SU.js","assets/chunk-55IACEB6-DGYbZ_6j.js","assets/chunk-KX2RTZJC-I1LMYfrr.js","assets/channel-6pgfGez4.js","assets/erDiagram-INFDFZHY-BDO90e-f.js","assets/gitGraphDiagram-K3NZZRJ6-DaA7yodM.js","assets/chunk-4BX2VUAB-BQDAaqXK.js","assets/chunk-QZHKN3VN-73ijGXNd.js","assets/treemap-KZPCXAKY-BEyfK-Fo.js","assets/ganttDiagram-A5KZAMGK-mID1sFSl.js","assets/linear-5XR-mXYw.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-DxF36W9g.js","assets/pieDiagram-SKSYHLDU-ZYB35zd5.js","assets/arc-4mEKx1Qr.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-BM041Q-W.js","assets/xychartDiagram-JWTSCODW-BUlvexnm.js","assets/requirementDiagram-Z7DCOOCP-r_xMoroM.js","assets/sequenceDiagram-2WXFIKYE-D83Bocd1.js","assets/classDiagram-VBA2DB6C-2HURCFLk.js","assets/chunk-WL4C6EOR-DeVu-9ac.js","assets/classDiagram-v2-RAHNMMFH-2HURCFLk.js","assets/stateDiagram-RAJIS63D-mTmpZzpU.js","assets/chunk-NQ4KR5QH-C9HmN9dA.js","assets/stateDiagram-v2-FVOUBMTO-BCn7mFeH.js","assets/journeyDiagram-4ABVD52K-CIBXsttK.js","assets/timeline-definition-YZTLITO2-C1QBcYz8.js","assets/mindmap-definition-YRQLILUH-BwTQE6uN.js","assets/kanban-definition-K7BYSVSG-DQTPyM5m.js","assets/sankeyDiagram-WA2Y5GQK-Ju2-t24N.js","assets/diagram-P4PSJMXO-CvcxPsVp.js","assets/diagram-IFDJBPK2-BAIPE4Rn.js","assets/blockDiagram-WCTKOSBZ-CijmZ89y.js","assets/architectureDiagram-2XIMDMQ5-CmUkdSiN.js","assets/diagram-E7M64L7V-BWxcTI3B.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);
@@ -458,6 +458,7 @@ function getUiStrings(language2) {
458
458
  retryCountdownPrefix: "将在 ",
459
459
  retryCountdownSuffix: " 后重试。",
460
460
  invalidMessageFormatToast: "收到无效消息格式,请刷新页面。",
461
+ copyFailedToast: "复制失败 / Copy failed.",
461
462
  linkCopiedToast: "链接已复制。",
462
463
  linkCopyFailedToast: "复制链接失败。",
463
464
  forkDialogFailedToast: "Fork 对话失败。",
@@ -626,8 +627,8 @@ function getUiStrings(language2) {
626
627
  setupWriteRcWrite: "写入",
627
628
  setupWriteRcOverwrite: "覆盖",
628
629
  setupFileModalLoading: "加载中…",
629
- setupFileModalSelectToCopy: "可直接选择复制,或点击“复制”按钮。",
630
- setupFileModalCopy: "复制",
630
+ setupFileModalSelectToCopy: "可直接选择复制,或点击“复制 / Copy”按钮。",
631
+ setupFileModalCopy: "复制 / Copy",
631
632
  setupSelectProviderModelFirst: "请先选择提供商与模型。",
632
633
  setupSelectProminentModelParamsFirst: "请先为 prominent 模型参数选择取值。",
633
634
  setupProminentModelParamUnset: "留空(不设置)",
@@ -854,6 +855,7 @@ function getUiStrings(language2) {
854
855
  retryCountdownPrefix: "Retrying in ",
855
856
  retryCountdownSuffix: ".",
856
857
  invalidMessageFormatToast: "Received invalid message format. Please refresh the page.",
858
+ copyFailedToast: "复制失败 / Copy failed.",
857
859
  linkCopiedToast: "Link copied.",
858
860
  linkCopyFailedToast: "Failed to copy link.",
859
861
  forkDialogFailedToast: "Failed to fork dialog.",
@@ -1022,8 +1024,8 @@ function getUiStrings(language2) {
1022
1024
  setupWriteRcWrite: "Write",
1023
1025
  setupWriteRcOverwrite: "Overwrite",
1024
1026
  setupFileModalLoading: "Loading…",
1025
- setupFileModalSelectToCopy: "Select to copy, or use the Copy button.",
1026
- setupFileModalCopy: "Copy",
1027
+ setupFileModalSelectToCopy: "可直接选择复制,或点击“复制 / Copy”按钮。",
1028
+ setupFileModalCopy: "复制 / Copy",
1027
1029
  setupSelectProviderModelFirst: "Please select a provider and model first.",
1028
1030
  setupSelectProminentModelParamsFirst: "Please select values for prominent model params first.",
1029
1031
  setupProminentModelParamUnset: "Leave unset",
@@ -5560,6 +5562,294 @@ class CreateDialogFlowController {
5560
5562
  return `create-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
5561
5563
  }
5562
5564
  }
5565
+ const MANUAL_COPY_MODAL_ATTR = "data-dominds-manual-copy-modal";
5566
+ const MANUAL_COPY_TEXTS = {
5567
+ title: "需要手动复制 / Manual copy required",
5568
+ close: "关闭 / Close",
5569
+ selectAll: "全选文本 / Select all text",
5570
+ insecureHttpMessages: {
5571
+ zh: "当前页面通过 HTTP 非 localhost 地址访问,浏览器不会开放剪贴板权限。请在下方只读文本框中手动全选并复制。",
5572
+ en: "This page is loaded over HTTP from a non-localhost address, so the browser does not expose clipboard access. Select and copy the read-only text below manually."
5573
+ },
5574
+ unavailableMessages: {
5575
+ zh: "浏览器当前没有开放剪贴板写入权限。请在下方只读文本框中手动全选并复制。",
5576
+ en: "The browser has not granted clipboard write access. Select and copy the read-only text below manually."
5577
+ }
5578
+ };
5579
+ const manualCopyModalCleanups = /* @__PURE__ */ new WeakMap();
5580
+ function escapeHtmlText$2(value) {
5581
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
5582
+ }
5583
+ function isLocalClipboardHost(hostname) {
5584
+ const loopbackIpv4Match = /^127(?:\.\d{1,3}){3}$/.test(hostname);
5585
+ return hostname === "localhost" || hostname.endsWith(".localhost") || loopbackIpv4Match || hostname === "::1" || hostname === "[::1]";
5586
+ }
5587
+ function getManualCopyMessageHtml() {
5588
+ const insecureHttp = window.location.protocol === "http:" && !isLocalClipboardHost(window.location.hostname);
5589
+ const messages = insecureHttp ? MANUAL_COPY_TEXTS.insecureHttpMessages : MANUAL_COPY_TEXTS.unavailableMessages;
5590
+ return `
5591
+ <p class="manual-copy-message" id="manual-copy-message-zh" lang="zh">${escapeHtmlText$2(messages.zh)}</p>
5592
+ <p class="manual-copy-message" id="manual-copy-message-en" lang="en">${escapeHtmlText$2(messages.en)}</p>
5593
+ `;
5594
+ }
5595
+ async function copyTextToClipboard(text2, restoreFocusTo) {
5596
+ if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
5597
+ try {
5598
+ await navigator.clipboard.writeText(text2);
5599
+ return true;
5600
+ } catch {
5601
+ }
5602
+ }
5603
+ try {
5604
+ if (!document.body) return false;
5605
+ const ta = document.createElement("textarea");
5606
+ const previousActiveElement = document.activeElement;
5607
+ try {
5608
+ ta.value = text2;
5609
+ ta.setAttribute("readonly", "true");
5610
+ ta.style.position = "fixed";
5611
+ ta.style.left = "-9999px";
5612
+ ta.style.top = "0";
5613
+ ta.style.opacity = "0";
5614
+ document.body.appendChild(ta);
5615
+ ta.focus();
5616
+ ta.select();
5617
+ ta.setSelectionRange(0, ta.value.length);
5618
+ const ok = document.execCommand("copy");
5619
+ return ok === true;
5620
+ } finally {
5621
+ ta.remove();
5622
+ const focusTarget = restoreFocusTo ?? (previousActiveElement instanceof HTMLElement ? previousActiveElement : null);
5623
+ if (focusTarget !== null && focusTarget.isConnected) {
5624
+ focusTarget.focus();
5625
+ }
5626
+ }
5627
+ } catch {
5628
+ return false;
5629
+ }
5630
+ }
5631
+ async function copyTextOrShowManualCopy(text2, restoreFocusTo) {
5632
+ const ok = await copyTextToClipboard(text2, restoreFocusTo);
5633
+ if (ok) return { kind: "copied" };
5634
+ showManualCopyModal(text2, restoreFocusTo);
5635
+ return { kind: "manual_copy_shown" };
5636
+ }
5637
+ function showManualCopyModal(text2, restoreFocusTo) {
5638
+ const existing = document.querySelector(`[${MANUAL_COPY_MODAL_ATTR}="true"]`);
5639
+ if (existing instanceof HTMLElement) {
5640
+ const cleanup = manualCopyModalCleanups.get(existing);
5641
+ if (cleanup) {
5642
+ cleanup();
5643
+ } else {
5644
+ existing.remove();
5645
+ }
5646
+ }
5647
+ const modal = document.createElement("div");
5648
+ modal.dataset.domindsManualCopyModal = "true";
5649
+ modal.innerHTML = `
5650
+ <style>
5651
+ ${ICON_MASK_BASE_CSS}
5652
+ [${MANUAL_COPY_MODAL_ATTR}="true"] {
5653
+ position: fixed;
5654
+ inset: 0;
5655
+ z-index: 10000;
5656
+ display: flex;
5657
+ align-items: center;
5658
+ justify-content: center;
5659
+ padding: 20px;
5660
+ min-height: 0;
5661
+ box-sizing: border-box;
5662
+ font-family: var(--dominds-font-family, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
5663
+ }
5664
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-backdrop {
5665
+ position: absolute;
5666
+ inset: 0;
5667
+ background: rgba(0, 0, 0, 0.38);
5668
+ }
5669
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-dialog {
5670
+ position: relative;
5671
+ z-index: 1;
5672
+ width: min(720px, 100%);
5673
+ max-height: calc(100vh - 40px);
5674
+ display: flex;
5675
+ flex-direction: column;
5676
+ background: var(--dominds-bg-secondary, var(--color-bg-secondary, #ffffff));
5677
+ color: var(--dominds-fg, var(--color-fg-primary, #242424));
5678
+ border: 1px solid var(--dominds-border, var(--color-border-primary, #d6d6d6));
5679
+ border-radius: 8px;
5680
+ box-shadow: 0 18px 54px rgba(0, 0, 0, 0.22);
5681
+ overflow: hidden;
5682
+ }
5683
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-header {
5684
+ display: flex;
5685
+ align-items: center;
5686
+ justify-content: space-between;
5687
+ gap: 12px;
5688
+ padding: 12px 14px;
5689
+ border-bottom: 1px solid var(--dominds-border, var(--color-border-primary, #e5e5e5));
5690
+ background: var(--color-bg-tertiary, #f6f6f6);
5691
+ }
5692
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-title {
5693
+ margin: 0;
5694
+ font-size: 14px;
5695
+ line-height: 1.35;
5696
+ font-weight: 650;
5697
+ }
5698
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-close {
5699
+ width: 28px;
5700
+ height: 28px;
5701
+ border: 1px solid var(--dominds-border, var(--color-border-primary, #d6d6d6));
5702
+ border-radius: 6px;
5703
+ padding: 0;
5704
+ display: inline-flex;
5705
+ align-items: center;
5706
+ justify-content: center;
5707
+ background: transparent;
5708
+ color: inherit;
5709
+ cursor: pointer;
5710
+ }
5711
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-close .icon-mask {
5712
+ width: 14px;
5713
+ height: 14px;
5714
+ --icon-mask: ${ICON_MASK_URLS.close};
5715
+ }
5716
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-close:hover,
5717
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-close:focus-visible {
5718
+ border-color: var(--dominds-primary, var(--color-accent-primary, #005fb8));
5719
+ outline: none;
5720
+ }
5721
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-body {
5722
+ display: flex;
5723
+ flex-direction: column;
5724
+ gap: 10px;
5725
+ flex: 1 1 auto;
5726
+ min-height: 0;
5727
+ padding: 14px;
5728
+ overflow: hidden;
5729
+ }
5730
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-message {
5731
+ margin: 0;
5732
+ color: var(--dominds-muted, var(--color-fg-secondary, #525252));
5733
+ font-size: 13px;
5734
+ line-height: 1.45;
5735
+ }
5736
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-text {
5737
+ width: 100%;
5738
+ min-height: min(260px, 42vh);
5739
+ box-sizing: border-box;
5740
+ flex: 1 1 auto;
5741
+ resize: vertical;
5742
+ padding: 10px;
5743
+ border: 1px solid var(--dominds-border, var(--color-border-primary, #d6d6d6));
5744
+ border-radius: 6px;
5745
+ background: var(--dominds-bg, var(--color-bg-primary, #fbfbfb));
5746
+ color: var(--dominds-fg, var(--color-fg-primary, #242424));
5747
+ font: 12px/1.45 ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
5748
+ white-space: pre;
5749
+ }
5750
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-footer {
5751
+ display: flex;
5752
+ justify-content: flex-end;
5753
+ padding: 0 14px 14px;
5754
+ }
5755
+ [${MANUAL_COPY_MODAL_ATTR}="true"] .manual-copy-select {
5756
+ border: 1px solid var(--dominds-primary, var(--color-accent-primary, #005fb8));
5757
+ border-radius: 6px;
5758
+ background: var(--dominds-primary, var(--color-accent-primary, #005fb8));
5759
+ color: #ffffff;
5760
+ padding: 6px 12px;
5761
+ font-size: 13px;
5762
+ cursor: pointer;
5763
+ }
5764
+ </style>
5765
+ <div class="manual-copy-backdrop"></div>
5766
+ <div class="manual-copy-dialog" role="dialog" aria-modal="true" aria-labelledby="manual-copy-title" aria-describedby="manual-copy-message-zh manual-copy-message-en">
5767
+ <div class="manual-copy-header">
5768
+ <h3 class="manual-copy-title" id="manual-copy-title">${escapeHtmlText$2(MANUAL_COPY_TEXTS.title)}</h3>
5769
+ <button class="manual-copy-close" type="button" aria-label="${escapeHtmlText$2(MANUAL_COPY_TEXTS.close)}" title="${escapeHtmlText$2(MANUAL_COPY_TEXTS.close)}">
5770
+ <span class="icon-mask" aria-hidden="true"></span>
5771
+ </button>
5772
+ </div>
5773
+ <div class="manual-copy-body">
5774
+ ${getManualCopyMessageHtml()}
5775
+ <textarea class="manual-copy-text" readonly spellcheck="false"></textarea>
5776
+ </div>
5777
+ <div class="manual-copy-footer">
5778
+ <button class="manual-copy-select" type="button">${escapeHtmlText$2(MANUAL_COPY_TEXTS.selectAll)}</button>
5779
+ </div>
5780
+ </div>
5781
+ `;
5782
+ const close2 = () => {
5783
+ document.removeEventListener("keydown", onDocumentKeydown, true);
5784
+ manualCopyModalCleanups.delete(modal);
5785
+ modal.remove();
5786
+ if (restoreFocusTo !== null && restoreFocusTo.isConnected) {
5787
+ restoreFocusTo.focus();
5788
+ }
5789
+ };
5790
+ const closeButton = modal.querySelector(".manual-copy-close");
5791
+ const backdrop = modal.querySelector(".manual-copy-backdrop");
5792
+ const selectButton = modal.querySelector(".manual-copy-select");
5793
+ const textarea = modal.querySelector(".manual-copy-text");
5794
+ if (!(closeButton instanceof HTMLButtonElement)) {
5795
+ throw new Error("Manual copy modal close button missing.");
5796
+ }
5797
+ if (!(backdrop instanceof HTMLElement)) {
5798
+ throw new Error("Manual copy modal backdrop missing.");
5799
+ }
5800
+ if (!(selectButton instanceof HTMLButtonElement)) {
5801
+ throw new Error("Manual copy modal select button missing.");
5802
+ }
5803
+ if (!(textarea instanceof HTMLTextAreaElement)) {
5804
+ throw new Error("Manual copy modal textarea missing.");
5805
+ }
5806
+ const closeButtonEl = closeButton;
5807
+ const backdropEl = backdrop;
5808
+ const selectButtonEl = selectButton;
5809
+ const textareaEl = textarea;
5810
+ textareaEl.value = text2;
5811
+ const selectText = () => {
5812
+ textareaEl.focus();
5813
+ textareaEl.select();
5814
+ };
5815
+ function onDocumentKeydown(event) {
5816
+ if (event.key === "Escape") {
5817
+ event.preventDefault();
5818
+ close2();
5819
+ return;
5820
+ }
5821
+ if (event.key !== "Tab") return;
5822
+ const focusableElements = [closeButtonEl, textareaEl, selectButtonEl];
5823
+ const activeElement = document.activeElement;
5824
+ const first = focusableElements[0];
5825
+ const last = focusableElements[focusableElements.length - 1];
5826
+ if (activeElement !== closeButtonEl && activeElement !== textareaEl && activeElement !== selectButtonEl) {
5827
+ event.preventDefault();
5828
+ if (event.shiftKey) {
5829
+ last.focus();
5830
+ } else {
5831
+ first.focus();
5832
+ }
5833
+ return;
5834
+ }
5835
+ if (event.shiftKey && activeElement === first) {
5836
+ event.preventDefault();
5837
+ last.focus();
5838
+ return;
5839
+ }
5840
+ if (!event.shiftKey && activeElement === last) {
5841
+ event.preventDefault();
5842
+ first.focus();
5843
+ }
5844
+ }
5845
+ closeButtonEl.addEventListener("click", close2);
5846
+ backdropEl.addEventListener("click", close2);
5847
+ selectButtonEl.addEventListener("click", selectText);
5848
+ document.addEventListener("keydown", onDocumentKeydown, true);
5849
+ manualCopyModalCleanups.set(modal, close2);
5850
+ document.body.appendChild(modal);
5851
+ selectText();
5852
+ }
5563
5853
  var storageExports = requireStorage();
5564
5854
  const mannedToolIcon = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20122.88%20120.92'%20style='enable-background:new%200%200%20122.88%20120.92'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0{fill-rule:evenodd;clip-rule:evenodd;}%3c/style%3e%3cg%20transform='scale(0.8)%20translate(15,%2015)'%3e%3cpath%20class='st0'%20d='M117.32,101.23c0.8-2.32,1.23-4.81,1.23-7.39c0-6.28-2.55-11.97-6.67-16.09c-4.12-4.12-9.81-6.66-16.09-6.66%20c-6.28,0-11.97,2.55-16.09,6.66c-4.12,4.12-6.66,9.81-6.66,16.09c0,6.28,2.55,11.97,6.66,16.09c4.12,4.12,9.81,6.66,16.09,6.66%20c5.75,0,11-2.13,15.01-5.65C113.74,108.36,116.05,104.93,117.32,101.23L117.32,101.23z%20M86.36,96.38%20c-2.05,0.37-4.05,1.07-5.14,3.79c-0.71,1.76-0.54,3.89,0.35,5.82c2.42-7.38,10.92-3.02,5.45,3.34c4,0.2,6.53-2.6,6.93-6.37%20c0.19-1.78,0.34-2.74,0.73-3.51c0.21-0.42,0.5-0.78,0.89-1.2c1.31-1.44,2.77-2.7,4.2-4.19c2.69-2.81,8.42-0.22,10.61-5.72%20c0.71-1.76,0.54-3.89-0.35-5.82c-2.42,7.38-10.92,3.02-5.45-3.34c-4-0.2-6.53,2.6-6.93,6.37c-0.17,1.66,0.12,3.07-1.72,4.96%20c-1.29,1.29-2.66,2.61-3.99,3.87c-0.52,0.51-0.9,0.81-1.35,1.03c-0.8,0.4-1.78,0.52-4.22,0.95L86.36,96.38L86.36,96.38z%20M86.25,23.86l-0.03,0.09c-6.47-1.21-15.81-1.84-25.66-1.72c-9.96,0.11-20.49,0.98-29.17,2.76l-0.01-0.04%20C23.81-10.65,96.24-5.56,86.25,23.86L86.25,23.86z%20M44.15,62.42c-4.4,3.08-8.99,4.22-13.47,5.05l6.41,18.16h32.89%20c-0.82,2.59-1.27,5.35-1.27,8.21c0,7.48,3.03,14.25,7.93,19.15c4.9,4.9,11.67,7.93,19.15,7.93c7.48,0,14.25-3.03,19.15-7.93%20c5.15-5.15,7.93-11.84,7.93-19.15c0-7.48-3.03-14.25-7.93-19.15c-4.9-4.9-11.67-7.93-19.15-7.93c-2.32,0-4.57,0.29-6.72,0.84%20c-3.97-0.4-8.09-0.72-11.02-2.24c-1.34-0.83-2.51-1.99-3.59-3.46l-0.19-3c1.04-0.85,2.04-1.85,2.89-2.96%20c1.93-2.41,2.67-4.89,3.59-8.04c0.19-0.67,0.37-1.33,0.59-2c1.82-0.19,3.41-2.22,4.37-4.74c0.52-1.41,0.93-3,1.04-4.41%20c0.15-1.48,0-2.85-0.52-3.78c-0.41-0.74-1.04-1.22-1.89-1.3c-0.06-0.74,0.27-2.31,0.72-3.98c-6.13-1.1-15.03-1.67-24.5-1.56%20c-9.72,0.11-19.99,0.95-28.4,2.69l0.82,3.93c-0.63,1.04-0.78,2.67-0.59,4.41c0.19,1.7,0.7,3.48,1.45,4.97%20c0.96,1.89,2.33,3.22,3.93,3.22c0.15,0.44,0.33,0.93,0.48,1.41c1.3,3.82,2.26,6.71,4.59,9.45c0.67,0.82,1.41,1.56,2.19,2.22%20l-0.19,3.37C44.63,62,44.39,62.21,44.15,62.42L44.15,62.42z%20M71.94,60.07c-4.18,2.79-6.73,4.32-12.14,4.19%20c-5.26-0.08-8.01-1.86-12.22-4.52C47.26,77.31,72.37,78.36,71.94,60.07L71.94,60.07z%20M78.21,47.33c0.22-0.78,0.48-1.59,0.78-2.56%20c0.11-0.41,0.52-0.7,0.93-0.63c1.22,0.22,2.45-1.56,3.3-3.71c0.48-1.3,0.85-2.7,0.96-3.96c0.11-1.19,0-2.22-0.33-2.85%20c-0.33-0.61-1.25-0.26-1.93-0.85c-3.51,9.31-34.11,13.52-46.63,0.7c-0.44,0.7-0.52,1.96-0.37,3.37c0.19,1.48,0.63,3.11,1.3,4.41%20c0.78,1.52,1.78,2.56,2.78,2.3c0.41-0.11,0.85,0.11,1,0.52c0.3,0.82,0.48,1.45,0.7,2.07C47.18,65.2,71.84,66.69,78.21,47.33%20L78.21,47.33z%20M28.14,91.38c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63c-1.45,0-2.63-1.18-2.63-2.63%20C25.52,92.56,26.69,91.38,28.14,91.38L28.14,91.38z%20M23.25,68.84C14.98,70.72,7.71,74.8,3.63,92.75L0,106.64h19.67V89.45%20c0-2.11,1.72-3.83,3.83-3.83h4.09C27.42,78.97,24.1,71.99,23.25,68.84L23.25,68.84z'/%3e%3c/g%3e%3c/svg%3e";
5565
5855
  const {
@@ -64281,25 +64571,6 @@ function setupUpwardProgressiveExpandBehavior(options) {
64281
64571
  };
64282
64572
  }
64283
64573
  const DOMINDS_CODE_BLOCK_CODE_ATTR = "data-code";
64284
- const MANUAL_COPY_TEXTS = {
64285
- zh: {
64286
- copyCode: "复制代码",
64287
- title: "需要手动复制",
64288
- close: "关闭",
64289
- selectAll: "全选文本",
64290
- insecureHttpMessage: "当前页面通过 HTTP 非 localhost 地址访问,浏览器不会开放剪贴板权限。请在下方只读文本框中手动全选并复制。",
64291
- unavailableMessage: "浏览器当前没有开放剪贴板写入权限。请在下方只读文本框中手动全选并复制。"
64292
- },
64293
- en: {
64294
- copyCode: "Copy code",
64295
- title: "Manual copy required",
64296
- close: "Close",
64297
- selectAll: "Select all",
64298
- insecureHttpMessage: "This page is loaded over HTTP from a non-localhost address, so the browser does not expose clipboard access. Select and copy the read-only text below manually.",
64299
- unavailableMessage: "The browser has not granted clipboard write access. Select and copy the read-only text below manually."
64300
- }
64301
- };
64302
- const manualCopyModalCleanups = /* @__PURE__ */ new WeakMap();
64303
64574
  function encodeDomindsCodeBlockDataCode(code2) {
64304
64575
  return encodeURIComponent(code2);
64305
64576
  }
@@ -64317,250 +64588,11 @@ function toLanguageClassToken(language2) {
64317
64588
  const token2 = language2.replace(/[^A-Za-z0-9_-]/g, "-").replace(/^-+|-+$/g, "");
64318
64589
  return token2.length > 0 ? token2 : "plaintext";
64319
64590
  }
64320
- function isLocalClipboardHost(hostname) {
64321
- const loopbackIpv4Match = /^127(?:\.\d{1,3}){3}$/.test(hostname);
64322
- return hostname === "localhost" || hostname.endsWith(".localhost") || loopbackIpv4Match || hostname === "::1" || hostname === "[::1]";
64323
- }
64324
- function getManualCopyTexts(language2) {
64325
- return language2.toLowerCase().startsWith("zh") ? MANUAL_COPY_TEXTS.zh : MANUAL_COPY_TEXTS.en;
64326
- }
64327
64591
  function getElementLanguage(element) {
64328
64592
  const langElement = element.closest("[lang]");
64329
64593
  if (!(langElement instanceof Element)) return "en";
64330
64594
  return langElement.getAttribute("lang") ?? "en";
64331
64595
  }
64332
- function getManualCopyMessage(texts) {
64333
- if (window.location.protocol === "http:" && !isLocalClipboardHost(window.location.hostname)) {
64334
- return texts.insecureHttpMessage;
64335
- }
64336
- return texts.unavailableMessage;
64337
- }
64338
- function showManualCopyModal(text2, language2, restoreFocusTo) {
64339
- const texts = getManualCopyTexts(language2);
64340
- const existing = document.querySelector('[data-dominds-manual-copy-modal="true"]');
64341
- if (existing instanceof HTMLElement) {
64342
- const cleanup = manualCopyModalCleanups.get(existing);
64343
- if (cleanup) {
64344
- cleanup();
64345
- } else {
64346
- existing.remove();
64347
- }
64348
- }
64349
- const modal = document.createElement("div");
64350
- modal.dataset.domindsManualCopyModal = "true";
64351
- modal.innerHTML = `
64352
- <style>
64353
- ${ICON_MASK_BASE_CSS}
64354
- [data-dominds-manual-copy-modal="true"] {
64355
- position: fixed;
64356
- inset: 0;
64357
- z-index: 10000;
64358
- display: flex;
64359
- align-items: center;
64360
- justify-content: center;
64361
- padding: 20px;
64362
- min-height: 0;
64363
- box-sizing: border-box;
64364
- font-family: var(--dominds-font-family, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
64365
- }
64366
- [data-dominds-manual-copy-modal="true"] .manual-copy-backdrop {
64367
- position: absolute;
64368
- inset: 0;
64369
- background: rgba(0, 0, 0, 0.38);
64370
- }
64371
- [data-dominds-manual-copy-modal="true"] .manual-copy-dialog {
64372
- position: relative;
64373
- z-index: 1;
64374
- width: min(720px, 100%);
64375
- max-height: calc(100vh - 40px);
64376
- display: flex;
64377
- flex-direction: column;
64378
- background: var(--dominds-bg-secondary, var(--color-bg-secondary, #ffffff));
64379
- color: var(--dominds-fg, var(--color-fg-primary, #242424));
64380
- border: 1px solid var(--dominds-border, var(--color-border-primary, #d6d6d6));
64381
- border-radius: 8px;
64382
- box-shadow: 0 18px 54px rgba(0, 0, 0, 0.22);
64383
- overflow: hidden;
64384
- }
64385
- [data-dominds-manual-copy-modal="true"] .manual-copy-header {
64386
- display: flex;
64387
- align-items: center;
64388
- justify-content: space-between;
64389
- gap: 12px;
64390
- padding: 12px 14px;
64391
- border-bottom: 1px solid var(--dominds-border, var(--color-border-primary, #e5e5e5));
64392
- background: var(--color-bg-tertiary, #f6f6f6);
64393
- }
64394
- [data-dominds-manual-copy-modal="true"] .manual-copy-title {
64395
- margin: 0;
64396
- font-size: 14px;
64397
- line-height: 1.35;
64398
- font-weight: 650;
64399
- }
64400
- [data-dominds-manual-copy-modal="true"] .manual-copy-close {
64401
- width: 28px;
64402
- height: 28px;
64403
- border: 1px solid var(--dominds-border, var(--color-border-primary, #d6d6d6));
64404
- border-radius: 6px;
64405
- padding: 0;
64406
- display: inline-flex;
64407
- align-items: center;
64408
- justify-content: center;
64409
- background: transparent;
64410
- color: inherit;
64411
- cursor: pointer;
64412
- }
64413
- [data-dominds-manual-copy-modal="true"] .manual-copy-close .icon-mask {
64414
- width: 14px;
64415
- height: 14px;
64416
- --icon-mask: ${ICON_MASK_URLS.close};
64417
- }
64418
- [data-dominds-manual-copy-modal="true"] .manual-copy-close:hover,
64419
- [data-dominds-manual-copy-modal="true"] .manual-copy-close:focus-visible {
64420
- border-color: var(--dominds-primary, var(--color-accent-primary, #005fb8));
64421
- outline: none;
64422
- }
64423
- [data-dominds-manual-copy-modal="true"] .manual-copy-body {
64424
- display: flex;
64425
- flex-direction: column;
64426
- gap: 10px;
64427
- flex: 1 1 auto;
64428
- min-height: 0;
64429
- padding: 14px;
64430
- overflow: hidden;
64431
- }
64432
- [data-dominds-manual-copy-modal="true"] .manual-copy-message {
64433
- margin: 0;
64434
- color: var(--dominds-muted, var(--color-fg-secondary, #525252));
64435
- font-size: 13px;
64436
- line-height: 1.45;
64437
- }
64438
- [data-dominds-manual-copy-modal="true"] .manual-copy-text {
64439
- width: 100%;
64440
- min-height: min(260px, 42vh);
64441
- box-sizing: border-box;
64442
- flex: 1 1 auto;
64443
- resize: vertical;
64444
- padding: 10px;
64445
- border: 1px solid var(--dominds-border, var(--color-border-primary, #d6d6d6));
64446
- border-radius: 6px;
64447
- background: var(--dominds-bg, var(--color-bg-primary, #fbfbfb));
64448
- color: var(--dominds-fg, var(--color-fg-primary, #242424));
64449
- font: 12px/1.45 ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
64450
- white-space: pre;
64451
- }
64452
- [data-dominds-manual-copy-modal="true"] .manual-copy-footer {
64453
- display: flex;
64454
- justify-content: flex-end;
64455
- padding: 0 14px 14px;
64456
- }
64457
- [data-dominds-manual-copy-modal="true"] .manual-copy-select {
64458
- border: 1px solid var(--dominds-primary, var(--color-accent-primary, #005fb8));
64459
- border-radius: 6px;
64460
- background: var(--dominds-primary, var(--color-accent-primary, #005fb8));
64461
- color: #ffffff;
64462
- padding: 6px 12px;
64463
- font-size: 13px;
64464
- cursor: pointer;
64465
- }
64466
- </style>
64467
- <div class="manual-copy-backdrop"></div>
64468
- <div class="manual-copy-dialog" role="dialog" aria-modal="true" aria-labelledby="manual-copy-title" aria-describedby="manual-copy-message">
64469
- <div class="manual-copy-header">
64470
- <h3 class="manual-copy-title" id="manual-copy-title">${escapeHtmlText$1(texts.title)}</h3>
64471
- <button class="manual-copy-close" type="button" aria-label="${escapeHtmlText$1(
64472
- texts.close
64473
- )}" title="${escapeHtmlText$1(texts.close)}">
64474
- <span class="icon-mask" aria-hidden="true"></span>
64475
- </button>
64476
- </div>
64477
- <div class="manual-copy-body">
64478
- <p class="manual-copy-message" id="manual-copy-message">${escapeHtmlText$1(getManualCopyMessage(texts))}</p>
64479
- <textarea class="manual-copy-text" readonly spellcheck="false"></textarea>
64480
- </div>
64481
- <div class="manual-copy-footer">
64482
- <button class="manual-copy-select" type="button">${escapeHtmlText$1(texts.selectAll)}</button>
64483
- </div>
64484
- </div>
64485
- `;
64486
- const close2 = () => {
64487
- document.removeEventListener("keydown", onDocumentKeydown, true);
64488
- manualCopyModalCleanups.delete(modal);
64489
- modal.remove();
64490
- if (restoreFocusTo !== null && restoreFocusTo.isConnected) {
64491
- restoreFocusTo.focus();
64492
- }
64493
- };
64494
- const closeButton = modal.querySelector(".manual-copy-close");
64495
- const backdrop = modal.querySelector(".manual-copy-backdrop");
64496
- const selectButton = modal.querySelector(".manual-copy-select");
64497
- const textarea = modal.querySelector(".manual-copy-text");
64498
- if (!(closeButton instanceof HTMLButtonElement)) {
64499
- throw new Error("Manual copy modal close button missing.");
64500
- }
64501
- if (!(backdrop instanceof HTMLElement)) {
64502
- throw new Error("Manual copy modal backdrop missing.");
64503
- }
64504
- if (!(selectButton instanceof HTMLButtonElement)) {
64505
- throw new Error("Manual copy modal select button missing.");
64506
- }
64507
- if (!(textarea instanceof HTMLTextAreaElement)) {
64508
- throw new Error("Manual copy modal textarea missing.");
64509
- }
64510
- const closeButtonEl = closeButton;
64511
- const backdropEl = backdrop;
64512
- const selectButtonEl = selectButton;
64513
- const textareaEl = textarea;
64514
- textareaEl.value = text2;
64515
- const selectText = () => {
64516
- textareaEl.focus();
64517
- textareaEl.select();
64518
- };
64519
- function onDocumentKeydown(event) {
64520
- if (event.key === "Escape") {
64521
- event.preventDefault();
64522
- close2();
64523
- return;
64524
- }
64525
- if (event.key !== "Tab") return;
64526
- const focusableElements = [closeButtonEl, textareaEl, selectButtonEl];
64527
- const activeElement = document.activeElement;
64528
- const first = focusableElements[0];
64529
- const last = focusableElements[focusableElements.length - 1];
64530
- if (activeElement !== closeButtonEl && activeElement !== textareaEl && activeElement !== selectButtonEl) {
64531
- event.preventDefault();
64532
- if (event.shiftKey) {
64533
- last.focus();
64534
- } else {
64535
- first.focus();
64536
- }
64537
- return;
64538
- }
64539
- if (event.shiftKey && activeElement === first) {
64540
- event.preventDefault();
64541
- last.focus();
64542
- return;
64543
- }
64544
- if (!event.shiftKey && activeElement === last) {
64545
- event.preventDefault();
64546
- first.focus();
64547
- }
64548
- }
64549
- closeButtonEl.addEventListener("click", close2);
64550
- backdropEl.addEventListener("click", close2);
64551
- selectButtonEl.addEventListener("click", selectText);
64552
- document.addEventListener("keydown", onDocumentKeydown, true);
64553
- manualCopyModalCleanups.set(modal, close2);
64554
- document.body.appendChild(modal);
64555
- selectText();
64556
- }
64557
- async function copyTextToClipboard(text2, language2, restoreFocusTo) {
64558
- if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
64559
- await navigator.clipboard.writeText(text2);
64560
- return;
64561
- }
64562
- showManualCopyModal(text2, language2, restoreFocusTo);
64563
- }
64564
64596
  class DomindsCodeBlock extends HTMLElement {
64565
64597
  constructor() {
64566
64598
  super();
@@ -64626,7 +64658,7 @@ class DomindsCodeBlock extends HTMLElement {
64626
64658
  }
64627
64659
  if (!this.hasCodeSource) return;
64628
64660
  const language2 = this._language || "plaintext";
64629
- const texts = getManualCopyTexts(getElementLanguage(this));
64661
+ const copyCodeText = "复制代码 / Copy code";
64630
64662
  const languageLabel = escapeHtmlText$1(language2);
64631
64663
  const languageClassToken = toLanguageClassToken(language2);
64632
64664
  try {
@@ -64786,7 +64818,7 @@ class DomindsCodeBlock extends HTMLElement {
64786
64818
  <div class="code-block-wrapper">
64787
64819
  <div class="code-header">
64788
64820
  <span class="language">${languageLabel}</span>
64789
- <button class="copy-btn" title="${escapeHtmlText$1(texts.copyCode)}" aria-label="${escapeHtmlText$1(texts.copyCode)}"><span class="icon-mask" aria-hidden="true"></span></button>
64821
+ <button class="copy-btn" title="${escapeHtmlText$1(copyCodeText)}" aria-label="${escapeHtmlText$1(copyCodeText)}"><span class="icon-mask" aria-hidden="true"></span></button>
64790
64822
  </div>
64791
64823
  <pre><code class="hljs language-${languageClassToken}">${highlighted}</code></pre>
64792
64824
  <div class="code-expand-footer code-expand-footer-down is-hidden">
@@ -64807,13 +64839,17 @@ class DomindsCodeBlock extends HTMLElement {
64807
64839
  const button = this.querySelector(".copy-btn");
64808
64840
  if (!(button instanceof HTMLButtonElement)) return;
64809
64841
  button.addEventListener("click", () => {
64810
- const language2 = getElementLanguage(this);
64811
- void copyTextToClipboard(this._code, language2, button).catch((error2) => {
64812
- console.error("Copy code failed:", error2);
64813
- showManualCopyModal(this._code, language2, button);
64814
- });
64842
+ void this.copyCodeToClipboard(button);
64815
64843
  });
64816
64844
  }
64845
+ async copyCodeToClipboard(button) {
64846
+ try {
64847
+ await copyTextOrShowManualCopy(this._code, button);
64848
+ } catch (error2) {
64849
+ console.error("Copy code failed:", error2);
64850
+ alert("复制失败 / Copy failed.");
64851
+ }
64852
+ }
64817
64853
  setupProgressiveExpand() {
64818
64854
  const target = this.querySelector("pre");
64819
64855
  const footer = this.querySelector(".code-expand-footer");
@@ -99486,12 +99522,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
99486
99522
  registerLayoutLoaders([
99487
99523
  {
99488
99524
  name: "dagre",
99489
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-2qk0ikdt.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
99525
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-DYxCt50h.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
99490
99526
  },
99491
99527
  ...[
99492
99528
  {
99493
99529
  name: "cose-bilkent",
99494
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-BBWvHErL.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
99530
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-BeoZCFA5.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
99495
99531
  }
99496
99532
  ]
99497
99533
  ]);
@@ -99931,7 +99967,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
99931
99967
  }, "detector");
99932
99968
  var loader = /* @__PURE__ */ __name(async () => {
99933
99969
  const { diagram: diagram2 } = await __vitePreload(async () => {
99934
- const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-D_d3F9XD.js");
99970
+ const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-D0GcQMKs.js");
99935
99971
  return { diagram: diagram22 };
99936
99972
  }, true ? __vite__mapDeps([8,9]) : void 0);
99937
99973
  return { id: id$1, diagram: diagram2 };
@@ -99951,7 +99987,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
99951
99987
  }, "detector");
99952
99988
  var loader2 = /* @__PURE__ */ __name(async () => {
99953
99989
  const { diagram: diagram2 } = await __vitePreload(async () => {
99954
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-CW06almb.js");
99990
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-hd4TorKR.js");
99955
99991
  return { diagram: diagram22 };
99956
99992
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99957
99993
  return { id: id2, diagram: diagram2 };
@@ -99977,7 +100013,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
99977
100013
  }, "detector");
99978
100014
  var loader3 = /* @__PURE__ */ __name(async () => {
99979
100015
  const { diagram: diagram2 } = await __vitePreload(async () => {
99980
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-CW06almb.js");
100016
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-hd4TorKR.js");
99981
100017
  return { diagram: diagram22 };
99982
100018
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99983
100019
  return { id: id3, diagram: diagram2 };
@@ -99994,7 +100030,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
99994
100030
  }, "detector");
99995
100031
  var loader4 = /* @__PURE__ */ __name(async () => {
99996
100032
  const { diagram: diagram2 } = await __vitePreload(async () => {
99997
- const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-CV68FwGf.js");
100033
+ const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-BDO90e-f.js");
99998
100034
  return { diagram: diagram22 };
99999
100035
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
100000
100036
  return { id: id4, diagram: diagram2 };
@@ -100011,7 +100047,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
100011
100047
  }, "detector");
100012
100048
  var loader5 = /* @__PURE__ */ __name(async () => {
100013
100049
  const { diagram: diagram2 } = await __vitePreload(async () => {
100014
- const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-CAuIexWi.js");
100050
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-DaA7yodM.js");
100015
100051
  return { diagram: diagram22 };
100016
100052
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
100017
100053
  return { id: id5, diagram: diagram2 };
@@ -100028,7 +100064,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
100028
100064
  }, "detector");
100029
100065
  var loader6 = /* @__PURE__ */ __name(async () => {
100030
100066
  const { diagram: diagram2 } = await __vitePreload(async () => {
100031
- const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-C96NncCU.js");
100067
+ const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-mID1sFSl.js");
100032
100068
  return { diagram: diagram22 };
100033
100069
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
100034
100070
  return { id: id6, diagram: diagram2 };
@@ -100045,7 +100081,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
100045
100081
  }, "detector");
100046
100082
  var loader7 = /* @__PURE__ */ __name(async () => {
100047
100083
  const { diagram: diagram2 } = await __vitePreload(async () => {
100048
- const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-C16Sckpz.js");
100084
+ const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-DxF36W9g.js");
100049
100085
  return { diagram: diagram22 };
100050
100086
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
100051
100087
  return { id: id7, diagram: diagram2 };
@@ -100061,7 +100097,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
100061
100097
  }, "detector");
100062
100098
  var loader8 = /* @__PURE__ */ __name(async () => {
100063
100099
  const { diagram: diagram2 } = await __vitePreload(async () => {
100064
- const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-Bx6hUJ4Q.js");
100100
+ const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-ZYB35zd5.js");
100065
100101
  return { diagram: diagram22 };
100066
100102
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
100067
100103
  return { id: id8, diagram: diagram2 };
@@ -100077,7 +100113,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
100077
100113
  }, "detector");
100078
100114
  var loader9 = /* @__PURE__ */ __name(async () => {
100079
100115
  const { diagram: diagram2 } = await __vitePreload(async () => {
100080
- const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-zyduIle0.js");
100116
+ const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-BM041Q-W.js");
100081
100117
  return { diagram: diagram22 };
100082
100118
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
100083
100119
  return { id: id9, diagram: diagram2 };
@@ -100094,7 +100130,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
100094
100130
  }, "detector");
100095
100131
  var loader10 = /* @__PURE__ */ __name(async () => {
100096
100132
  const { diagram: diagram2 } = await __vitePreload(async () => {
100097
- const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-DmS8BiaA.js");
100133
+ const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-BUlvexnm.js");
100098
100134
  return { diagram: diagram22 };
100099
100135
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
100100
100136
  return { id: id10, diagram: diagram2 };
@@ -100111,7 +100147,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
100111
100147
  }, "detector");
100112
100148
  var loader11 = /* @__PURE__ */ __name(async () => {
100113
100149
  const { diagram: diagram2 } = await __vitePreload(async () => {
100114
- const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-BgfjyEJM.js");
100150
+ const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-r_xMoroM.js");
100115
100151
  return { diagram: diagram22 };
100116
100152
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
100117
100153
  return { id: id11, diagram: diagram2 };
@@ -100128,7 +100164,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
100128
100164
  }, "detector");
100129
100165
  var loader12 = /* @__PURE__ */ __name(async () => {
100130
100166
  const { diagram: diagram2 } = await __vitePreload(async () => {
100131
- const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-DqJz-iYI.js");
100167
+ const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-D83Bocd1.js");
100132
100168
  return { diagram: diagram22 };
100133
100169
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
100134
100170
  return { id: id12, diagram: diagram2 };
@@ -100148,7 +100184,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
100148
100184
  }, "detector");
100149
100185
  var loader13 = /* @__PURE__ */ __name(async () => {
100150
100186
  const { diagram: diagram2 } = await __vitePreload(async () => {
100151
- const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-DCCQrdwF.js");
100187
+ const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-2HURCFLk.js");
100152
100188
  return { diagram: diagram22 };
100153
100189
  }, true ? __vite__mapDeps([32,33,11,9,12,13]) : void 0);
100154
100190
  return { id: id13, diagram: diagram2 };
@@ -100168,7 +100204,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
100168
100204
  }, "detector");
100169
100205
  var loader14 = /* @__PURE__ */ __name(async () => {
100170
100206
  const { diagram: diagram2 } = await __vitePreload(async () => {
100171
- const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-DCCQrdwF.js");
100207
+ const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-2HURCFLk.js");
100172
100208
  return { diagram: diagram22 };
100173
100209
  }, true ? __vite__mapDeps([34,33,11,9,12,13]) : void 0);
100174
100210
  return { id: id14, diagram: diagram2 };
@@ -100188,7 +100224,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
100188
100224
  }, "detector");
100189
100225
  var loader15 = /* @__PURE__ */ __name(async () => {
100190
100226
  const { diagram: diagram2 } = await __vitePreload(async () => {
100191
- const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-CngWYuX-.js");
100227
+ const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-mTmpZzpU.js");
100192
100228
  return { diagram: diagram22 };
100193
100229
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
100194
100230
  return { id: id15, diagram: diagram2 };
@@ -100211,7 +100247,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
100211
100247
  }, "detector");
100212
100248
  var loader16 = /* @__PURE__ */ __name(async () => {
100213
100249
  const { diagram: diagram2 } = await __vitePreload(async () => {
100214
- const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-BxyHvrvU.js");
100250
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-BCn7mFeH.js");
100215
100251
  return { diagram: diagram22 };
100216
100252
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
100217
100253
  return { id: id16, diagram: diagram2 };
@@ -100228,7 +100264,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
100228
100264
  }, "detector");
100229
100265
  var loader17 = /* @__PURE__ */ __name(async () => {
100230
100266
  const { diagram: diagram2 } = await __vitePreload(async () => {
100231
- const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-437hhFHC.js");
100267
+ const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-CIBXsttK.js");
100232
100268
  return { diagram: diagram22 };
100233
100269
  }, true ? __vite__mapDeps([38,11,9,26]) : void 0);
100234
100270
  return { id: id17, diagram: diagram2 };
@@ -100298,7 +100334,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
100298
100334
  }, "detector");
100299
100335
  var loader18 = /* @__PURE__ */ __name(async () => {
100300
100336
  const { diagram: diagram2 } = await __vitePreload(async () => {
100301
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-CW06almb.js");
100337
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-hd4TorKR.js");
100302
100338
  return { diagram: diagram22 };
100303
100339
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
100304
100340
  return { id: id18, diagram: diagram2 };
@@ -100315,7 +100351,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
100315
100351
  }, "detector");
100316
100352
  var loader19 = /* @__PURE__ */ __name(async () => {
100317
100353
  const { diagram: diagram2 } = await __vitePreload(async () => {
100318
- const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-C7t6WVS3.js");
100354
+ const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-C1QBcYz8.js");
100319
100355
  return { diagram: diagram22 };
100320
100356
  }, true ? __vite__mapDeps([39,26]) : void 0);
100321
100357
  return { id: id19, diagram: diagram2 };
@@ -100332,7 +100368,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
100332
100368
  }, "detector");
100333
100369
  var loader20 = /* @__PURE__ */ __name(async () => {
100334
100370
  const { diagram: diagram2 } = await __vitePreload(async () => {
100335
- const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-DA1-XaNi.js");
100371
+ const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-BwTQE6uN.js");
100336
100372
  return { diagram: diagram22 };
100337
100373
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
100338
100374
  return { id: id20, diagram: diagram2 };
@@ -100349,7 +100385,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
100349
100385
  }, "detector");
100350
100386
  var loader21 = /* @__PURE__ */ __name(async () => {
100351
100387
  const { diagram: diagram2 } = await __vitePreload(async () => {
100352
- const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-DsCV_Tpx.js");
100388
+ const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-DQTPyM5m.js");
100353
100389
  return { diagram: diagram22 };
100354
100390
  }, true ? __vite__mapDeps([41,11]) : void 0);
100355
100391
  return { id: id21, diagram: diagram2 };
@@ -100366,7 +100402,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
100366
100402
  }, "detector");
100367
100403
  var loader22 = /* @__PURE__ */ __name(async () => {
100368
100404
  const { diagram: diagram2 } = await __vitePreload(async () => {
100369
- const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-lmOWaczS.js");
100405
+ const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-Ju2-t24N.js");
100370
100406
  return { diagram: diagram22 };
100371
100407
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
100372
100408
  return { id: id22, diagram: diagram2 };
@@ -100383,7 +100419,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
100383
100419
  }, "detector");
100384
100420
  var loader23 = /* @__PURE__ */ __name(async () => {
100385
100421
  const { diagram: diagram2 } = await __vitePreload(async () => {
100386
- const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-B9V-tQMe.js");
100422
+ const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-CvcxPsVp.js");
100387
100423
  return { diagram: diagram22 };
100388
100424
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
100389
100425
  return { id: id23, diagram: diagram2 };
@@ -100399,7 +100435,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
100399
100435
  }, "detector");
100400
100436
  var loader24 = /* @__PURE__ */ __name(async () => {
100401
100437
  const { diagram: diagram2 } = await __vitePreload(async () => {
100402
- const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-DToz8zk9.js");
100438
+ const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-BAIPE4Rn.js");
100403
100439
  return { diagram: diagram22 };
100404
100440
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
100405
100441
  return { id: id24, diagram: diagram2 };
@@ -100415,7 +100451,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
100415
100451
  }, "detector");
100416
100452
  var loader25 = /* @__PURE__ */ __name(async () => {
100417
100453
  const { diagram: diagram2 } = await __vitePreload(async () => {
100418
- const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-IIP6LGXS.js");
100454
+ const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-CijmZ89y.js");
100419
100455
  return { diagram: diagram22 };
100420
100456
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
100421
100457
  return { id: id25, diagram: diagram2 };
@@ -100432,7 +100468,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
100432
100468
  }, "detector");
100433
100469
  var loader26 = /* @__PURE__ */ __name(async () => {
100434
100470
  const { diagram: diagram2 } = await __vitePreload(async () => {
100435
- const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-DXqcDq4R.js");
100471
+ const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-CmUkdSiN.js");
100436
100472
  return { diagram: diagram22 };
100437
100473
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
100438
100474
  return { id: id26, diagram: diagram2 };
@@ -100449,7 +100485,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
100449
100485
  }, "detector");
100450
100486
  var loader27 = /* @__PURE__ */ __name(async () => {
100451
100487
  const { diagram: diagram2 } = await __vitePreload(async () => {
100452
- const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-oNG6I0p3.js");
100488
+ const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-wvAzRzSO.js");
100453
100489
  return { diagram: diagram22 };
100454
100490
  }, true ? [] : void 0);
100455
100491
  return { id: id27, diagram: diagram2 };
@@ -100465,7 +100501,7 @@ var detector28 = /* @__PURE__ */ __name((txt) => {
100465
100501
  }, "detector");
100466
100502
  var loader28 = /* @__PURE__ */ __name(async () => {
100467
100503
  const { diagram: diagram2 } = await __vitePreload(async () => {
100468
- const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-CEw7GPed.js");
100504
+ const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-C6SZhLMq.js");
100469
100505
  return { diagram: diagram22 };
100470
100506
  }, true ? [] : void 0);
100471
100507
  return { id: id28, diagram: diagram2 };
@@ -100482,7 +100518,7 @@ var detector29 = /* @__PURE__ */ __name((txt) => {
100482
100518
  }, "detector");
100483
100519
  var loader29 = /* @__PURE__ */ __name(async () => {
100484
100520
  const { diagram: diagram2 } = await __vitePreload(async () => {
100485
- const { diagram: diagram22 } = await import("./diagram-E7M64L7V-C1DbHDbf.js");
100521
+ const { diagram: diagram22 } = await import("./diagram-E7M64L7V-BWxcTI3B.js");
100486
100522
  return { diagram: diagram22 };
100487
100523
  }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
100488
100524
  return { id: id29, diagram: diagram2 };
@@ -102590,27 +102626,15 @@ class DomindsDialogContainer extends HTMLElement {
102590
102626
  const doneIconHtml = '<span class="icon-mask dc-icon-check-circle" aria-hidden="true"></span>';
102591
102627
  const copyIconHtml = '<span class="icon-mask dc-icon-copy" aria-hidden="true"></span>';
102592
102628
  try {
102593
- await navigator.clipboard.writeText(text2);
102594
- const prev2 = btn.innerHTML || "";
102595
- btn.innerHTML = doneIconHtml;
102596
- setTimeout(() => btn.innerHTML = prev2 || copyIconHtml, 1200);
102597
- } catch (err) {
102598
- try {
102599
- const ta = document.createElement("textarea");
102600
- ta.value = text2;
102601
- ta.style.position = "fixed";
102602
- ta.style.opacity = "0";
102603
- document.body.appendChild(ta);
102604
- ta.focus();
102605
- ta.select();
102606
- document.execCommand("copy");
102607
- ta.remove();
102629
+ const result = await copyTextOrShowManualCopy(text2, btn);
102630
+ if (result.kind === "copied") {
102608
102631
  const prev2 = btn.innerHTML || "";
102609
102632
  btn.innerHTML = doneIconHtml;
102610
102633
  setTimeout(() => btn.innerHTML = prev2 || copyIconHtml, 1200);
102611
- } catch (err2) {
102612
- console.warn("Clipboard write failed", err2);
102613
102634
  }
102635
+ } catch (err) {
102636
+ console.warn("Clipboard write failed", err);
102637
+ this.emitToast(getUiStrings(this.uiLanguage).copyFailedToast, "warning");
102614
102638
  }
102615
102639
  }
102616
102640
  });
@@ -105776,34 +105800,17 @@ ${event.content}`;
105776
105800
  emitToast(message, kind = "info") {
105777
105801
  dispatchDomindsEvent(this, "ui-toast", { message, kind }, { bubbles: true, composed: true });
105778
105802
  }
105779
- async copyTextToClipboard(text2) {
105780
- try {
105781
- if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
105782
- await navigator.clipboard.writeText(text2);
105783
- return true;
105784
- }
105785
- const ta = document.createElement("textarea");
105786
- ta.value = text2;
105787
- ta.setAttribute("readonly", "true");
105788
- ta.style.position = "fixed";
105789
- ta.style.left = "-9999px";
105790
- document.body.appendChild(ta);
105791
- ta.select();
105792
- const ok = document.execCommand("copy");
105793
- document.body.removeChild(ta);
105794
- return ok === true;
105795
- } catch {
105796
- return false;
105797
- }
105798
- }
105799
105803
  async copyLinkToClipboardWithToast(urlStr) {
105800
- const ok = await this.copyTextToClipboard(urlStr);
105801
105804
  const t2 = getUiStrings(this.uiLanguage);
105802
- if (ok) {
105803
- this.emitToast(t2.linkCopiedToast, "info");
105804
- return;
105805
+ try {
105806
+ const result = await copyTextOrShowManualCopy(urlStr, null);
105807
+ if (result.kind === "copied") {
105808
+ this.emitToast(t2.linkCopiedToast, "info");
105809
+ }
105810
+ } catch (error2) {
105811
+ console.warn("Manual link copy fallback failed", error2);
105812
+ this.emitToast(t2.linkCopyFailedToast, "warning");
105805
105813
  }
105806
- this.emitToast(t2.linkCopyFailedToast, "warning");
105807
105814
  }
105808
105815
  // === REMINDER EVENTS ===
105809
105816
  handleFullRemindersUpdate(event) {
@@ -113682,7 +113689,7 @@ class DomindsTeamMembers extends HTMLElement {
113682
113689
  if (action === "mention") {
113683
113690
  this.emitMention(memberId2);
113684
113691
  } else if (action === "copy") {
113685
- void this.copyMention(memberId2);
113692
+ void this.copyMention(memberId2, actionBtn);
113686
113693
  }
113687
113694
  return;
113688
113695
  }
@@ -113718,25 +113725,14 @@ class DomindsTeamMembers extends HTMLElement {
113718
113725
  const detail = { memberId, mention };
113719
113726
  dispatchDomindsEvent(this, "team-member-mention", detail, { bubbles: true, composed: true });
113720
113727
  }
113721
- async copyMention(memberId) {
113728
+ async copyMention(memberId, restoreFocusTo) {
113722
113729
  const t2 = getUiStrings(this.props.uiLanguage);
113723
113730
  const mention = `@${memberId}`;
113724
113731
  try {
113725
- if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
113726
- await navigator.clipboard.writeText(mention);
113732
+ const result = await copyTextOrShowManualCopy(mention, restoreFocusTo);
113733
+ if (result.kind === "copied") {
113727
113734
  this.emitToast(`${t2.teamMembersCopiedPrefix}${mention}`);
113728
- return;
113729
113735
  }
113730
- const ta = document.createElement("textarea");
113731
- ta.value = mention;
113732
- ta.setAttribute("readonly", "true");
113733
- ta.style.position = "fixed";
113734
- ta.style.left = "-9999px";
113735
- document.body.appendChild(ta);
113736
- ta.select();
113737
- document.execCommand("copy");
113738
- document.body.removeChild(ta);
113739
- this.emitToast(`${t2.teamMembersCopiedPrefix}${mention}`);
113740
113736
  } catch (error2) {
113741
113737
  const msg = error2 instanceof Error ? error2.message : t2.unknownError;
113742
113738
  this.emitToast(`${t2.teamMembersCopyFailedPrefix}${msg}`, "warning");
@@ -125058,34 +125054,17 @@ ${content}`;
125058
125054
  }
125059
125055
  window.history.replaceState({}, "", target.toString());
125060
125056
  }
125061
- async copyTextToClipboard(text2) {
125062
- try {
125063
- if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
125064
- await navigator.clipboard.writeText(text2);
125065
- return true;
125066
- }
125067
- const ta = document.createElement("textarea");
125068
- ta.value = text2;
125069
- ta.setAttribute("readonly", "true");
125070
- ta.style.position = "fixed";
125071
- ta.style.left = "-9999px";
125072
- document.body.appendChild(ta);
125073
- ta.select();
125074
- const ok = document.execCommand("copy");
125075
- document.body.removeChild(ta);
125076
- return ok === true;
125077
- } catch {
125078
- return false;
125079
- }
125080
- }
125081
125057
  async copyLinkToClipboardWithToast(urlStr) {
125082
- const ok = await this.copyTextToClipboard(urlStr);
125083
125058
  const t2 = getUiStrings(this.uiLanguage);
125084
- if (ok) {
125085
- this.showToast(t2.linkCopiedToast, "info");
125086
- return;
125059
+ try {
125060
+ const result = await copyTextOrShowManualCopy(urlStr, null);
125061
+ if (result.kind === "copied") {
125062
+ this.showToast(t2.linkCopiedToast, "info");
125063
+ }
125064
+ } catch (error2) {
125065
+ console.warn("Manual link copy fallback failed", error2);
125066
+ this.showToast(t2.linkCopyFailedToast, "warning");
125087
125067
  }
125088
- this.showToast(t2.linkCopyFailedToast, "warning");
125089
125068
  }
125090
125069
  applyPendingQ4HSelectionFromDeepLink() {
125091
125070
  const questionId = this.pendingDeepLinkQ4HSelectionQuestionId;
@@ -129912,7 +129891,7 @@ class DomindsSetup extends HTMLElement {
129912
129891
  }
129913
129892
  const copyFileBtn = this.shadowRoot.querySelector("#file-modal-copy");
129914
129893
  if (copyFileBtn instanceof HTMLButtonElement) {
129915
- copyFileBtn.onclick = () => void this.copyFileModalRaw();
129894
+ copyFileBtn.onclick = () => void this.copyFileModalRaw(copyFileBtn);
129916
129895
  }
129917
129896
  this.renderFileModalCodeBlock();
129918
129897
  }
@@ -129998,13 +129977,14 @@ class DomindsSetup extends HTMLElement {
129998
129977
  this.render();
129999
129978
  queueMicrotask(() => this.renderFileModalCodeBlock());
130000
129979
  }
130001
- async copyFileModalRaw() {
129980
+ async copyFileModalRaw(restoreFocusTo = null) {
130002
129981
  if (this.fileModal.kind !== "ready") return;
130003
129982
  const raw = this.fileModal.response.raw;
130004
129983
  try {
130005
- await navigator.clipboard.writeText(raw);
130006
- } catch {
130007
- window.prompt("Copy the content below:", raw);
129984
+ await copyTextOrShowManualCopy(raw, restoreFocusTo);
129985
+ } catch (error2) {
129986
+ console.error("Copy file modal raw failed:", error2);
129987
+ alert("复制失败 / Copy failed.");
130008
129988
  }
130009
129989
  }
130010
129990
  buildTeamYamlSnippet() {
@@ -130971,4 +130951,4 @@ export {
130971
130951
  purify as y,
130972
130952
  clear$2 as z
130973
130953
  };
130974
- //# sourceMappingURL=index-BOO_zFrI.js.map
130954
+ //# sourceMappingURL=index-DYO4ZL8y.js.map