@ours.network/messenger-server 0.1.3 → 1.0.1

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 (133) hide show
  1. package/README.md +3 -3
  2. package/dist/chunks/{chunk-XVPKSCRB.js → chunk-LYV2Y5XE.js} +1 -1
  3. package/dist/chunks/{server-WGWDNI4R.js → server-A2X3ONIW.js} +163 -25
  4. package/dist/cli.js +2 -2
  5. package/dist/web/assets/{abnfDiagram-N423BO3Z-7fD4vfRu.js → abnfDiagram-N423BO3Z-CSp6NRwP.js} +2 -2
  6. package/dist/web/assets/{abnfDiagram-N423BO3Z-7fD4vfRu.js.map → abnfDiagram-N423BO3Z-CSp6NRwP.js.map} +1 -1
  7. package/dist/web/assets/{arc-Cp6lomZC.js → arc-4IykQt9D.js} +2 -2
  8. package/dist/web/assets/{arc-Cp6lomZC.js.map → arc-4IykQt9D.js.map} +1 -1
  9. package/dist/web/assets/{architectureDiagram-T3A2C74G-CCfQC7wz.js → architectureDiagram-T3A2C74G-CL9LPWsH.js} +2 -2
  10. package/dist/web/assets/{architectureDiagram-T3A2C74G-CCfQC7wz.js.map → architectureDiagram-T3A2C74G-CL9LPWsH.js.map} +1 -1
  11. package/dist/web/assets/{blockDiagram-VBNYF7ZC-t1y3b-Vr.js → blockDiagram-VBNYF7ZC-yC0791PW.js} +2 -2
  12. package/dist/web/assets/{blockDiagram-VBNYF7ZC-t1y3b-Vr.js.map → blockDiagram-VBNYF7ZC-yC0791PW.js.map} +1 -1
  13. package/dist/web/assets/{browser-BNMxq99E.js → browser-aSjxdi-G.js} +2 -2
  14. package/dist/web/assets/{browser-BNMxq99E.js.map → browser-aSjxdi-G.js.map} +1 -1
  15. package/dist/web/assets/{c4Diagram-5PPSVZJV-_fzHOoNV.js → c4Diagram-5PPSVZJV-DqgWj3tY.js} +2 -2
  16. package/dist/web/assets/{c4Diagram-5PPSVZJV-_fzHOoNV.js.map → c4Diagram-5PPSVZJV-DqgWj3tY.js.map} +1 -1
  17. package/dist/web/assets/channel-jfpEU_2y.js +2 -0
  18. package/dist/web/assets/{channel-a40DqgLG.js.map → channel-jfpEU_2y.js.map} +1 -1
  19. package/dist/web/assets/{chunk-2GRJ4B5K-C7bSs1Bs.js → chunk-2GRJ4B5K-BWs5rfuK.js} +2 -2
  20. package/dist/web/assets/{chunk-2GRJ4B5K-C7bSs1Bs.js.map → chunk-2GRJ4B5K-BWs5rfuK.js.map} +1 -1
  21. package/dist/web/assets/{chunk-2Q5K7J3B-CB6pcjHM.js → chunk-2Q5K7J3B-DKBbJc9E.js} +2 -2
  22. package/dist/web/assets/{chunk-2Q5K7J3B-CB6pcjHM.js.map → chunk-2Q5K7J3B-DKBbJc9E.js.map} +1 -1
  23. package/dist/web/assets/{chunk-5RXB4S5H-DGriCScm.js → chunk-5RXB4S5H-IaRBqmdn.js} +2 -2
  24. package/dist/web/assets/{chunk-5RXB4S5H-DGriCScm.js.map → chunk-5RXB4S5H-IaRBqmdn.js.map} +1 -1
  25. package/dist/web/assets/{chunk-5VM5RSS4-BXQhNaWP.js → chunk-5VM5RSS4-DdMb5ZAE.js} +2 -2
  26. package/dist/web/assets/{chunk-5VM5RSS4-BXQhNaWP.js.map → chunk-5VM5RSS4-DdMb5ZAE.js.map} +1 -1
  27. package/dist/web/assets/{chunk-6Q2QTUOP-DZak_lrB.js → chunk-6Q2QTUOP-CYMlpG2Z.js} +2 -2
  28. package/dist/web/assets/{chunk-6Q2QTUOP-DZak_lrB.js.map → chunk-6Q2QTUOP-CYMlpG2Z.js.map} +1 -1
  29. package/dist/web/assets/{chunk-GF5L2VYU-BhIg_LDW.js → chunk-GF5L2VYU-BuKSmGxd.js} +2 -2
  30. package/dist/web/assets/{chunk-GF5L2VYU-BhIg_LDW.js.map → chunk-GF5L2VYU-BuKSmGxd.js.map} +1 -1
  31. package/dist/web/assets/{chunk-JWPE2WC7-DRT5vrQ1.js → chunk-JWPE2WC7-Cj_r5SZM.js} +2 -2
  32. package/dist/web/assets/{chunk-JWPE2WC7-DRT5vrQ1.js.map → chunk-JWPE2WC7-Cj_r5SZM.js.map} +1 -1
  33. package/dist/web/assets/{chunk-KBJHAD2P-D-1yZi0Q.js → chunk-KBJHAD2P-DCCYhI_8.js} +2 -2
  34. package/dist/web/assets/{chunk-KBJHAD2P-D-1yZi0Q.js.map → chunk-KBJHAD2P-DCCYhI_8.js.map} +1 -1
  35. package/dist/web/assets/{chunk-RYQCIY6F-CORP_3zW.js → chunk-RYQCIY6F-D3VqOBN6.js} +2 -2
  36. package/dist/web/assets/{chunk-RYQCIY6F-CORP_3zW.js.map → chunk-RYQCIY6F-D3VqOBN6.js.map} +1 -1
  37. package/dist/web/assets/{chunk-XXDRQBXY-k7JDg6pT.js → chunk-XXDRQBXY-BxQt3H1p.js} +2 -2
  38. package/dist/web/assets/{chunk-XXDRQBXY-k7JDg6pT.js.map → chunk-XXDRQBXY-BxQt3H1p.js.map} +1 -1
  39. package/dist/web/assets/classDiagram-JCYQIIEL-Cvo-b8Qq.js +2 -0
  40. package/dist/web/assets/{classDiagram-JCYQIIEL-DEVG-qK8.js.map → classDiagram-JCYQIIEL-Cvo-b8Qq.js.map} +1 -1
  41. package/dist/web/assets/classDiagram-v2-OCEON4UE-Cvo-b8Qq.js +2 -0
  42. package/dist/web/assets/{classDiagram-v2-OCEON4UE-DEVG-qK8.js.map → classDiagram-v2-OCEON4UE-Cvo-b8Qq.js.map} +1 -1
  43. package/dist/web/assets/{cose-bilkent-JH36ORCC-BRuFmEKf.js → cose-bilkent-JH36ORCC-D2wUnCFw.js} +2 -2
  44. package/dist/web/assets/{cose-bilkent-JH36ORCC-BRuFmEKf.js.map → cose-bilkent-JH36ORCC-D2wUnCFw.js.map} +1 -1
  45. package/dist/web/assets/{cynefin-VYW2F7L2-BIBC3C1E.js → cynefin-VYW2F7L2-BhGyk9U8.js} +2 -2
  46. package/dist/web/assets/{cynefin-VYW2F7L2-BIBC3C1E.js.map → cynefin-VYW2F7L2-BhGyk9U8.js.map} +1 -1
  47. package/dist/web/assets/{cynefinDiagram-MW4NZA55-B1GP4GAZ.js → cynefinDiagram-MW4NZA55-8xsqHZI1.js} +2 -2
  48. package/dist/web/assets/{cynefinDiagram-MW4NZA55-B1GP4GAZ.js.map → cynefinDiagram-MW4NZA55-8xsqHZI1.js.map} +1 -1
  49. package/dist/web/assets/{dagre-VZM6K2ZE-DNG5skDU.js → dagre-VZM6K2ZE-CRZ4XP8D.js} +2 -2
  50. package/dist/web/assets/{dagre-VZM6K2ZE-DNG5skDU.js.map → dagre-VZM6K2ZE-CRZ4XP8D.js.map} +1 -1
  51. package/dist/web/assets/{diagram-7IWD3JNH-CQUg24YJ.js → diagram-7IWD3JNH-CH1OHs8U.js} +2 -2
  52. package/dist/web/assets/{diagram-7IWD3JNH-CQUg24YJ.js.map → diagram-7IWD3JNH-CH1OHs8U.js.map} +1 -1
  53. package/dist/web/assets/{diagram-B4RE2ZJO-qbAY07Pq.js → diagram-B4RE2ZJO-Cgrp934H.js} +2 -2
  54. package/dist/web/assets/{diagram-B4RE2ZJO-qbAY07Pq.js.map → diagram-B4RE2ZJO-Cgrp934H.js.map} +1 -1
  55. package/dist/web/assets/{diagram-LBJQPF4R-BE1Kdgp2.js → diagram-LBJQPF4R-De8kC6ko.js} +2 -2
  56. package/dist/web/assets/{diagram-LBJQPF4R-BE1Kdgp2.js.map → diagram-LBJQPF4R-De8kC6ko.js.map} +1 -1
  57. package/dist/web/assets/{diagram-Q27KOJAE-p-O0kqgj.js → diagram-Q27KOJAE-CZuiMy7h.js} +2 -2
  58. package/dist/web/assets/{diagram-Q27KOJAE-p-O0kqgj.js.map → diagram-Q27KOJAE-CZuiMy7h.js.map} +1 -1
  59. package/dist/web/assets/{diagram-UB23O5K3-xdGc2e52.js → diagram-UB23O5K3-B9yVlHWE.js} +2 -2
  60. package/dist/web/assets/{diagram-UB23O5K3-xdGc2e52.js.map → diagram-UB23O5K3-B9yVlHWE.js.map} +1 -1
  61. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-BlJlcjUV.js → ebnfDiagram-BXEA7PRR-Bpz82JkA.js} +2 -2
  62. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-BlJlcjUV.js.map → ebnfDiagram-BXEA7PRR-Bpz82JkA.js.map} +1 -1
  63. package/dist/web/assets/{erDiagram-JOGREHBK-Bg5-2m62.js → erDiagram-JOGREHBK-C5a_pyMQ.js} +2 -2
  64. package/dist/web/assets/{erDiagram-JOGREHBK-Bg5-2m62.js.map → erDiagram-JOGREHBK-C5a_pyMQ.js.map} +1 -1
  65. package/dist/web/assets/{flowDiagram-UKHOOZJN-Dmoemhzb.js → flowDiagram-UKHOOZJN-DbZd2-Tp.js} +2 -2
  66. package/dist/web/assets/{flowDiagram-UKHOOZJN-Dmoemhzb.js.map → flowDiagram-UKHOOZJN-DbZd2-Tp.js.map} +1 -1
  67. package/dist/web/assets/{ganttDiagram-PKOTCBZU-Dc-IwQME.js → ganttDiagram-PKOTCBZU-DWI87QsT.js} +2 -2
  68. package/dist/web/assets/{ganttDiagram-PKOTCBZU-Dc-IwQME.js.map → ganttDiagram-PKOTCBZU-DWI87QsT.js.map} +1 -1
  69. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-CN7YIxrd.js → gitGraphDiagram-DS77QQ5N-CECQyFvT.js} +2 -2
  70. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-CN7YIxrd.js.map → gitGraphDiagram-DS77QQ5N-CECQyFvT.js.map} +1 -1
  71. package/dist/web/assets/index-0ny2lCl9.js +322 -0
  72. package/dist/web/assets/index-0ny2lCl9.js.map +1 -0
  73. package/dist/web/assets/index-B1juqaE-.css +1 -0
  74. package/dist/web/assets/{infoDiagram-6WML65LV-D-n8AFI2.js → infoDiagram-6WML65LV-DjP_yFP1.js} +2 -2
  75. package/dist/web/assets/{infoDiagram-6WML65LV-D-n8AFI2.js.map → infoDiagram-6WML65LV-DjP_yFP1.js.map} +1 -1
  76. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-Cn-GcDLv.js → ishikawaDiagram-WSZJBQD7-B2surd2T.js} +2 -2
  77. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-Cn-GcDLv.js.map → ishikawaDiagram-WSZJBQD7-B2surd2T.js.map} +1 -1
  78. package/dist/web/assets/{journeyDiagram-NVQOT4AX-CPPrighZ.js → journeyDiagram-NVQOT4AX-GvN2Rb4g.js} +2 -2
  79. package/dist/web/assets/{journeyDiagram-NVQOT4AX-CPPrighZ.js.map → journeyDiagram-NVQOT4AX-GvN2Rb4g.js.map} +1 -1
  80. package/dist/web/assets/{jsQR-BXk0yjjs.js → jsQR-2VAxy2ky.js} +2 -2
  81. package/dist/web/assets/{jsQR-BXk0yjjs.js.map → jsQR-2VAxy2ky.js.map} +1 -1
  82. package/dist/web/assets/{kanban-definition-27J2QSJJ-fT4ITqjW.js → kanban-definition-27J2QSJJ-CrW-YmkU.js} +2 -2
  83. package/dist/web/assets/{kanban-definition-27J2QSJJ-fT4ITqjW.js.map → kanban-definition-27J2QSJJ-CrW-YmkU.js.map} +1 -1
  84. package/dist/web/assets/{linear-nobKP7yF.js → linear-CQDslaR_.js} +2 -2
  85. package/dist/web/assets/{linear-nobKP7yF.js.map → linear-CQDslaR_.js.map} +1 -1
  86. package/dist/web/assets/{mermaid.core-BisAkIyL.js → mermaid.core-CgO1XnMl.js} +5 -5
  87. package/dist/web/assets/{mermaid.core-BisAkIyL.js.map → mermaid.core-CgO1XnMl.js.map} +1 -1
  88. package/dist/web/assets/{mindmap-definition-FAOFIHXS-Bnutlp7Z.js → mindmap-definition-FAOFIHXS-CGUWfBSf.js} +2 -2
  89. package/dist/web/assets/{mindmap-definition-FAOFIHXS-Bnutlp7Z.js.map → mindmap-definition-FAOFIHXS-CGUWfBSf.js.map} +1 -1
  90. package/dist/web/assets/{pegDiagram-VL7TDLO6-CzCgLmQq.js → pegDiagram-VL7TDLO6-Co20Kd21.js} +2 -2
  91. package/dist/web/assets/{pegDiagram-VL7TDLO6-CzCgLmQq.js.map → pegDiagram-VL7TDLO6-Co20Kd21.js.map} +1 -1
  92. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-DEr0yE7X.js → pieDiagram-7S7Q4E2Y-DeuESLr1.js} +2 -2
  93. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-DEr0yE7X.js.map → pieDiagram-7S7Q4E2Y-DeuESLr1.js.map} +1 -1
  94. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-C2LgzIJW.js → quadrantDiagram-CIZ2JOQS-DyG_Rlre.js} +2 -2
  95. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-C2LgzIJW.js.map → quadrantDiagram-CIZ2JOQS-DyG_Rlre.js.map} +1 -1
  96. package/dist/web/assets/{railroadDiagram-AXF67PYL-x-LatX3A.js → railroadDiagram-AXF67PYL-u8mUY3Rb.js} +2 -2
  97. package/dist/web/assets/{railroadDiagram-AXF67PYL-x-LatX3A.js.map → railroadDiagram-AXF67PYL-u8mUY3Rb.js.map} +1 -1
  98. package/dist/web/assets/{requirementDiagram-LRYGKXZP-CGzjkfeX.js → requirementDiagram-LRYGKXZP-PQf6qnA1.js} +2 -2
  99. package/dist/web/assets/{requirementDiagram-LRYGKXZP-CGzjkfeX.js.map → requirementDiagram-LRYGKXZP-PQf6qnA1.js.map} +1 -1
  100. package/dist/web/assets/{sankeyDiagram-W5VNT64P-BTISD1zZ.js → sankeyDiagram-W5VNT64P-Dbcg6vhd.js} +2 -2
  101. package/dist/web/assets/{sankeyDiagram-W5VNT64P-BTISD1zZ.js.map → sankeyDiagram-W5VNT64P-Dbcg6vhd.js.map} +1 -1
  102. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-DbJ7oF41.js → sequenceDiagram-SI44F4Z6-RDUrI-vZ.js} +2 -2
  103. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-DbJ7oF41.js.map → sequenceDiagram-SI44F4Z6-RDUrI-vZ.js.map} +1 -1
  104. package/dist/web/assets/{sizeCapture-X5ZJPWSS-CRPNTj6C.js → sizeCapture-X5ZJPWSS-JXUi75QS.js} +2 -2
  105. package/dist/web/assets/{sizeCapture-X5ZJPWSS-CRPNTj6C.js.map → sizeCapture-X5ZJPWSS-JXUi75QS.js.map} +1 -1
  106. package/dist/web/assets/{stateDiagram-OKZ733FA-nnD41U4P.js → stateDiagram-OKZ733FA-CWejbS_n.js} +2 -2
  107. package/dist/web/assets/{stateDiagram-OKZ733FA-nnD41U4P.js.map → stateDiagram-OKZ733FA-CWejbS_n.js.map} +1 -1
  108. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-zZFXI91O.js +2 -0
  109. package/dist/web/assets/{stateDiagram-v2-UEYNNEHI-BW2payX0.js.map → stateDiagram-v2-UEYNNEHI-zZFXI91O.js.map} +1 -1
  110. package/dist/web/assets/{swimlanes-SLNWSIFB-CUfYRF4W.js → swimlanes-SLNWSIFB-Bq-l7_tt.js} +3 -3
  111. package/dist/web/assets/{swimlanes-SLNWSIFB-CUfYRF4W.js.map → swimlanes-SLNWSIFB-Bq-l7_tt.js.map} +1 -1
  112. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-D4RKaS7N.js +9 -0
  113. package/dist/web/assets/{swimlanesDiagram-ULZ7WXOC-Bwk7oU9y.js.map → swimlanesDiagram-ULZ7WXOC-D4RKaS7N.js.map} +1 -1
  114. package/dist/web/assets/{timeline-definition-Z64GVDOM-tQRIpPqw.js → timeline-definition-Z64GVDOM-BM1qRR9l.js} +2 -2
  115. package/dist/web/assets/{timeline-definition-Z64GVDOM-tQRIpPqw.js.map → timeline-definition-Z64GVDOM-BM1qRR9l.js.map} +1 -1
  116. package/dist/web/assets/{vennDiagram-T6HMQDX7-B6xd83uW.js → vennDiagram-T6HMQDX7-nJF5zPxG.js} +2 -2
  117. package/dist/web/assets/{vennDiagram-T6HMQDX7-B6xd83uW.js.map → vennDiagram-T6HMQDX7-nJF5zPxG.js.map} +1 -1
  118. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-CpKP_cr3.js → wardleyDiagram-T6FBY63Y-DTFZj_j_.js} +2 -2
  119. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-CpKP_cr3.js.map → wardleyDiagram-T6FBY63Y-DTFZj_j_.js.map} +1 -1
  120. package/dist/web/assets/{xychartDiagram-ELKLHX3M-BeTRjYgI.js → xychartDiagram-ELKLHX3M-D0sYk6hI.js} +2 -2
  121. package/dist/web/assets/{xychartDiagram-ELKLHX3M-BeTRjYgI.js.map → xychartDiagram-ELKLHX3M-D0sYk6hI.js.map} +1 -1
  122. package/dist/web/index.html +2 -2
  123. package/dist/web/sw.js +5 -5
  124. package/dist/web/version.json +1 -1
  125. package/package.json +3 -3
  126. package/dist/web/assets/channel-a40DqgLG.js +0 -2
  127. package/dist/web/assets/classDiagram-JCYQIIEL-DEVG-qK8.js +0 -2
  128. package/dist/web/assets/classDiagram-v2-OCEON4UE-DEVG-qK8.js +0 -2
  129. package/dist/web/assets/index-Bja4dmXL.css +0 -1
  130. package/dist/web/assets/index-D7uZ1ZOu.js +0 -322
  131. package/dist/web/assets/index-D7uZ1ZOu.js.map +0 -1
  132. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-BW2payX0.js +0 -2
  133. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-Bwk7oU9y.js +0 -9
package/README.md CHANGED
@@ -110,9 +110,9 @@ The focused client does not persist messages, identities, receipts, or API
110
110
  responses in browser storage. Its service worker caches only the application
111
111
  shell and static assets for offline launch; all `/api/*` requests bypass it.
112
112
 
113
- The web UI is the messenger-only port of the canonical ours-control-plane
114
- interface at commit `bc0183c80e9ee0ea2dd5adecb58460b0564e90d5`; its exact source inventory and
115
- transport exclusions are recorded in `web/src/CANONICAL_UI_PROVENANCE.md`. It
113
+ The web UI and its same-origin transport adapter are maintained together in
114
+ this repository; their presentation scope and transport exclusions are recorded
115
+ in `web/src/CANONICAL_UI_PROVENANCE.md`. The interface
116
116
  includes grouped identity-root contacts; contact add, approval, rename and
117
117
  removal; one-time/public invite creation and revocation; public bio editing;
118
118
  message and attachment replies; drag/drop/paste and picker uploads with bounded
@@ -37,7 +37,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
37
37
  var define_MESSENGER_BUILD_INFO_default;
38
38
  var init_define_MESSENGER_BUILD_INFO = __esm({
39
39
  "<define:__MESSENGER_BUILD_INFO__>"() {
40
- define_MESSENGER_BUILD_INFO_default = { name: "@ours.network/messenger-server", version: "0.1.3", sha: "1c4d8efcdb2b1f494a99361f1093aa33cc72e7a1", dirty: false };
40
+ define_MESSENGER_BUILD_INFO_default = { name: "@ours.network/messenger-server", version: "1.0.1", sha: "d760891b84055feeb0e95bf4e4356af534c00b83", dirty: false };
41
41
  }
42
42
  });
43
43
 
@@ -7,7 +7,7 @@ import {
7
7
  publicEngineError,
8
8
  publicInternalError,
9
9
  reportFailure
10
- } from "./chunk-XVPKSCRB.js";
10
+ } from "./chunk-LYV2Y5XE.js";
11
11
 
12
12
  // node_modules/bn.js/lib/bn.js
13
13
  var require_bn = __commonJS({
@@ -11130,12 +11130,18 @@ init_define_MESSENGER_BUILD_INFO();
11130
11130
  var ROOM_VOICE_ROLE = "room";
11131
11131
  var ROOM_KIND_PREFIX = "room_";
11132
11132
  var ROOM_IDENTITY_PREFIX = "ours-cowork-room:";
11133
+ var NAMED_ROOM_IDENTITY_PREFIX = "ours-cowork:";
11133
11134
  var CURRENT_ROOM_IDENTITY_PREFIX = "ours-cowork-";
11134
11135
  var LEGACY_ROOM_IDENTITY_PREFIX = "cowork-room-";
11135
11136
  var LOWER_CROCKFORD_ULID = /^[0-7][0-9a-hjkmnp-tv-z]{25}$/;
11137
+ var FRIENDLY_ROOM_SLUG = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
11138
+ var MAX_FRIENDLY_ROOM_SLUG_LENGTH = 25;
11139
+ var MAX_ROOM_NAME_CHARACTERS = 64;
11140
+ var MAX_FUTURE_KIND_CHARACTERS = 80;
11141
+ var MAX_FUTURE_TEXT_CHARACTERS = 1e3;
11136
11142
  var isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
11137
11143
  var isNonEmptyString = (value) => typeof value === "string" && value.length > 0;
11138
- function parseRoomBody(text) {
11144
+ function parseRoomBodyShape(text, requireSignature) {
11139
11145
  if (typeof text !== "string") return null;
11140
11146
  const trimmed = text.trim();
11141
11147
  if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return null;
@@ -11149,7 +11155,7 @@ function parseRoomBody(text) {
11149
11155
  if (parsed.version !== 1) return null;
11150
11156
  if (!isNonEmptyString(parsed.kind) || !parsed.kind.startsWith(ROOM_KIND_PREFIX)) return null;
11151
11157
  if (!isNonEmptyString(parsed.room_id)) return null;
11152
- if (!isNonEmptyString(parsed.signature)) return null;
11158
+ if (requireSignature && !isNonEmptyString(parsed.signature)) return null;
11153
11159
  return parsed;
11154
11160
  }
11155
11161
  function authorOf(body) {
@@ -11160,7 +11166,8 @@ function authorOf(body) {
11160
11166
  };
11161
11167
  }
11162
11168
  function humanizeRoomKind(kind) {
11163
- const words = String(kind).replace(/^room_/, "").split("_").filter(Boolean);
11169
+ const boundedKind = Array.from(String(kind)).slice(0, MAX_FUTURE_KIND_CHARACTERS).join("");
11170
+ const words = boundedKind.replace(/^room_/, "").split("_").filter(Boolean);
11164
11171
  if (words.length === 0) return "Room notice";
11165
11172
  return words.join(" ").replace(/^./, (c4) => c4.toUpperCase());
11166
11173
  }
@@ -11170,20 +11177,66 @@ function renderRoomMessage(body) {
11170
11177
  const author = authorOf(body);
11171
11178
  const text = typeof body.text === "string" ? body.text : "";
11172
11179
  const version = Number.isSafeInteger(body.briefing_version) && body.briefing_version > 0 ? body.briefing_version : null;
11180
+ const common = {
11181
+ roomName: normalizedRoomName(body.room_name) ?? "",
11182
+ authoredAt: isNonEmptyString(body.at) ? body.at : ""
11183
+ };
11173
11184
  switch (kind) {
11174
11185
  case "room_msg":
11175
- return author.role === ROOM_VOICE_ROLE ? systemLine(kind, "Room", text || "Room notice") : { variant: "chat", kind, author: author.name || "Unknown member", role: author.role, label: "", text };
11186
+ return author.role === ROOM_VOICE_ROLE ? systemLine(kind, "Room message", text || "Room notice", { ...common, authoredBy: author.name }) : { variant: "chat", kind, author: author.name || "Unknown member", role: author.role, label: "", text, ...common };
11176
11187
  case "room_briefing":
11177
- return systemLine(kind, version === null ? "Room briefing" : `Room briefing \xB7 v${version}`, text || "The room briefing was updated.");
11188
+ return systemLine(
11189
+ kind,
11190
+ version === null ? "Room briefing" : `Room briefing \xB7 v${version}`,
11191
+ text || "The room briefing was updated.",
11192
+ { ...common, authoredBy: author.name, presentation: "briefing" }
11193
+ );
11178
11194
  case "room_role_briefing": {
11179
11195
  const role = isNonEmptyString(body.briefing_role) ? body.briefing_role : "";
11180
11196
  const label = ["Role briefing", role, version === null ? "" : `v${version}`].filter(Boolean).join(" \xB7 ");
11181
- return systemLine(kind, label, text || "Your role briefing was updated.");
11197
+ return systemLine(kind, label, text || "Your role briefing was updated.", {
11198
+ ...common,
11199
+ authoredBy: author.name,
11200
+ presentation: "role",
11201
+ details: role ? [`Role: ${role}`] : []
11202
+ });
11203
+ }
11204
+ case "room_membership": {
11205
+ const membership = isObject(body.membership) ? body.membership : {};
11206
+ const details = [
11207
+ isNonEmptyString(membership.action) ? `Status: ${humanizeValue(membership.action)}` : "",
11208
+ isNonEmptyString(membership.alias) ? `Member: ${membership.alias}` : "",
11209
+ isNonEmptyString(membership.role) ? `Role: ${membership.role}` : "",
11210
+ Number.isSafeInteger(membership.epoch) && membership.epoch >= 0 ? `Epoch: ${membership.epoch}` : ""
11211
+ ].filter(Boolean);
11212
+ return systemLine(kind, "Membership", text || membershipFallback(membership), {
11213
+ ...common,
11214
+ authoredBy: author.name,
11215
+ presentation: "membership",
11216
+ details
11217
+ });
11218
+ }
11219
+ case "room_file": {
11220
+ const filename2 = isNonEmptyString(body.filename) ? body.filename : "Shared file";
11221
+ const details = [
11222
+ isNonEmptyString(body.mime) ? `Type: ${body.mime}` : "",
11223
+ Number.isSafeInteger(body.size) && body.size >= 0 ? `Size: ${formatBytes(body.size)}` : "",
11224
+ isNonEmptyString(body.sha256) ? `SHA-256: ${boundedToken(body.sha256)}` : ""
11225
+ ].filter(Boolean);
11226
+ return systemLine(kind, "Room file", filename2, {
11227
+ ...common,
11228
+ authoredBy: author.name,
11229
+ role: author.role,
11230
+ presentation: "file",
11231
+ details
11232
+ });
11182
11233
  }
11183
- case "room_membership":
11184
- return systemLine(kind, "Membership", text || membershipFallback(body.membership));
11185
11234
  case "room_not_member":
11186
- return systemLine(kind, "Room", "You are no longer a member of this room.");
11235
+ return systemLine(kind, "Room access", "You are no longer a member of this room.", {
11236
+ ...common,
11237
+ presentation: "lifecycle",
11238
+ details: ["Status: Removed"]
11239
+ });
11187
11240
  default:
11188
11241
  return text ? {
11189
11242
  variant: author.role && author.role !== ROOM_VOICE_ROLE ? "chat" : "system",
@@ -11191,35 +11244,84 @@ function renderRoomMessage(body) {
11191
11244
  author: author.role && author.role !== ROOM_VOICE_ROLE ? author.name || "Unknown member" : "",
11192
11245
  role: author.role && author.role !== ROOM_VOICE_ROLE ? author.role : "",
11193
11246
  label: author.role && author.role !== ROOM_VOICE_ROLE ? "" : humanizeRoomKind(kind),
11194
- text
11195
- } : systemLine(kind, humanizeRoomKind(kind), `${humanizeRoomKind(kind)} from the room.`);
11247
+ text: boundedFutureText(text),
11248
+ ...common
11249
+ } : systemLine(kind, humanizeRoomKind(kind), `${humanizeRoomKind(kind)} from the room.`, common);
11196
11250
  }
11197
11251
  }
11198
11252
  function roomLineForContact(announcedContact, text) {
11199
11253
  if (!isCoworkRoomContact(announcedContact)) return null;
11200
- return renderRoomMessage(parseRoomBody(text));
11254
+ const expectedRoomId = currentRoomMetadata(announcedContact)?.roomId ?? null;
11255
+ const expectedLegacyRoomId = legacyRoomId(announcedContact);
11256
+ const namedRoom = namedRoomLabel(announcedContact);
11257
+ const body = parseRoomBodyShape(text, expectedRoomId === null && namedRoom === null);
11258
+ if (body !== null && expectedRoomId !== null && body.room_id !== expectedRoomId) {
11259
+ return rejectedEnvelopeLine("Room provenance mismatch");
11260
+ }
11261
+ if (body !== null && expectedLegacyRoomId !== null && body.room_id !== expectedLegacyRoomId) {
11262
+ return rejectedEnvelopeLine("Room provenance mismatch");
11263
+ }
11264
+ return renderRoomMessage(body);
11265
+ }
11266
+ function normalizedRoomName(value) {
11267
+ if (typeof value !== "string" || /[\p{Cc}\p{Cf}]/u.test(value)) return null;
11268
+ const name = value.trim().normalize("NFC");
11269
+ const length = Array.from(name).length;
11270
+ return length >= 1 && length <= MAX_ROOM_NAME_CHARACTERS ? name : null;
11201
11271
  }
11202
11272
  function legacyRoomId(announced) {
11203
11273
  if (typeof announced !== "string" || !announced.startsWith(LEGACY_ROOM_IDENTITY_PREFIX)) return null;
11204
11274
  const roomId = announced.slice(LEGACY_ROOM_IDENTITY_PREFIX.length);
11205
11275
  return LOWER_CROCKFORD_ULID.test(roomId) ? roomId : null;
11206
11276
  }
11207
- function currentRoomId(announced) {
11277
+ function namedRoomLabel(announced) {
11278
+ if (typeof announced !== "string" || !announced.startsWith(NAMED_ROOM_IDENTITY_PREFIX)) return null;
11279
+ return normalizedRoomName(announced.slice(NAMED_ROOM_IDENTITY_PREFIX.length));
11280
+ }
11281
+ function currentRoomMetadata(announced) {
11208
11282
  if (typeof announced !== "string" || !announced.startsWith(CURRENT_ROOM_IDENTITY_PREFIX)) return null;
11209
11283
  const suffix = announced.slice(CURRENT_ROOM_IDENTITY_PREFIX.length);
11210
- return LOWER_CROCKFORD_ULID.test(suffix) ? suffix : null;
11284
+ if (LOWER_CROCKFORD_ULID.test(suffix)) return { roomId: suffix, slug: null };
11285
+ const roomId = suffix.slice(-26);
11286
+ const separator = suffix.at(-27);
11287
+ const slug = suffix.slice(0, -27);
11288
+ if (separator !== "-" || !LOWER_CROCKFORD_ULID.test(roomId)) return null;
11289
+ if (slug.length < 1 || slug.length > MAX_FRIENDLY_ROOM_SLUG_LENGTH) return null;
11290
+ return FRIENDLY_ROOM_SLUG.test(slug) ? { roomId, slug } : null;
11211
11291
  }
11212
11292
  function isCoworkRoomContact(announced) {
11213
11293
  const identity = String(announced ?? "").trim();
11214
11294
  const v04 = identity.startsWith(ROOM_IDENTITY_PREFIX) && identity.slice(ROOM_IDENTITY_PREFIX.length).trim().length > 0;
11215
- return v04 || currentRoomId(announced) !== null || legacyRoomId(announced) !== null;
11295
+ return v04 || namedRoomLabel(announced) !== null || currentRoomMetadata(announced) !== null || legacyRoomId(announced) !== null;
11216
11296
  }
11217
11297
  function contactMessagePreview(announcedContact, text) {
11218
11298
  const line = roomLineForContact(announcedContact, text);
11219
11299
  return line ? roomMessagePreview(line) : String(text ?? "");
11220
11300
  }
11221
- function systemLine(kind, label, text) {
11222
- return { variant: "system", kind, author: "", role: "", label, text };
11301
+ function systemLine(kind, label, text, extra = {}) {
11302
+ return { variant: "system", kind, author: "", role: "", label, text, ...extra };
11303
+ }
11304
+ function humanizeValue(value) {
11305
+ return String(value).replace(/_/g, " ").replace(/^./, (character) => character.toUpperCase());
11306
+ }
11307
+ function formatBytes(value) {
11308
+ if (value < 1024) return `${value} B`;
11309
+ if (value < 1024 * 1024) return `${(value / 1024).toFixed(1)} KiB`;
11310
+ return `${(value / (1024 * 1024)).toFixed(1)} MiB`;
11311
+ }
11312
+ function boundedToken(value) {
11313
+ const token = String(value);
11314
+ return token.length <= 20 ? token : `${token.slice(0, 12)}\u2026${token.slice(-6)}`;
11315
+ }
11316
+ function boundedFutureText(value) {
11317
+ const characters = Array.from(String(value));
11318
+ return characters.length <= MAX_FUTURE_TEXT_CHARACTERS ? characters.join("") : `${characters.slice(0, MAX_FUTURE_TEXT_CHARACTERS).join("")}\u2026`;
11319
+ }
11320
+ function rejectedEnvelopeLine(reason) {
11321
+ return systemLine("room_invalid", "Room notice", "This room envelope could not be displayed safely.", {
11322
+ presentation: "lifecycle",
11323
+ details: [`Status: ${reason}`]
11324
+ });
11223
11325
  }
11224
11326
  function membershipFallback(membership) {
11225
11327
  if (!isObject(membership)) return "The room membership changed.";
@@ -11236,6 +11338,26 @@ function roomMessagePreview(line) {
11236
11338
  function collapse(text) {
11237
11339
  return String(text ?? "").replace(/\s+/g, " ").trim();
11238
11340
  }
11341
+ function roomContactLabel(announced) {
11342
+ const identity = String(announced ?? "").trim();
11343
+ if (identity.startsWith(ROOM_IDENTITY_PREFIX)) {
11344
+ const shortName = identity.slice(ROOM_IDENTITY_PREFIX.length).trim();
11345
+ return shortName || null;
11346
+ }
11347
+ const named = namedRoomLabel(announced);
11348
+ if (named !== null) return named;
11349
+ const current = currentRoomMetadata(announced);
11350
+ if (current?.slug) {
11351
+ const readable = current.slug.replace(/-/g, " ");
11352
+ return readable.replace(/[a-z]/, (letter) => letter.toUpperCase());
11353
+ }
11354
+ if (current) return `Room ${current.roomId.slice(0, 8)}`;
11355
+ const roomId = legacyRoomId(announced);
11356
+ return roomId === null ? null : `Room ${roomId.slice(0, 8)}`;
11357
+ }
11358
+ function contactDisplayName(announced) {
11359
+ return roomContactLabel(announced) ?? String(announced ?? "");
11360
+ }
11239
11361
 
11240
11362
  // src/conversation.ts
11241
11363
  var DEFAULT_PAGE_LIMIT = 50;
@@ -11247,6 +11369,7 @@ var ConversationPageError = class extends Error {
11247
11369
  };
11248
11370
  function previewOf(announcedContact, newest) {
11249
11371
  if (!newest) return "";
11372
+ if (newest.dir !== "in") return newest.text;
11250
11373
  return contactMessagePreview(announcedContact, newest.text);
11251
11374
  }
11252
11375
  function projectHistoryPage(contact, history, summary, opts = {}) {
@@ -11574,6 +11697,19 @@ function publicFetchedFiles(value) {
11574
11697
  ...Array.isArray(result.requested) || result.requested === null ? { requested: result.requested } : {}
11575
11698
  };
11576
11699
  }
11700
+ function presentContacts(value) {
11701
+ return {
11702
+ ...value,
11703
+ contacts: value.contacts.map((contact) => ({
11704
+ ...contact,
11705
+ display_name: contactDisplayName(contact.name)
11706
+ })),
11707
+ pending: value.pending.map((contact) => ({
11708
+ ...contact,
11709
+ display_name: contactDisplayName(contact.name)
11710
+ }))
11711
+ };
11712
+ }
11577
11713
  async function resolveContact(client, contact) {
11578
11714
  const contacts = await client.listContacts();
11579
11715
  const row = contacts.contacts.find((item) => item.container_id === contact || item.name === contact);
@@ -11809,7 +11945,7 @@ var ROUTES = {
11809
11945
  // is not.
11810
11946
  "GET /api/messages/incoming": async ({ client }) => client.listIncomingMessages(),
11811
11947
  // ---- contacts ------------------------------------------------------------
11812
- "GET /api/contacts": async ({ client }) => client.listContacts(),
11948
+ "GET /api/contacts": async ({ client }) => presentContacts(await client.listContacts()),
11813
11949
  // The old browser surface called this `listContactRoots`. It is not a separate
11814
11950
  // operation: roots ride along on the contacts view.
11815
11951
  "GET /api/contacts/roots": async ({ client }) => ({ roots: (await client.listContacts()).roots }),
@@ -13007,11 +13143,12 @@ async function projectFromSdk(client, job) {
13007
13143
  if (!message || message.direction !== "in" || message.peer.id !== job.contactId) {
13008
13144
  throw new Error("canonical message projection is not ready");
13009
13145
  }
13146
+ const announcedSender = job.senderName ?? message.peer.name ?? "New message";
13010
13147
  return {
13011
13148
  v: 1,
13012
13149
  kind: "message",
13013
- title: job.senderName ?? "New message",
13014
- body: message.text,
13150
+ title: contactDisplayName(announcedSender),
13151
+ body: contactMessagePreview(announcedSender, message.text),
13015
13152
  contact_id: job.contactId,
13016
13153
  wire_id: job.wireId,
13017
13154
  url
@@ -13027,7 +13164,7 @@ async function projectFromSdk(client, job) {
13027
13164
  return {
13028
13165
  v: 1,
13029
13166
  kind,
13030
- title: file.from.name || job.senderName || label,
13167
+ title: contactDisplayName(file.from.name || job.senderName || label),
13031
13168
  body: `${label}: ${file.filename}`,
13032
13169
  contact_id: job.contactId,
13033
13170
  wire_id: job.wireId,
@@ -13165,8 +13302,9 @@ async function pushEventFor(client, record) {
13165
13302
  if (message) break;
13166
13303
  }
13167
13304
  if (!message) throw new Error("canonical message was not available for push projection");
13168
- const sender = nonEmpty4(record.sender_name) ? record.sender_name : "New message";
13169
- const body = contactMessagePreview(sender, message.text);
13305
+ const announcedSender = nonEmpty4(record.sender_name) ? record.sender_name : "New message";
13306
+ const sender = contactDisplayName(announcedSender);
13307
+ const body = contactMessagePreview(announcedSender, message.text);
13170
13308
  return { v: 1, kind: "message", title: sender, body, contact_id: contactId, wire_id: wireId, url };
13171
13309
  }
13172
13310
  if (record.event === "file_received") {
@@ -13183,7 +13321,7 @@ async function pushEventFor(client, record) {
13183
13321
  return {
13184
13322
  v: 1,
13185
13323
  kind,
13186
- title: file.from.name || label,
13324
+ title: contactDisplayName(file.from.name || label),
13187
13325
  body: `${label}: ${file.filename}`,
13188
13326
  contact_id: contactId,
13189
13327
  wire_id: wireId,
package/dist/cli.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  init_define_MESSENGER_BUILD_INFO,
6
6
  operatorError,
7
7
  reportFailure
8
- } from "./chunks/chunk-XVPKSCRB.js";
8
+ } from "./chunks/chunk-LYV2Y5XE.js";
9
9
 
10
10
  // src/cli.ts
11
11
  init_define_MESSENGER_BUILD_INFO();
@@ -119,7 +119,7 @@ async function main() {
119
119
  }
120
120
  if (process.argv.length !== 3) throw new ConfigurationError("serve does not accept command-line options");
121
121
  const cfg = loadConfig();
122
- const { start } = await import("./chunks/server-WGWDNI4R.js");
122
+ const { start } = await import("./chunks/server-A2X3ONIW.js");
123
123
  const handle = await start(cfg, BUILD_INFO);
124
124
  let closing = false;
125
125
  const shutdown = (signal) => {
@@ -1,2 +1,2 @@
1
- import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-DZak_lrB.js";import{p as f}from"./chunk-JWPE2WC7-DRT5vrQ1.js";import{_ as n,l as o}from"./mermaid.core-BisAkIyL.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BIBC3C1E.js";import"./index-D7uZ1ZOu.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
2
- //# sourceMappingURL=abnfDiagram-N423BO3Z-7fD4vfRu.js.map
1
+ import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-CYMlpG2Z.js";import{p as f}from"./chunk-JWPE2WC7-Cj_r5SZM.js";import{_ as n,l as o}from"./mermaid.core-CgO1XnMl.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BhGyk9U8.js";import"./index-0ny2lCl9.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
2
+ //# sourceMappingURL=abnfDiagram-N423BO3Z-CSp6NRwP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abnfDiagram-N423BO3Z-7fD4vfRu.js","sources":["../../../node_modules/mermaid/dist/chunks/mermaid.core/abnfDiagram-N423BO3Z.mjs"],"sourcesContent":["import {\n db,\n getStyles,\n renderer\n} from \"./chunk-6Q2QTUOP.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-JWPE2WC7.mjs\";\nimport \"./chunk-3NCLNEKW.mjs\";\nimport \"./chunk-I66GZJ75.mjs\";\nimport {\n log\n} from \"./chunk-X3CZISLH.mjs\";\nimport {\n __name\n} from \"./chunk-Y2CYZVJY.mjs\";\n\n// src/diagrams/railroad/parser/abnfParser.ts\nimport {\n MermaidParseError,\n createRailroadAbnfServices\n} from \"@mermaid-js/parser\";\nvar langiumParser = createRailroadAbnfServices().RailroadAbnf.parser.LangiumParser;\nvar transformAlternation = /* @__PURE__ */ __name((alt) => {\n const alternatives = alt.alternatives.map(transformConcatenation);\n if (alternatives.length === 1) {\n return alternatives[0];\n }\n return {\n type: \"choice\",\n alternatives\n };\n}, \"transformAlternation\");\nvar transformConcatenation = /* @__PURE__ */ __name((concat) => {\n const elements = concat.elements.map(transformElement);\n if (elements.length === 1) {\n return elements[0];\n }\n return {\n type: \"sequence\",\n elements\n };\n}, \"transformConcatenation\");\nvar parseRepeat = /* @__PURE__ */ __name((repeat) => {\n if (repeat.includes(\"*\")) {\n const [minStr, maxStr] = repeat.split(\"*\");\n const min = minStr ? parseInt(minStr, 10) : 0;\n const max = maxStr ? parseInt(maxStr, 10) : Infinity;\n return { min, max };\n }\n const exact = parseInt(repeat, 10);\n return { min: exact, max: exact };\n}, \"parseRepeat\");\nvar transformElement = /* @__PURE__ */ __name((element) => {\n const inner = transformPrimary(element.primary);\n if (!element.repeat) {\n return inner;\n }\n const { min, max } = parseRepeat(element.repeat);\n if (min === 0 && max === 1) {\n return { type: \"optional\", element: inner };\n }\n return {\n type: \"repetition\",\n element: inner,\n min,\n max\n };\n}, \"transformElement\");\nvar transformPrimary = /* @__PURE__ */ __name((primary) => {\n switch (primary.$type) {\n case \"AbnfStringLiteral\":\n return {\n type: \"terminal\",\n value: primary.value\n };\n case \"AbnfNumVal\":\n return {\n type: \"terminal\",\n value: primary.value\n };\n case \"AbnfRuleName\":\n return {\n type: \"nonterminal\",\n name: primary.name\n };\n case \"AbnfGroup\":\n return transformAlternation(primary.element);\n case \"AbnfOptionalGroup\":\n return {\n type: \"optional\",\n element: transformAlternation(primary.element)\n };\n default:\n throw new Error(`Unsupported ABNF primary node: ${primary.$type}`);\n }\n}, \"transformPrimary\");\nvar transformRule = /* @__PURE__ */ __name((rule) => {\n return {\n name: rule.name,\n definition: transformAlternation(rule.definition)\n };\n}, \"transformRule\");\nvar populateDb = /* @__PURE__ */ __name((ast) => {\n populateCommonDb(ast, db);\n if (ast.title) {\n db.setTitle(ast.title);\n }\n ast.rules.map((rule) => db.addRule(transformRule(rule)));\n}, \"populateDb\");\nvar parser = {\n parse: /* @__PURE__ */ __name((input) => {\n db.clear();\n log.debug(\"[ABNF Parser] Starting Langium parse\");\n const result = langiumParser.parse(input);\n if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {\n throw new MermaidParseError(result);\n }\n const ast = result.value;\n log.debug(\"[ABNF Parser] Parsed rules:\", ast.rules.length);\n populateDb(ast);\n log.debug(\"[ABNF Parser] Parse complete\");\n }, \"parse\"),\n parser: {\n yy: db\n }\n};\n\n// src/diagrams/railroad/abnfDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer,\n styles: getStyles\n};\nexport {\n diagram\n};\n"],"names":["langiumParser","createRailroadAbnfServices","transformAlternation","__name","alt","alternatives","transformConcatenation","concat","elements","transformElement","parseRepeat","repeat","minStr","maxStr","min","max","exact","element","inner","transformPrimary","primary","transformRule","rule","populateDb","ast","populateCommonDb","db","parser","input","log","result","MermaidParseError","diagram","renderer","getStyles"],"mappings":"4PAsBA,IAAIA,EAAgBC,EAA0B,EAAG,aAAa,OAAO,cACjEC,EAAuCC,EAAQC,GAAQ,CACzD,MAAMC,EAAeD,EAAI,aAAa,IAAIE,CAAsB,EAChE,OAAID,EAAa,SAAW,EACnBA,EAAa,CAAC,EAEhB,CACL,KAAM,SACN,aAAAA,CACJ,CACA,EAAG,sBAAsB,EACrBC,EAAyCH,EAAQI,GAAW,CAC9D,MAAMC,EAAWD,EAAO,SAAS,IAAIE,CAAgB,EACrD,OAAID,EAAS,SAAW,EACfA,EAAS,CAAC,EAEZ,CACL,KAAM,WACN,SAAAA,CACJ,CACA,EAAG,wBAAwB,EACvBE,EAA8BP,EAAQQ,GAAW,CACnD,GAAIA,EAAO,SAAS,GAAG,EAAG,CACxB,KAAM,CAACC,EAAQC,CAAM,EAAIF,EAAO,MAAM,GAAG,EACnCG,EAAMF,EAAS,SAASA,EAAQ,EAAE,EAAI,EACtCG,EAAMF,EAAS,SAASA,EAAQ,EAAE,EAAI,IAC5C,MAAO,CAAE,IAAAC,EAAK,IAAAC,CAAG,CACnB,CACA,MAAMC,EAAQ,SAASL,EAAQ,EAAE,EACjC,MAAO,CAAE,IAAKK,EAAO,IAAKA,CAAK,CACjC,EAAG,aAAa,EACZP,EAAmCN,EAAQc,GAAY,CACzD,MAAMC,EAAQC,EAAiBF,EAAQ,OAAO,EAC9C,GAAI,CAACA,EAAQ,OACX,OAAOC,EAET,KAAM,CAAE,IAAAJ,EAAK,IAAAC,CAAG,EAAKL,EAAYO,EAAQ,MAAM,EAC/C,OAAIH,IAAQ,GAAKC,IAAQ,EAChB,CAAE,KAAM,WAAY,QAASG,CAAK,EAEpC,CACL,KAAM,aACN,QAASA,EACT,IAAAJ,EACA,IAAAC,CACJ,CACA,EAAG,kBAAkB,EACjBI,EAAmChB,EAAQiB,GAAY,CACzD,OAAQA,EAAQ,MAAK,CACnB,IAAK,oBACH,MAAO,CACL,KAAM,WACN,MAAOA,EAAQ,KACvB,EACI,IAAK,aACH,MAAO,CACL,KAAM,WACN,MAAOA,EAAQ,KACvB,EACI,IAAK,eACH,MAAO,CACL,KAAM,cACN,KAAMA,EAAQ,IACtB,EACI,IAAK,YACH,OAAOlB,EAAqBkB,EAAQ,OAAO,EAC7C,IAAK,oBACH,MAAO,CACL,KAAM,WACN,QAASlB,EAAqBkB,EAAQ,OAAO,CACrD,EACI,QACE,MAAM,IAAI,MAAM,kCAAkCA,EAAQ,KAAK,EAAE,CACvE,CACA,EAAG,kBAAkB,EACjBC,EAAgClB,EAAQmB,IACnC,CACL,KAAMA,EAAK,KACX,WAAYpB,EAAqBoB,EAAK,UAAU,CACpD,GACG,eAAe,EACdC,EAA6BpB,EAAQqB,GAAQ,CAC/CC,EAAiBD,EAAKE,CAAE,EACpBF,EAAI,OACNE,EAAG,SAASF,EAAI,KAAK,EAEvBA,EAAI,MAAM,IAAKF,GAASI,EAAG,QAAQL,EAAcC,CAAI,CAAC,CAAC,CACzD,EAAG,YAAY,EACXK,EAAS,CACX,MAAuBxB,EAAQyB,GAAU,CACvCF,EAAG,MAAK,EACRG,EAAI,MAAM,sCAAsC,EAChD,MAAMC,EAAS9B,EAAc,MAAM4B,CAAK,EACxC,GAAIE,EAAO,YAAY,OAAS,GAAKA,EAAO,aAAa,OAAS,EAChE,MAAM,IAAIC,EAAkBD,CAAM,EAEpC,MAAMN,EAAMM,EAAO,MACnBD,EAAI,MAAM,8BAA+BL,EAAI,MAAM,MAAM,EACzDD,EAAWC,CAAG,EACdK,EAAI,MAAM,8BAA8B,CAC1C,EAAG,OAAO,EACV,OAAQ,CACN,GAAIH,CACR,CACA,EAGIM,EAAU,CACZ,OAAAL,EACA,GAAAD,EACA,SAAAO,EACA,OAAQC,CACV","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"abnfDiagram-N423BO3Z-CSp6NRwP.js","sources":["../../../node_modules/mermaid/dist/chunks/mermaid.core/abnfDiagram-N423BO3Z.mjs"],"sourcesContent":["import {\n db,\n getStyles,\n renderer\n} from \"./chunk-6Q2QTUOP.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-JWPE2WC7.mjs\";\nimport \"./chunk-3NCLNEKW.mjs\";\nimport \"./chunk-I66GZJ75.mjs\";\nimport {\n log\n} from \"./chunk-X3CZISLH.mjs\";\nimport {\n __name\n} from \"./chunk-Y2CYZVJY.mjs\";\n\n// src/diagrams/railroad/parser/abnfParser.ts\nimport {\n MermaidParseError,\n createRailroadAbnfServices\n} from \"@mermaid-js/parser\";\nvar langiumParser = createRailroadAbnfServices().RailroadAbnf.parser.LangiumParser;\nvar transformAlternation = /* @__PURE__ */ __name((alt) => {\n const alternatives = alt.alternatives.map(transformConcatenation);\n if (alternatives.length === 1) {\n return alternatives[0];\n }\n return {\n type: \"choice\",\n alternatives\n };\n}, \"transformAlternation\");\nvar transformConcatenation = /* @__PURE__ */ __name((concat) => {\n const elements = concat.elements.map(transformElement);\n if (elements.length === 1) {\n return elements[0];\n }\n return {\n type: \"sequence\",\n elements\n };\n}, \"transformConcatenation\");\nvar parseRepeat = /* @__PURE__ */ __name((repeat) => {\n if (repeat.includes(\"*\")) {\n const [minStr, maxStr] = repeat.split(\"*\");\n const min = minStr ? parseInt(minStr, 10) : 0;\n const max = maxStr ? parseInt(maxStr, 10) : Infinity;\n return { min, max };\n }\n const exact = parseInt(repeat, 10);\n return { min: exact, max: exact };\n}, \"parseRepeat\");\nvar transformElement = /* @__PURE__ */ __name((element) => {\n const inner = transformPrimary(element.primary);\n if (!element.repeat) {\n return inner;\n }\n const { min, max } = parseRepeat(element.repeat);\n if (min === 0 && max === 1) {\n return { type: \"optional\", element: inner };\n }\n return {\n type: \"repetition\",\n element: inner,\n min,\n max\n };\n}, \"transformElement\");\nvar transformPrimary = /* @__PURE__ */ __name((primary) => {\n switch (primary.$type) {\n case \"AbnfStringLiteral\":\n return {\n type: \"terminal\",\n value: primary.value\n };\n case \"AbnfNumVal\":\n return {\n type: \"terminal\",\n value: primary.value\n };\n case \"AbnfRuleName\":\n return {\n type: \"nonterminal\",\n name: primary.name\n };\n case \"AbnfGroup\":\n return transformAlternation(primary.element);\n case \"AbnfOptionalGroup\":\n return {\n type: \"optional\",\n element: transformAlternation(primary.element)\n };\n default:\n throw new Error(`Unsupported ABNF primary node: ${primary.$type}`);\n }\n}, \"transformPrimary\");\nvar transformRule = /* @__PURE__ */ __name((rule) => {\n return {\n name: rule.name,\n definition: transformAlternation(rule.definition)\n };\n}, \"transformRule\");\nvar populateDb = /* @__PURE__ */ __name((ast) => {\n populateCommonDb(ast, db);\n if (ast.title) {\n db.setTitle(ast.title);\n }\n ast.rules.map((rule) => db.addRule(transformRule(rule)));\n}, \"populateDb\");\nvar parser = {\n parse: /* @__PURE__ */ __name((input) => {\n db.clear();\n log.debug(\"[ABNF Parser] Starting Langium parse\");\n const result = langiumParser.parse(input);\n if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {\n throw new MermaidParseError(result);\n }\n const ast = result.value;\n log.debug(\"[ABNF Parser] Parsed rules:\", ast.rules.length);\n populateDb(ast);\n log.debug(\"[ABNF Parser] Parse complete\");\n }, \"parse\"),\n parser: {\n yy: db\n }\n};\n\n// src/diagrams/railroad/abnfDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer,\n styles: getStyles\n};\nexport {\n diagram\n};\n"],"names":["langiumParser","createRailroadAbnfServices","transformAlternation","__name","alt","alternatives","transformConcatenation","concat","elements","transformElement","parseRepeat","repeat","minStr","maxStr","min","max","exact","element","inner","transformPrimary","primary","transformRule","rule","populateDb","ast","populateCommonDb","db","parser","input","log","result","MermaidParseError","diagram","renderer","getStyles"],"mappings":"4PAsBA,IAAIA,EAAgBC,EAA0B,EAAG,aAAa,OAAO,cACjEC,EAAuCC,EAAQC,GAAQ,CACzD,MAAMC,EAAeD,EAAI,aAAa,IAAIE,CAAsB,EAChE,OAAID,EAAa,SAAW,EACnBA,EAAa,CAAC,EAEhB,CACL,KAAM,SACN,aAAAA,CACJ,CACA,EAAG,sBAAsB,EACrBC,EAAyCH,EAAQI,GAAW,CAC9D,MAAMC,EAAWD,EAAO,SAAS,IAAIE,CAAgB,EACrD,OAAID,EAAS,SAAW,EACfA,EAAS,CAAC,EAEZ,CACL,KAAM,WACN,SAAAA,CACJ,CACA,EAAG,wBAAwB,EACvBE,EAA8BP,EAAQQ,GAAW,CACnD,GAAIA,EAAO,SAAS,GAAG,EAAG,CACxB,KAAM,CAACC,EAAQC,CAAM,EAAIF,EAAO,MAAM,GAAG,EACnCG,EAAMF,EAAS,SAASA,EAAQ,EAAE,EAAI,EACtCG,EAAMF,EAAS,SAASA,EAAQ,EAAE,EAAI,IAC5C,MAAO,CAAE,IAAAC,EAAK,IAAAC,CAAG,CACnB,CACA,MAAMC,EAAQ,SAASL,EAAQ,EAAE,EACjC,MAAO,CAAE,IAAKK,EAAO,IAAKA,CAAK,CACjC,EAAG,aAAa,EACZP,EAAmCN,EAAQc,GAAY,CACzD,MAAMC,EAAQC,EAAiBF,EAAQ,OAAO,EAC9C,GAAI,CAACA,EAAQ,OACX,OAAOC,EAET,KAAM,CAAE,IAAAJ,EAAK,IAAAC,CAAG,EAAKL,EAAYO,EAAQ,MAAM,EAC/C,OAAIH,IAAQ,GAAKC,IAAQ,EAChB,CAAE,KAAM,WAAY,QAASG,CAAK,EAEpC,CACL,KAAM,aACN,QAASA,EACT,IAAAJ,EACA,IAAAC,CACJ,CACA,EAAG,kBAAkB,EACjBI,EAAmChB,EAAQiB,GAAY,CACzD,OAAQA,EAAQ,MAAK,CACnB,IAAK,oBACH,MAAO,CACL,KAAM,WACN,MAAOA,EAAQ,KACvB,EACI,IAAK,aACH,MAAO,CACL,KAAM,WACN,MAAOA,EAAQ,KACvB,EACI,IAAK,eACH,MAAO,CACL,KAAM,cACN,KAAMA,EAAQ,IACtB,EACI,IAAK,YACH,OAAOlB,EAAqBkB,EAAQ,OAAO,EAC7C,IAAK,oBACH,MAAO,CACL,KAAM,WACN,QAASlB,EAAqBkB,EAAQ,OAAO,CACrD,EACI,QACE,MAAM,IAAI,MAAM,kCAAkCA,EAAQ,KAAK,EAAE,CACvE,CACA,EAAG,kBAAkB,EACjBC,EAAgClB,EAAQmB,IACnC,CACL,KAAMA,EAAK,KACX,WAAYpB,EAAqBoB,EAAK,UAAU,CACpD,GACG,eAAe,EACdC,EAA6BpB,EAAQqB,GAAQ,CAC/CC,EAAiBD,EAAKE,CAAE,EACpBF,EAAI,OACNE,EAAG,SAASF,EAAI,KAAK,EAEvBA,EAAI,MAAM,IAAKF,GAASI,EAAG,QAAQL,EAAcC,CAAI,CAAC,CAAC,CACzD,EAAG,YAAY,EACXK,EAAS,CACX,MAAuBxB,EAAQyB,GAAU,CACvCF,EAAG,MAAK,EACRG,EAAI,MAAM,sCAAsC,EAChD,MAAMC,EAAS9B,EAAc,MAAM4B,CAAK,EACxC,GAAIE,EAAO,YAAY,OAAS,GAAKA,EAAO,aAAa,OAAS,EAChE,MAAM,IAAIC,EAAkBD,CAAM,EAEpC,MAAMN,EAAMM,EAAO,MACnBD,EAAI,MAAM,8BAA+BL,EAAI,MAAM,MAAM,EACzDD,EAAWC,CAAG,EACdK,EAAI,MAAM,8BAA8B,CAC1C,EAAG,OAAO,EACV,OAAQ,CACN,GAAIH,CACR,CACA,EAGIM,EAAU,CACZ,OAAAL,EACA,GAAAD,EACA,SAAAO,EACA,OAAQC,CACV","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-BisAkIyL.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
2
- //# sourceMappingURL=arc-Cp6lomZC.js.map
1
+ import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-CgO1XnMl.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
2
+ //# sourceMappingURL=arc-4IykQt9D.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arc-Cp6lomZC.js","sources":["../../../node_modules/d3-shape/src/arc.js"],"sourcesContent":["import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n"],"names":["arcInnerRadius","d","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x0","y0","x1","y1","x2","y2","x3","y3","x10","y10","x32","y32","t","epsilon","cornerTangents","r1","rc","cw","x01","y01","lo","sqrt","ox","oy","x11","y11","x00","y00","dx","dy","d2","r","D","max","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","d3arc","innerRadius","outerRadius","cornerRadius","constant","padRadius","startAngle","endAngle","padAngle","context","path","withPath","arc","buffer","r0","a0","halfPi","a1","da","abs","tau","cos","sin","a01","a11","a00","a10","da0","da1","ap","rp","min","rc0","rc1","t0","t1","p0","asin","p1","oc","pi","ax","ay","bx","by","kc","acos","lc","atan2","a","_"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"arc-4IykQt9D.js","sources":["../../../node_modules/d3-shape/src/arc.js"],"sourcesContent":["import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n"],"names":["arcInnerRadius","d","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x0","y0","x1","y1","x2","y2","x3","y3","x10","y10","x32","y32","t","epsilon","cornerTangents","r1","rc","cw","x01","y01","lo","sqrt","ox","oy","x11","y11","x00","y00","dx","dy","d2","r","D","max","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","d3arc","innerRadius","outerRadius","cornerRadius","constant","padRadius","startAngle","endAngle","padAngle","context","path","withPath","arc","buffer","r0","a0","halfPi","a1","da","abs","tau","cos","sin","a01","a11","a00","a10","da0","da1","ap","rp","min","rc0","rc1","t0","t1","p0","asin","p1","oc","pi","ax","ay","bx","by","kc","acos","lc","atan2","a","_"],"mappings":"sKAIA,SAASA,GAAeC,EAAG,CACzB,OAAOA,EAAE,WACX,CAEA,SAASC,GAAeD,EAAG,CACzB,OAAOA,EAAE,WACX,CAEA,SAASE,GAAcF,EAAG,CACxB,OAAOA,EAAE,UACX,CAEA,SAASG,GAAYH,EAAG,CACtB,OAAOA,EAAE,QACX,CAEA,SAASI,GAAYJ,EAAG,CACtB,OAAOA,GAAKA,EAAE,QAChB,CAEA,SAASK,GAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACjD,IAAIC,EAAMN,EAAKF,EAAIS,EAAMN,EAAKF,EAC1BS,EAAMJ,EAAKF,EAAIO,EAAMJ,EAAKF,EAC1BO,EAAID,EAAMH,EAAME,EAAMD,EAC1B,GAAI,EAAAG,EAAIA,EAAIC,GACZ,OAAAD,GAAKF,GAAOT,EAAKI,GAAMM,GAAOX,EAAKI,IAAOQ,EACnC,CAACZ,EAAKY,EAAIJ,EAAKP,EAAKW,EAAIH,CAAG,CACpC,CAIA,SAASK,EAAed,EAAIC,EAAIC,EAAIC,EAAIY,EAAIC,EAAIC,EAAI,CAClD,IAAIC,EAAMlB,EAAKE,EACXiB,EAAMlB,EAAKE,EACXiB,GAAMH,EAAKD,EAAK,CAACA,GAAMK,EAAKH,EAAMA,EAAMC,EAAMA,CAAG,EACjDG,EAAKF,EAAKD,EACVI,EAAK,CAACH,EAAKF,EACXM,EAAMxB,EAAKsB,EACXG,EAAMxB,EAAKsB,EACXf,EAAMN,EAAKoB,EACXb,EAAMN,EAAKoB,EACXG,GAAOF,EAAMhB,GAAO,EACpBmB,GAAOF,EAAMhB,GAAO,EACpBmB,EAAKpB,EAAMgB,EACXK,EAAKpB,EAAMgB,EACXK,EAAKF,EAAKA,EAAKC,EAAKA,EACpBE,EAAIhB,EAAKC,EACTgB,EAAIR,EAAMf,EAAMD,EAAMiB,EACtB/B,GAAKmC,EAAK,EAAI,GAAK,GAAKR,EAAKY,GAAI,EAAGF,EAAIA,EAAID,EAAKE,EAAIA,CAAC,CAAC,EACvDE,GAAOF,EAAIH,EAAKD,EAAKlC,GAAKoC,EAC1BK,GAAO,CAACH,EAAIJ,EAAKC,EAAKnC,GAAKoC,EAC3BM,GAAOJ,EAAIH,EAAKD,EAAKlC,GAAKoC,EAC1BO,GAAO,CAACL,EAAIJ,EAAKC,EAAKnC,GAAKoC,EAC3BQ,EAAMJ,EAAMR,EACZa,EAAMJ,EAAMR,EACZa,EAAMJ,EAAMV,EACZe,EAAMJ,EAAMV,EAIhB,OAAIW,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAAKP,EAAME,EAAKD,EAAME,GAE7D,CACL,GAAIH,EACJ,GAAIC,EACJ,IAAK,CAACb,EACN,IAAK,CAACC,EACN,IAAKW,GAAOnB,EAAKgB,EAAI,GACrB,IAAKI,GAAOpB,EAAKgB,EAAI,EACzB,CACA,CAEe,SAAAW,IAAW,CACxB,IAAIC,EAAclD,GACdmD,EAAcjD,GACdkD,EAAeC,EAAS,CAAC,EACzBC,EAAY,KACZC,EAAapD,GACbqD,EAAWpD,GACXqD,EAAWpD,GACXqD,EAAU,KACVC,EAAOC,GAASC,CAAG,EAEvB,SAASA,GAAM,CACb,IAAIC,EACAxB,EACAyB,EAAK,CAACb,EAAY,MAAM,KAAM,SAAS,EACvC5B,EAAK,CAAC6B,EAAY,MAAM,KAAM,SAAS,EACvCa,EAAKT,EAAW,MAAM,KAAM,SAAS,EAAIU,GACzCC,EAAKV,EAAS,MAAM,KAAM,SAAS,EAAIS,GACvCE,EAAKC,GAAIF,EAAKF,CAAE,EAChBxC,EAAK0C,EAAKF,EAQd,GANKN,IAASA,EAAUI,EAASH,EAAI,GAGjCrC,EAAKyC,IAAIzB,EAAIhB,EAAIA,EAAKyC,EAAIA,EAAKzB,GAG/B,EAAEhB,EAAKF,GAAUsC,EAAQ,OAAO,EAAG,CAAC,UAG/BS,EAAKE,GAAMjD,EAClBsC,EAAQ,OAAOpC,EAAKgD,EAAIN,CAAE,EAAG1C,EAAKiD,EAAIP,CAAE,CAAC,EACzCN,EAAQ,IAAI,EAAG,EAAGpC,EAAI0C,EAAIE,EAAI,CAAC1C,CAAE,EAC7BuC,EAAK3C,IACPsC,EAAQ,OAAOK,EAAKO,EAAIJ,CAAE,EAAGH,EAAKQ,EAAIL,CAAE,CAAC,EACzCR,EAAQ,IAAI,EAAG,EAAGK,EAAIG,EAAIF,EAAIxC,CAAE,OAK/B,CACH,IAAIgD,EAAMR,EACNS,EAAMP,EACNQ,EAAMV,EACNW,EAAMT,EACNU,EAAMT,EACNU,EAAMV,EACNW,EAAKrB,EAAS,MAAM,KAAM,SAAS,EAAI,EACvCsB,EAAMD,EAAK1D,IAAakC,EAAY,CAACA,EAAU,MAAM,KAAM,SAAS,EAAI1B,EAAKmC,EAAKA,EAAKzC,EAAKA,CAAE,GAC9FC,EAAKyD,EAAIZ,GAAI9C,EAAKyC,CAAE,EAAI,EAAG,CAACX,EAAa,MAAM,KAAM,SAAS,CAAC,EAC/D6B,EAAM1D,EACN2D,EAAM3D,EACN4D,EACAC,EAGJ,GAAIL,EAAK3D,EAAS,CAChB,IAAIiE,EAAKC,GAAKP,EAAKhB,EAAKQ,EAAIO,CAAE,CAAC,EAC3BS,EAAKD,GAAKP,EAAKzD,EAAKiD,EAAIO,CAAE,CAAC,GAC1BF,GAAOS,EAAK,GAAKjE,GAASiE,GAAO7D,EAAK,EAAI,GAAKkD,GAAOW,EAAIV,GAAOU,IACjET,EAAM,EAAGF,EAAMC,GAAOX,EAAKE,GAAM,IACjCW,GAAOU,EAAK,GAAKnE,GAASmE,GAAO/D,EAAK,EAAI,GAAKgD,GAAOe,EAAId,GAAOc,IACjEV,EAAM,EAAGL,EAAMC,GAAOT,EAAKE,GAAM,EACxC,CAEA,IAAIzC,EAAMH,EAAKgD,EAAIE,CAAG,EAClB9C,EAAMJ,EAAKiD,EAAIC,CAAG,EAClBzD,EAAMgD,EAAKO,EAAIK,CAAG,EAClB3D,EAAM+C,EAAKQ,EAAII,CAAG,EAGtB,GAAIpD,EAAKH,EAAS,CAChB,IAAIW,EAAMT,EAAKgD,EAAIG,CAAG,EAClBzC,EAAMV,EAAKiD,EAAIE,CAAG,EAClBxC,EAAM8B,EAAKO,EAAII,CAAG,EAClBxC,EAAM6B,EAAKQ,EAAIG,CAAG,EAClBc,EAKJ,GAAIrB,EAAKsB,GACP,GAAID,EAAKlF,GAAUmB,EAAKC,EAAKO,EAAKC,EAAKH,EAAKC,EAAKjB,EAAKC,CAAG,EAAG,CAC1D,IAAI0E,EAAKjE,EAAM+D,EAAG,CAAC,EACfG,EAAKjE,EAAM8D,EAAG,CAAC,EACfI,EAAK7D,EAAMyD,EAAG,CAAC,EACfK,EAAK7D,EAAMwD,EAAG,CAAC,EACfM,GAAK,EAAIvB,EAAIwB,IAAML,EAAKE,EAAKD,EAAKE,IAAOjE,EAAK8D,EAAKA,EAAKC,EAAKA,CAAE,EAAI/D,EAAKgE,EAAKA,EAAKC,EAAKA,CAAE,EAAE,EAAI,CAAC,EAChGG,GAAKpE,EAAK4D,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,CAAC,EAC3CP,EAAMD,EAAIzD,GAAKwC,EAAKiC,KAAOF,GAAK,EAAE,EAClCZ,EAAMF,EAAIzD,GAAKD,EAAK0E,KAAOF,GAAK,EAAE,CACpC,MACEb,EAAMC,EAAM,CAGlB,CAGML,EAAMzD,EAGH8D,EAAM9D,GACb+D,EAAK9D,EAAeY,EAAKC,EAAKT,EAAKC,EAAKJ,EAAI4D,EAAK1D,CAAE,EACnD4D,EAAK/D,EAAeU,EAAKC,EAAKjB,EAAKC,EAAKM,EAAI4D,EAAK1D,CAAE,EAEnDkC,EAAQ,OAAOyB,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAGzCD,EAAM3D,EAAImC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAID,EAAKe,EAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,EAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,GAI5FkC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAID,EAAKe,EAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,EAAMd,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC3D,CAAE,EAChFkC,EAAQ,IAAI,EAAG,EAAGpC,EAAI2E,EAAMd,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAGc,EAAMb,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,EACvGkC,EAAQ,IAAI0B,EAAG,GAAIA,EAAG,GAAIF,EAAKe,EAAMb,EAAG,IAAKA,EAAG,GAAG,EAAGa,EAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,KAK/EkC,EAAQ,OAAOjC,EAAKC,CAAG,EAAGgC,EAAQ,IAAI,EAAG,EAAGpC,EAAIkD,EAAKC,EAAK,CAACjD,CAAE,GArB5CkC,EAAQ,OAAOjC,EAAKC,CAAG,EAyBzC,EAAEqC,EAAK3C,IAAY,EAAEwD,EAAMxD,GAAUsC,EAAQ,OAAO3C,EAAKC,CAAG,EAGvDiE,EAAM7D,GACb+D,EAAK9D,EAAeN,EAAKC,EAAKe,EAAKC,EAAK+B,EAAI,CAACkB,EAAKzD,CAAE,EACpD4D,EAAK/D,EAAeI,EAAKC,EAAKO,EAAKC,EAAK6B,EAAI,CAACkB,EAAKzD,CAAE,EAEpDkC,EAAQ,OAAOyB,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAGzCF,EAAM1D,EAAImC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAIF,EAAKgB,EAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,EAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,GAI5FkC,EAAQ,IAAIyB,EAAG,GAAIA,EAAG,GAAIF,EAAKgB,EAAMd,EAAG,IAAKA,EAAG,GAAG,EAAGc,EAAMd,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC3D,CAAE,EAChFkC,EAAQ,IAAI,EAAG,EAAGK,EAAIkC,EAAMd,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAGc,EAAMb,EAAG,GAAKA,EAAG,IAAKA,EAAG,GAAKA,EAAG,GAAG,EAAG5D,CAAE,EACtGkC,EAAQ,IAAI0B,EAAG,GAAIA,EAAG,GAAIH,EAAKgB,EAAMb,EAAG,IAAKA,EAAG,GAAG,EAAGa,EAAMb,EAAG,IAAKA,EAAG,GAAG,EAAG,CAAC5D,CAAE,IAK/EkC,EAAQ,IAAI,EAAG,EAAGK,EAAIY,EAAKD,EAAKlD,CAAE,CACzC,CAIA,GAFAkC,EAAQ,UAAS,EAEbI,EAAQ,OAAOJ,EAAU,KAAMI,EAAS,IAAM,IACpD,CAEA,OAAAD,EAAI,SAAW,UAAW,CACxB,IAAIvB,GAAK,CAACY,EAAY,MAAM,KAAM,SAAS,GAAI,CAACC,EAAY,MAAM,KAAM,SAAS,GAAK,EAClF+C,GAAK,CAAC3C,EAAW,MAAM,KAAM,SAAS,GAAI,CAACC,EAAS,MAAM,KAAM,SAAS,GAAK,EAAIiC,GAAK,EAC3F,MAAO,CAACnB,EAAI4B,CAAC,EAAI5D,EAAGiC,EAAI2B,CAAC,EAAI5D,CAAC,CAChC,EAEAuB,EAAI,YAAc,SAASsC,EAAG,CAC5B,OAAO,UAAU,QAAUjD,EAAc,OAAOiD,GAAM,WAAaA,EAAI9C,EAAS,CAAC8C,CAAC,EAAGtC,GAAOX,CAC9F,EAEAW,EAAI,YAAc,SAASsC,EAAG,CAC5B,OAAO,UAAU,QAAUhD,EAAc,OAAOgD,GAAM,WAAaA,EAAI9C,EAAS,CAAC8C,CAAC,EAAGtC,GAAOV,CAC9F,EAEAU,EAAI,aAAe,SAASsC,EAAG,CAC7B,OAAO,UAAU,QAAU/C,EAAe,OAAO+C,GAAM,WAAaA,EAAI9C,EAAS,CAAC8C,CAAC,EAAGtC,GAAOT,CAC/F,EAEAS,EAAI,UAAY,SAASsC,EAAG,CAC1B,OAAO,UAAU,QAAU7C,EAAY6C,GAAK,KAAO,KAAO,OAAOA,GAAM,WAAaA,EAAI9C,EAAS,CAAC8C,CAAC,EAAGtC,GAAOP,CAC/G,EAEAO,EAAI,WAAa,SAASsC,EAAG,CAC3B,OAAO,UAAU,QAAU5C,EAAa,OAAO4C,GAAM,WAAaA,EAAI9C,EAAS,CAAC8C,CAAC,EAAGtC,GAAON,CAC7F,EAEAM,EAAI,SAAW,SAASsC,EAAG,CACzB,OAAO,UAAU,QAAU3C,EAAW,OAAO2C,GAAM,WAAaA,EAAI9C,EAAS,CAAC8C,CAAC,EAAGtC,GAAOL,CAC3F,EAEAK,EAAI,SAAW,SAASsC,EAAG,CACzB,OAAO,UAAU,QAAU1C,EAAW,OAAO0C,GAAM,WAAaA,EAAI9C,EAAS,CAAC8C,CAAC,EAAGtC,GAAOJ,CAC3F,EAEAI,EAAI,QAAU,SAASsC,EAAG,CACxB,OAAO,UAAU,QAAWzC,EAAUyC,GAAY,KAAWtC,GAAOH,CACtE,EAEOG,CACT","x_google_ignoreList":[0]}