@aiquants/markdown 11.2.0 → 11.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +24 -11
  2. package/dist/{abnfDiagram-VRR7QNED-BKDymcgU.js → abnfDiagram-VRR7QNED-CBHDWVyi.js} +3 -3
  3. package/dist/{abnfDiagram-VRR7QNED-BrysG8di.cjs → abnfDiagram-VRR7QNED-RhtDe_7N.cjs} +1 -1
  4. package/dist/{arc-BB8-GmvF.cjs → arc-CM3wvUZ0.cjs} +1 -1
  5. package/dist/{arc-HSlzHLN5.js → arc-DTM_h6lx.js} +1 -1
  6. package/dist/{architectureDiagram-ZJ3FMSHR-DUr8yu65.cjs → architectureDiagram-ZJ3FMSHR-D2dRhNFv.cjs} +1 -1
  7. package/dist/{architectureDiagram-ZJ3FMSHR-Cw5TsOQY.js → architectureDiagram-ZJ3FMSHR-NRi6G3X3.js} +2 -2
  8. package/dist/{blockDiagram-677ZJIJ3-3fEMZifU.cjs → blockDiagram-677ZJIJ3-CHxk95XA.cjs} +1 -1
  9. package/dist/{blockDiagram-677ZJIJ3-B4QKTXoS.js → blockDiagram-677ZJIJ3-CV8nnIV7.js} +3 -3
  10. package/dist/{c4Diagram-LMCZKHZV-Cr3HwHd7.cjs → c4Diagram-LMCZKHZV-BvbPlr0h.cjs} +1 -1
  11. package/dist/{c4Diagram-LMCZKHZV-BF-7sSPW.js → c4Diagram-LMCZKHZV-DoD_wB8P.js} +2 -2
  12. package/dist/{channel-0qa8ce6Q.js → channel-CTUWcSTH.js} +1 -1
  13. package/dist/{channel-CHciNRIB.cjs → channel-DqD7QHJJ.cjs} +1 -1
  14. package/dist/{chunk-2Q5K7J3B-3IUhxfJe.cjs → chunk-2Q5K7J3B-BrFIRhHf.cjs} +1 -1
  15. package/dist/{chunk-2Q5K7J3B-BhPb31Ds.js → chunk-2Q5K7J3B-Cxwan1Kr.js} +1 -1
  16. package/dist/{chunk-32BRIVSS-D5djvojF.cjs → chunk-32BRIVSS-BQp-ZQs_.cjs} +1 -1
  17. package/dist/{chunk-32BRIVSS-BGg_X4L2.js → chunk-32BRIVSS-L7r_G8HL.js} +1 -1
  18. package/dist/{chunk-5VM5RSS4-BiHk_ZMt.js → chunk-5VM5RSS4-D8617CsW.js} +1 -1
  19. package/dist/{chunk-5VM5RSS4-BZ3BilMv.cjs → chunk-5VM5RSS4-txcIZk2V.cjs} +1 -1
  20. package/dist/{chunk-EX3LRPZG-C-ow5sUu.cjs → chunk-EX3LRPZG-C9LWVILV.cjs} +1 -1
  21. package/dist/{chunk-EX3LRPZG-C5kdwLBO.js → chunk-EX3LRPZG-DSgZX9T2.js} +4 -4
  22. package/dist/{chunk-JWPE2WC7-e5NtU9tE.cjs → chunk-JWPE2WC7-DPOD7SL9.cjs} +1 -1
  23. package/dist/{chunk-JWPE2WC7-DdePg2tx.js → chunk-JWPE2WC7-kIqdo6CF.js} +1 -1
  24. package/dist/{chunk-MOJQB5TN-BLSnD3t7.cjs → chunk-MOJQB5TN-C3IjuSDY.cjs} +1 -1
  25. package/dist/{chunk-MOJQB5TN-Dbd1TEnx.js → chunk-MOJQB5TN-DfEITzGw.js} +1 -1
  26. package/dist/{chunk-PUDLZKDR-hGJNph5n.cjs → chunk-PUDLZKDR-C7waD5EN.cjs} +1 -1
  27. package/dist/{chunk-PUDLZKDR-BsiVpD8V.js → chunk-PUDLZKDR-DCpimEnH.js} +6 -6
  28. package/dist/{chunk-RYQCIY6F-DX34sli0.cjs → chunk-RYQCIY6F-DD87UjzR.cjs} +1 -1
  29. package/dist/{chunk-RYQCIY6F-BUXnC2bE.js → chunk-RYQCIY6F-xEZx-wfp.js} +1 -1
  30. package/dist/{chunk-V7JOEXUC-CWk-EdL4.cjs → chunk-V7JOEXUC-CXNcuGNB.cjs} +1 -1
  31. package/dist/{chunk-V7JOEXUC-BQueT2fh.js → chunk-V7JOEXUC-CzBsdP3-.js} +5 -5
  32. package/dist/{chunk-VR4S4FIN-DI4PTMge.js → chunk-VR4S4FIN-CLDWDcHV.js} +1 -1
  33. package/dist/{chunk-VR4S4FIN-6fMMVlwy.cjs → chunk-VR4S4FIN-Cl5yJ6D5.cjs} +1 -1
  34. package/dist/{chunk-XXDRQBXY-0FVYkVuP.js → chunk-XXDRQBXY-DsBYLmqe.js} +1 -1
  35. package/dist/{chunk-XXDRQBXY-DcL_rCNu.cjs → chunk-XXDRQBXY-cbcKgiGG.cjs} +1 -1
  36. package/dist/{classDiagram-v2-EOCWNBFH-DRGfIZdE.js → classDiagram-OUVF2IWQ-D5ws8Gla.js} +2 -2
  37. package/dist/{classDiagram-OUVF2IWQ-CEZdsWvZ.cjs → classDiagram-OUVF2IWQ-DpeVtgCa.cjs} +1 -1
  38. package/dist/{classDiagram-OUVF2IWQ-DRGfIZdE.js → classDiagram-v2-EOCWNBFH-D5ws8Gla.js} +2 -2
  39. package/dist/{classDiagram-v2-EOCWNBFH-CEZdsWvZ.cjs → classDiagram-v2-EOCWNBFH-DpeVtgCa.cjs} +1 -1
  40. package/dist/components/svgImageLabels.d.ts +3 -0
  41. package/dist/components/svgRaster.d.ts +8 -0
  42. package/dist/components/toolbar.d.ts +12 -0
  43. package/dist/converter.wasm +0 -0
  44. package/dist/{cose-bilkent-JH36ORCC-3kBRwN8L.js → cose-bilkent-JH36ORCC-B1gOmkEg.js} +1 -1
  45. package/dist/{cose-bilkent-JH36ORCC-DjBFwUgZ.cjs → cose-bilkent-JH36ORCC-gLQPpHUk.cjs} +1 -1
  46. package/dist/{cynefinDiagram-TSTJHNR4-COFBfMTD.js → cynefinDiagram-TSTJHNR4-919whoYx.js} +2 -2
  47. package/dist/{cynefinDiagram-TSTJHNR4-CHqP9wNf.cjs → cynefinDiagram-TSTJHNR4-BYBWPdDO.cjs} +1 -1
  48. package/dist/{dagre-VKFMJZFB-BiBZp1UZ.js → dagre-VKFMJZFB-CkWSnQUL.js} +2 -2
  49. package/dist/{dagre-VKFMJZFB-CfOPJOfT.cjs → dagre-VKFMJZFB-qi55jjuZ.cjs} +1 -1
  50. package/dist/{diagram-FQU43EPY-DE88GkFP.js → diagram-FQU43EPY-BO3iobOs.js} +2 -2
  51. package/dist/{diagram-FQU43EPY-BWf-0ZaX.cjs → diagram-FQU43EPY-DSSMCztI.cjs} +1 -1
  52. package/dist/{diagram-G47NLZAW-BmGTMih1.cjs → diagram-G47NLZAW-B09nXJfw.cjs} +1 -1
  53. package/dist/{diagram-G47NLZAW-AGqBg4BW.js → diagram-G47NLZAW-Cf0tc0aA.js} +3 -3
  54. package/dist/{diagram-NH7WQ7WH-C_OQJCoz.js → diagram-NH7WQ7WH-BB6RW17H.js} +2 -2
  55. package/dist/{diagram-NH7WQ7WH-avUTm6At.cjs → diagram-NH7WQ7WH-Lyxwzvru.cjs} +1 -1
  56. package/dist/{diagram-OA4YK3LP-BcG8oYQH.js → diagram-OA4YK3LP-JaYkBo12.js} +3 -3
  57. package/dist/{diagram-OA4YK3LP-v4R9pnOp.cjs → diagram-OA4YK3LP-vvSPKQUH.cjs} +1 -1
  58. package/dist/{diagram-WEI45ONY-DMANh2pW.cjs → diagram-WEI45ONY-BwyxNljM.cjs} +1 -1
  59. package/dist/{diagram-WEI45ONY-B3f9-St7.js → diagram-WEI45ONY-Ca5HRdQN.js} +2 -2
  60. package/dist/{ebnfDiagram-CCIWWBDH-DViSMuU5.cjs → ebnfDiagram-CCIWWBDH-DdLMeyQC.cjs} +1 -1
  61. package/dist/{ebnfDiagram-CCIWWBDH-DHMH95Qm.js → ebnfDiagram-CCIWWBDH-DiAw4CfJ.js} +3 -3
  62. package/dist/{erDiagram-Q63AITRT-HV9x1ciI.cjs → erDiagram-Q63AITRT-Bjm6ywZL.cjs} +1 -1
  63. package/dist/{erDiagram-Q63AITRT-DrY-YSX7.js → erDiagram-Q63AITRT-C3uAJSXI.js} +4 -4
  64. package/dist/{extractHeadings-Boz4pTVy.js → extractHeadings-B6uw4Yra.js} +5510 -5438
  65. package/dist/{extractHeadings-UK9m7d29.cjs → extractHeadings-C13XIINZ.cjs} +87 -87
  66. package/dist/flowDiagram-23GEKE2U-C_wOwOVo.js +7 -0
  67. package/dist/flowDiagram-23GEKE2U-QtfsGltE.cjs +1 -0
  68. package/dist/{ganttDiagram-NO4QXBWP-BrcUlnJH.js → ganttDiagram-NO4QXBWP-DYmXJjT_.js} +2 -2
  69. package/dist/{ganttDiagram-NO4QXBWP-XbcZyqEG.cjs → ganttDiagram-NO4QXBWP-DsgcCBX-.cjs} +1 -1
  70. package/dist/{gitGraphDiagram-IHSO6WYX-DDgZkg3G.cjs → gitGraphDiagram-IHSO6WYX-Dif1CkFs.cjs} +1 -1
  71. package/dist/{gitGraphDiagram-IHSO6WYX-Dqk3F0Su.js → gitGraphDiagram-IHSO6WYX-DrVk6UCc.js} +3 -3
  72. package/dist/index.cjs +1 -1
  73. package/dist/index.client.cjs +1 -1
  74. package/dist/index.client.js +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/{infoDiagram-FWYZ7A6U-DM1S6-Hc.cjs → infoDiagram-FWYZ7A6U-C0lktmoS.cjs} +1 -1
  77. package/dist/{infoDiagram-FWYZ7A6U-a32XjwX5.js → infoDiagram-FWYZ7A6U-sn774MmG.js} +1 -1
  78. package/dist/{ishikawaDiagram-FXEZZL3T-DWsA1PP7.js → ishikawaDiagram-FXEZZL3T-CO2dFzp0.js} +1 -1
  79. package/dist/{ishikawaDiagram-FXEZZL3T-CHzSqzMH.cjs → ishikawaDiagram-FXEZZL3T-FxqvFozF.cjs} +1 -1
  80. package/dist/{journeyDiagram-5HDEW3XC-Cis5Fa71.cjs → journeyDiagram-5HDEW3XC-BWtP4L5i.cjs} +1 -1
  81. package/dist/{journeyDiagram-5HDEW3XC-CkVTUCEp.js → journeyDiagram-5HDEW3XC-DR9yN3TX.js} +4 -4
  82. package/dist/{kanban-definition-HUTT4EX6-DcANcb4G.cjs → kanban-definition-HUTT4EX6-06pnLnb8.cjs} +1 -1
  83. package/dist/{kanban-definition-HUTT4EX6-B30ORUDT.js → kanban-definition-HUTT4EX6-C0ais5E8.js} +2 -2
  84. package/dist/{linear-CAd-44F2.cjs → linear-BdAEOCTg.cjs} +1 -1
  85. package/dist/{linear-uw6vQWir.js → linear-C1ElxCAF.js} +1 -1
  86. package/dist/{mindmap-definition-LN4V7U3C-CP0bNnn-.cjs → mindmap-definition-LN4V7U3C-B2fkPG93.cjs} +1 -1
  87. package/dist/{mindmap-definition-LN4V7U3C-D-yIE9Kv.js → mindmap-definition-LN4V7U3C-DV9IVNXB.js} +3 -3
  88. package/dist/{pegDiagram-2B236MQR-BOdy4HUA.js → pegDiagram-2B236MQR-BqyUnioq.js} +3 -3
  89. package/dist/{pegDiagram-2B236MQR-Brh5cxKw.cjs → pegDiagram-2B236MQR-mbYpu4tr.cjs} +1 -1
  90. package/dist/{pieDiagram-ENE6RG2P-CEaHvWUM.cjs → pieDiagram-ENE6RG2P-BRnxo4U8.cjs} +1 -1
  91. package/dist/{pieDiagram-ENE6RG2P-1cY-R9MG.js → pieDiagram-ENE6RG2P-Bt1RRvjY.js} +3 -3
  92. package/dist/{quadrantDiagram-ABIIQ3AL-C5CTuaUm.cjs → quadrantDiagram-ABIIQ3AL-BUFLtZUw.cjs} +1 -1
  93. package/dist/{quadrantDiagram-ABIIQ3AL-CbZZ5GEh.js → quadrantDiagram-ABIIQ3AL-Dw51VXFI.js} +2 -2
  94. package/dist/{railroadDiagram-RFXS5EU6-DThY6dTL.js → railroadDiagram-RFXS5EU6-CmOA5o_d.js} +3 -3
  95. package/dist/{railroadDiagram-RFXS5EU6-C6-tc-QZ.cjs → railroadDiagram-RFXS5EU6-UM6xkPjd.cjs} +1 -1
  96. package/dist/{requirementDiagram-TGXJPOKE-h_ZfNqUh.cjs → requirementDiagram-TGXJPOKE-8ArbyRU3.cjs} +1 -1
  97. package/dist/{requirementDiagram-TGXJPOKE-BwtXYJtb.js → requirementDiagram-TGXJPOKE-Dqm0JbUO.js} +3 -3
  98. package/dist/{sankeyDiagram-HTMAVEWB-DkwdXFCH.js → sankeyDiagram-HTMAVEWB-B5vAZunk.js} +1 -1
  99. package/dist/{sankeyDiagram-HTMAVEWB-DalNC8XY.cjs → sankeyDiagram-HTMAVEWB-DZ8GFTQp.cjs} +1 -1
  100. package/dist/{sequenceDiagram-DBY2YBRQ-BE2rVf2w.cjs → sequenceDiagram-DBY2YBRQ-Gn5MDMnL.cjs} +1 -1
  101. package/dist/{sequenceDiagram-DBY2YBRQ-CZHBSmBp.js → sequenceDiagram-DBY2YBRQ-uuuSzhVp.js} +3 -3
  102. package/dist/{sizeCapture-X5ZJPWSS-o-wx7oGH.js → sizeCapture-X5ZJPWSS-8MTcAVtS.js} +1 -1
  103. package/dist/{sizeCapture-X5ZJPWSS-CiSkHK1v.cjs → sizeCapture-X5ZJPWSS-BYPlek4L.cjs} +1 -1
  104. package/dist/{stateDiagram-2N3HPSRC-C2yZajhM.js → stateDiagram-2N3HPSRC-B26FS7jn.js} +2 -2
  105. package/dist/{stateDiagram-2N3HPSRC-Cts12p59.cjs → stateDiagram-2N3HPSRC-DcMx4da-.cjs} +1 -1
  106. package/dist/{stateDiagram-v2-6OUMAXLB-B8p1-c97.cjs → stateDiagram-v2-6OUMAXLB-ByTp0tao.cjs} +1 -1
  107. package/dist/{stateDiagram-v2-6OUMAXLB-VE-c3q_l.js → stateDiagram-v2-6OUMAXLB-DwHp4lqJ.js} +2 -2
  108. package/dist/styles/markdown.css +1 -1
  109. package/dist/styles/markdown.standalone.css +1 -1
  110. package/dist/{swimlanes-5IMT3BWC-DeNuvXGa.cjs → swimlanes-5IMT3BWC-COEdbJMp.cjs} +1 -1
  111. package/dist/{swimlanes-5IMT3BWC-TTTBHYYv.js → swimlanes-5IMT3BWC-SbQF6zqF.js} +3 -3
  112. package/dist/{swimlanesDiagram-G3AALYLV-Bxz106Lt.cjs → swimlanesDiagram-G3AALYLV-C0gqMROP.cjs} +1 -1
  113. package/dist/{swimlanesDiagram-G3AALYLV-Buup5yvb.js → swimlanesDiagram-G3AALYLV-DAdz3_b7.js} +2 -2
  114. package/dist/{timeline-definition-FHXFAJF6-c15QQTDf.cjs → timeline-definition-FHXFAJF6-DZGHbSpR.cjs} +1 -1
  115. package/dist/{timeline-definition-FHXFAJF6-C_zjmLAX.js → timeline-definition-FHXFAJF6-fmCUTBQj.js} +2 -2
  116. package/dist/{vennDiagram-L72KCM5P-CjX3W2Ne.cjs → vennDiagram-L72KCM5P-CsNtbCv1.cjs} +1 -1
  117. package/dist/{vennDiagram-L72KCM5P-DNLnBVJ_.js → vennDiagram-L72KCM5P-DwEGVrpl.js} +1 -1
  118. package/dist/{wardleyDiagram-EHGQE667-CjE65uje.js → wardleyDiagram-EHGQE667-BV41ARvm.js} +2 -2
  119. package/dist/{wardleyDiagram-EHGQE667-UlY3HJxP.cjs → wardleyDiagram-EHGQE667-DJUb0osY.cjs} +1 -1
  120. package/dist/{xychartDiagram-FW5EYKEG-DziQHnEA.js → xychartDiagram-FW5EYKEG-B1Pmn4Zf.js} +2 -2
  121. package/dist/{xychartDiagram-FW5EYKEG-DDVfULUl.cjs → xychartDiagram-FW5EYKEG-DD-HPA7H.cjs} +1 -1
  122. package/package.json +7 -7
  123. package/dist/flowDiagram-23GEKE2U-Cw3lE3iu.cjs +0 -1
  124. package/dist/flowDiagram-23GEKE2U-DeQftLq7.js +0 -7
package/README.md CHANGED
@@ -492,8 +492,9 @@ A block rendered without such a sheet shows plain inherited text: the components
492
492
 
493
493
  Give `MarkdownViewer` or `MarkdownRenderer` a reader of image sources (`imageSource`, a `MarkdownImageSourceReader`),
494
494
  and every storage SVG image that stands alone in its paragraph shows its source a press away: a toolbar above the image
495
- whose **Source** toggle swaps the image for the text of its file, as written, and back, and whose **Copy** puts that
496
- text on the clipboard. Without a reader every image renders as written.
495
+ whose **Source** toggle swaps the image for the text of its file, as written, and back, and whose **Copy** puts the
496
+ image (as a PNG any application pastes as an image) or that text on the clipboard. Without a reader every image renders
497
+ as written.
497
498
 
498
499
  - **Which images**: a paragraph whose only child (besides white space) is an `img` that, as the allow list keeps it,
499
500
  carries a `data-asset-src` ending in `.svg` (any ASCII letter case), a `src`, and no `data-asset-exists="false"`, in a
@@ -513,15 +514,24 @@ text on the clipboard. Without a reader every image renders as written.
513
514
  or the block goes away. Until the answer it shows a loading line; then the text in a `<pre>` that wraps (a one-line
514
515
  SVG never runs out sideways), never interprets it, takes the focus (the keyboard scrolls it) and is capped at the
515
516
  viewport height less 2 × 44 px (`--aqmd-viewport-cap`, as the diagram and table boxes are) with its own scrolling. A
516
- source the host cut gets a note under it. A failure shows its text, with **Try again** when it may pass (the focus
517
+ source the host cut gets a note under it. The text sits in a `<code>` inside the `<pre>`, so the display style colours
518
+ it as it colours its code blocks (Zenn's white text on its dark code background in either colour scheme). A failure
519
+ shows its text, with **Try again** when it may pass (the focus
517
520
  moves to the toggle as the button goes). The press keeps the focus on the toggle (`aria-pressed`); the choice is not
518
521
  kept, so the block opens on the image.
519
522
  - **Copying**: **Copy** shows while the image shows and while the whole source shows, and tells the outcome in the
520
- block's status line. With the source shown it writes the text exactly as read. With the image shown it reads the file
521
- through the reader and hands the clipboard that read as a `ClipboardItem` within the press, so a browser that only
522
- writes during a press (Safari) takes it too; a file the host cut, or a read that fails, copies nothing and says it
523
- could not copy, as does a browser without `ClipboardItem`. A source the host cut never offers Copy, so the clipboard
524
- never gets part of a file. Leaving the block aborts the read.
523
+ block's status line.
524
+ - With the image shown (`copyImage`, its outcomes `copiedImage` and `copyImageFailed`) it copies the image to paste as
525
+ an image: it reads the file through the reader, draws it on a canvas at the SVG's own width and height (the size a
526
+ browser's own Copy image gives; a root with only a `viewBox` is drawn at the size the document shows it), within
527
+ 4096 × 4096 pixels of area and 32,767 pixels a side, and hands the clipboard the PNG as an `image/png`
528
+ `ClipboardItem` within the press, so a browser that only writes during a press (Safari) takes it too. The SVG is
529
+ drawn from a blob URL of the page's own origin, so the canvas stays readable whatever origin the image comes from,
530
+ and, as the image itself, loads nothing outside the file. A file the host cut, a read that fails, or a file the
531
+ browser cannot draw copies nothing and says it could not copy, as does a browser without `ClipboardItem`.
532
+ - With the whole source shown (`copy`, its outcomes `copied` and `copyFailed`) it writes the text exactly as read. A
533
+ source the host cut never offers Copy, so the clipboard never gets part of a file.
534
+ - Leaving the block aborts the read.
525
535
  - **Toolbar**: 44 × 44 px controls in a wrapping row at the inline end that never covers the image, Copy first and the
526
536
  Source toggle at the row's end (so the toggle stays put whether Copy shows or not), one tab stop whose controls the
527
537
  arrow keys, Home and End walk, and the palette and focus ring the Mermaid and spreadsheet toolbars share
@@ -573,8 +583,11 @@ Mermaid draws in that element and the component shows the result in the slot, so
573
583
  While a finger or pen pans or pinches the drawing, the frame cancels the default action of its `touchmove` events, so the browser starts no momentum scroll and the next tap on a control is never spent stopping one. That non-passive listener is bound only while the drawing overflows its frame: over a fitting diagram a finger scrolls without the browser waiting for the page's script.
574
584
  - **Keyboard**: the frame takes focus (`tabindex="0"`, `role="group"`) and is named by the `diagram` label, which a hidden element carries with its own `lang`, so the drawing's text is not marked with it. On the frame itself, not on a link inside it and not with Ctrl, Meta or Alt held, the arrow keys pan the view by 25.9 % of the frame (only when the view can move; otherwise the page scrolls), `+` and `=` zoom in, `-` zooms out and `0` resets.
575
585
  When an element inside the drawing takes the focus (a node's link, by Tab), the view pans by the least distance that brings the element's box inside the frame, because the clipping frame is no scroll container the browser could scroll to it.
576
- - **Pan buttons**: four buttons (`pan-left`, `pan-up`, `pan-down`, `pan-right`) are shown in the toolbar only while the drawing overflows its frame, so panning never needs a drag (WCAG 2.5.7); at fit they keep their slots hidden (`visibility: hidden`: not focusable, not exposed), so zooming never adds a toolbar row or moves the frame; each moves the view by the same step as the arrow keys.
577
- - **Sizes**: under every pointer (a mouse, a pen or a finger) every control is 44 × 44 px and each menu item and the retry button at least 44 px tall (WCAG 2.2 enhanced target size). The toolbar is a wrapping row above the frame, so the controls never cover the drawing, and the menu opens below its button, aligned to the button's start, or to its end when the start would run past the viewport (`data-aqmd-control-menu`: `start` or `end`).
586
+ - **Pan buttons**: four buttons (`pan-left`, `pan-up`, `pan-down`, `pan-right`) lead the toolbar and are shown only while the drawing overflows its frame, so panning never needs a drag (WCAG 2.5.7); at fit they keep their slots hidden (`visibility: hidden`: not focusable, not exposed), so zooming never adds a toolbar row or moves the frame; each moves the view by the same step as the arrow keys.
587
+ - **Sizes**: under every pointer (a mouse, a pen or a finger) every control is 44 × 44 px and each menu item and the retry button at least 44 px tall (WCAG 2.2 enhanced target size). The toolbar is a wrapping row above the frame, aligned to the row's end, so the controls never cover the drawing.
588
+ The pan buttons come first in it, so the controls always shown (the mode menu, zoom in, zoom out and reset) stay at the row's end while the hidden pan buttons keep their slots.
589
+ The pan buttons and the other controls are two groups that each wrap as a whole, so a narrow column puts each group on a row of its own instead of dropping one control to the next row.
590
+ The menu opens below its button within the toolbar's row and the viewport: at the button's start edge, else at its end edge, else moved inside the row as near the button as it allows and narrowed to the row when the row is narrower (`data-aqmd-control-menu`: `start`, `end` or `inside`), so it stays over the diagram.
578
591
  - **Tall diagrams**: under a coarse pointer the frame is at most `calc(100svh - 2 * 2.75rem)` tall, so two 44 px bands of the page stay outside it wherever it sits and a finger can scroll the page past the diagram; the clipped drawing then overflows and pans by finger.
579
592
  - **Touch menu**: under a coarse pointer the menu button is named by `interactionModeTouch` and the menu lists four items, `none`, `zoom`, `pan` and `both`, worded for touch (see [Labels and languages](#labels-and-languages)); the checked item is the touch counterpart of the mode in force (`pan-shift` shows `pan`, `both-shift` shows `both`), and choosing an item sets that mode. Escape closes a menu and returns the focus to its button.
580
593
  - **Colours and focus ring**: the controls, the menu items, the checked item, the error message and the retry button reach 7:1 against their surfaces in both schemes (dark when `.dark` or `[data-theme="dark"]` is on an ancestor). The focus ring of the frame, the toolbar controls and the retry button is a 2 px `#003abc` outline with a white 4 px halo, 9:1 apart, so some part of it stands out on any background (WCAG 2.4.13, 1.4.11); the menu items draw it inset. The ring's rules sit outside every cascade layer, so the controls' `shadow` utility cannot replace the halo.
@@ -708,7 +721,7 @@ Total 200 235
708
721
  `data-aqmd-spreadsheet-zoom-widest`), `data-aqmd-spreadsheet-track-size` (the row of size controls) and
709
722
  `data-aqmd-spreadsheet-track-size-control` (`decreaseColumnWidth`, `increaseColumnWidth`, `autoFitColumnWidth`,
710
723
  `decreaseRowHeight`, `increaseRowHeight`), `data-aqmd-spreadsheet-menu` and `data-aqmd-spreadsheet-menu-item`
711
- (`save-with-bom`) with the menu's side `data-aqmd-control-menu` (`start` or `end`), `data-aqmd-spreadsheet-size`,
724
+ (`save-with-bom`) with the menu's place `data-aqmd-control-menu` (`start`, `end` or `inside`), `data-aqmd-spreadsheet-size`,
712
725
  `data-aqmd-spreadsheet-box`, `data-aqmd-spreadsheet-static` (with `data-aqmd-spreadsheet-static-letters` and
713
726
  `data-aqmd-spreadsheet-static-number`), `data-aqmd-spreadsheet-notice`, `data-aqmd-spreadsheet-error` (`options`, `size`
714
727
  or `load`), `data-aqmd-spreadsheet-retry`, and the state attributes `data-aqmd-spreadsheet-editable` and
@@ -1,6 +1,6 @@
1
- import { g as p, r as u, d as a } from "./chunk-MOJQB5TN-Dbd1TEnx.js";
2
- import { p as f } from "./chunk-JWPE2WC7-DdePg2tx.js";
3
- import { _ as n, U as o } from "./extractHeadings-Boz4pTVy.js";
1
+ import { g as p, r as u, d as a } from "./chunk-MOJQB5TN-DfEITzGw.js";
2
+ import { p as f } from "./chunk-JWPE2WC7-kIqdo6CF.js";
3
+ import { _ as n, U as o } from "./extractHeadings-B6uw4Yra.js";
4
4
  import { M as c, b as d } from "./cynefin-VYW2F7L2-Bkk-F_Js.js";
5
5
  var v = d().RailroadAbnf.parser.LangiumParser, i = /* @__PURE__ */ n((e) => {
6
6
  const r = e.alternatives.map(g);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./chunk-MOJQB5TN-BLSnD3t7.cjs"),u=require("./chunk-JWPE2WC7-e5NtU9tE.cjs"),n=require("./extractHeadings-UK9m7d29.cjs"),i=require("./cynefin-VYW2F7L2-MpAliYy9.cjs");var p=i.createRailroadAbnfServices().RailroadAbnf.parser.LangiumParser,o=n.__name(e=>{const r=e.alternatives.map(c);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),c=n.__name(e=>{const r=e.elements.map(d);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),f=n.__name(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"),d=n.__name(e=>{const r=b(e.primary);if(!e.repeat)return r;const{min:t,max:s}=f(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),b=n.__name(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 o(e.element);case"AbnfOptionalGroup":return{type:"optional",element:o(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),g=n.__name(e=>({name:e.name,definition:o(e.definition)}),"transformRule"),v=n.__name(e=>{u.populateCommonDb(e,a.db),e.title&&a.db.setTitle(e.title),e.rules.map(r=>a.db.addRule(g(r)))},"populateDb"),y={parse:n.__name(e=>{a.db.clear(),n.log.debug("[ABNF Parser] Starting Langium parse");const r=p.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new i.MermaidParseError(r);const t=r.value;n.log.debug("[ABNF Parser] Parsed rules:",t.rules.length),v(t),n.log.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a.db}},_={parser:y,db:a.db,renderer:a.renderer,styles:a.getStyles};exports.diagram=_;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./chunk-MOJQB5TN-C3IjuSDY.cjs"),u=require("./chunk-JWPE2WC7-DPOD7SL9.cjs"),n=require("./extractHeadings-C13XIINZ.cjs"),i=require("./cynefin-VYW2F7L2-MpAliYy9.cjs");var p=i.createRailroadAbnfServices().RailroadAbnf.parser.LangiumParser,o=n.__name(e=>{const r=e.alternatives.map(c);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),c=n.__name(e=>{const r=e.elements.map(d);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),f=n.__name(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"),d=n.__name(e=>{const r=b(e.primary);if(!e.repeat)return r;const{min:t,max:s}=f(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),b=n.__name(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 o(e.element);case"AbnfOptionalGroup":return{type:"optional",element:o(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),g=n.__name(e=>({name:e.name,definition:o(e.definition)}),"transformRule"),v=n.__name(e=>{u.populateCommonDb(e,a.db),e.title&&a.db.setTitle(e.title),e.rules.map(r=>a.db.addRule(g(r)))},"populateDb"),y={parse:n.__name(e=>{a.db.clear(),n.log.debug("[ABNF Parser] Starting Langium parse");const r=p.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new i.MermaidParseError(r);const t=r.value;n.log.debug("[ABNF Parser] Parsed rules:",t.rules.length),v(t),n.log.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a.db}},_={parser:y,db:a.db,renderer:a.renderer,styles:a.getStyles};exports.diagram=_;
@@ -1 +1 @@
1
- "use strict";const n=require("./extractHeadings-UK9m7d29.cjs");function $(o){return o.innerRadius}function b(o){return o.outerRadius}function k(o){return o.startAngle}function _(o){return o.endAngle}function nn(o){return o&&o.padAngle}function en(o,x,D,P,h,v,S,s){var E=D-o,r=P-x,e=S-h,p=s-v,i=p*E-e*r;if(!(i*i<n.epsilon))return i=(e*(x-v)-p*(o-h))/i,[o+i*E,x+i*r]}function M(o,x,D,P,h,v,S){var s=o-D,E=x-P,r=(S?v:-v)/n.sqrt(s*s+E*E),e=r*E,p=-r*s,i=o+e,u=x+p,c=D+e,f=P+p,j=(i+c)/2,l=(u+f)/2,y=c-i,g=f-u,A=y*y+g*g,R=h-v,T=i*f-c*u,H=(g<0?-1:1)*n.sqrt(n.max(0,R*R*A-T*T)),I=(T*g-y*H)/A,O=(-T*y-g*H)/A,q=(T*g+y*H)/A,d=(-T*y+g*H)/A,m=I-j,a=O-l,t=q-j,z=d-l;return m*m+a*a>t*t+z*z&&(I=q,O=d),{cx:I,cy:O,x01:-e,y01:-p,x11:I*(h/R-1),y11:O*(h/R-1)}}function an(){var o=$,x=b,D=n.constant(0),P=null,h=k,v=_,S=nn,s=null,E=n.withPath(r);function r(){var e,p,i=+o.apply(this,arguments),u=+x.apply(this,arguments),c=h.apply(this,arguments)-n.halfPi,f=v.apply(this,arguments)-n.halfPi,j=n.abs(f-c),l=f>c;if(s||(s=e=E()),u<i&&(p=u,u=i,i=p),!(u>n.epsilon))s.moveTo(0,0);else if(j>n.tau-n.epsilon)s.moveTo(u*n.cos(c),u*n.sin(c)),s.arc(0,0,u,c,f,!l),i>n.epsilon&&(s.moveTo(i*n.cos(f),i*n.sin(f)),s.arc(0,0,i,f,c,l));else{var y=c,g=f,A=c,R=f,T=j,H=j,I=S.apply(this,arguments)/2,O=I>n.epsilon&&(P?+P.apply(this,arguments):n.sqrt(i*i+u*u)),q=n.min(n.abs(u-i)/2,+D.apply(this,arguments)),d=q,m=q,a,t;if(O>n.epsilon){var z=n.asin(O/i*n.sin(I)),F=n.asin(O/u*n.sin(I));(T-=z*2)>n.epsilon?(z*=l?1:-1,A+=z,R-=z):(T=0,A=R=(c+f)/2),(H-=F*2)>n.epsilon?(F*=l?1:-1,y+=F,g-=F):(H=0,y=g=(c+f)/2)}var B=u*n.cos(y),C=u*n.sin(y),G=i*n.cos(R),J=i*n.sin(R);if(q>n.epsilon){var K=u*n.cos(g),L=u*n.sin(g),N=i*n.cos(A),Q=i*n.sin(A),w;if(j<n.pi)if(w=en(B,C,N,Q,K,L,G,J)){var U=B-w[0],V=C-w[1],W=K-w[0],X=L-w[1],Y=1/n.sin(n.acos((U*W+V*X)/(n.sqrt(U*U+V*V)*n.sqrt(W*W+X*X)))/2),Z=n.sqrt(w[0]*w[0]+w[1]*w[1]);d=n.min(q,(i-Z)/(Y-1)),m=n.min(q,(u-Z)/(Y+1))}else d=m=0}H>n.epsilon?m>n.epsilon?(a=M(N,Q,B,C,u,m,l),t=M(K,L,G,J,u,m,l),s.moveTo(a.cx+a.x01,a.cy+a.y01),m<q?s.arc(a.cx,a.cy,m,n.atan2(a.y01,a.x01),n.atan2(t.y01,t.x01),!l):(s.arc(a.cx,a.cy,m,n.atan2(a.y01,a.x01),n.atan2(a.y11,a.x11),!l),s.arc(0,0,u,n.atan2(a.cy+a.y11,a.cx+a.x11),n.atan2(t.cy+t.y11,t.cx+t.x11),!l),s.arc(t.cx,t.cy,m,n.atan2(t.y11,t.x11),n.atan2(t.y01,t.x01),!l))):(s.moveTo(B,C),s.arc(0,0,u,y,g,!l)):s.moveTo(B,C),!(i>n.epsilon)||!(T>n.epsilon)?s.lineTo(G,J):d>n.epsilon?(a=M(G,J,K,L,i,-d,l),t=M(B,C,N,Q,i,-d,l),s.lineTo(a.cx+a.x01,a.cy+a.y01),d<q?s.arc(a.cx,a.cy,d,n.atan2(a.y01,a.x01),n.atan2(t.y01,t.x01),!l):(s.arc(a.cx,a.cy,d,n.atan2(a.y01,a.x01),n.atan2(a.y11,a.x11),!l),s.arc(0,0,i,n.atan2(a.cy+a.y11,a.cx+a.x11),n.atan2(t.cy+t.y11,t.cx+t.x11),l),s.arc(t.cx,t.cy,d,n.atan2(t.y11,t.x11),n.atan2(t.y01,t.x01),!l))):s.arc(0,0,i,R,A,l)}if(s.closePath(),e)return s=null,e+""||null}return r.centroid=function(){var e=(+o.apply(this,arguments)+ +x.apply(this,arguments))/2,p=(+h.apply(this,arguments)+ +v.apply(this,arguments))/2-n.pi/2;return[n.cos(p)*e,n.sin(p)*e]},r.innerRadius=function(e){return arguments.length?(o=typeof e=="function"?e:n.constant(+e),r):o},r.outerRadius=function(e){return arguments.length?(x=typeof e=="function"?e:n.constant(+e),r):x},r.cornerRadius=function(e){return arguments.length?(D=typeof e=="function"?e:n.constant(+e),r):D},r.padRadius=function(e){return arguments.length?(P=e==null?null:typeof e=="function"?e:n.constant(+e),r):P},r.startAngle=function(e){return arguments.length?(h=typeof e=="function"?e:n.constant(+e),r):h},r.endAngle=function(e){return arguments.length?(v=typeof e=="function"?e:n.constant(+e),r):v},r.padAngle=function(e){return arguments.length?(S=typeof e=="function"?e:n.constant(+e),r):S},r.context=function(e){return arguments.length?(s=e??null,r):s},r}exports.d3arc=an;
1
+ "use strict";const n=require("./extractHeadings-C13XIINZ.cjs");function $(o){return o.innerRadius}function b(o){return o.outerRadius}function k(o){return o.startAngle}function _(o){return o.endAngle}function nn(o){return o&&o.padAngle}function en(o,x,D,P,h,v,S,s){var E=D-o,r=P-x,e=S-h,p=s-v,i=p*E-e*r;if(!(i*i<n.epsilon))return i=(e*(x-v)-p*(o-h))/i,[o+i*E,x+i*r]}function M(o,x,D,P,h,v,S){var s=o-D,E=x-P,r=(S?v:-v)/n.sqrt(s*s+E*E),e=r*E,p=-r*s,i=o+e,u=x+p,c=D+e,f=P+p,j=(i+c)/2,l=(u+f)/2,y=c-i,g=f-u,A=y*y+g*g,R=h-v,T=i*f-c*u,H=(g<0?-1:1)*n.sqrt(n.max(0,R*R*A-T*T)),I=(T*g-y*H)/A,O=(-T*y-g*H)/A,q=(T*g+y*H)/A,d=(-T*y+g*H)/A,m=I-j,a=O-l,t=q-j,z=d-l;return m*m+a*a>t*t+z*z&&(I=q,O=d),{cx:I,cy:O,x01:-e,y01:-p,x11:I*(h/R-1),y11:O*(h/R-1)}}function an(){var o=$,x=b,D=n.constant(0),P=null,h=k,v=_,S=nn,s=null,E=n.withPath(r);function r(){var e,p,i=+o.apply(this,arguments),u=+x.apply(this,arguments),c=h.apply(this,arguments)-n.halfPi,f=v.apply(this,arguments)-n.halfPi,j=n.abs(f-c),l=f>c;if(s||(s=e=E()),u<i&&(p=u,u=i,i=p),!(u>n.epsilon))s.moveTo(0,0);else if(j>n.tau-n.epsilon)s.moveTo(u*n.cos(c),u*n.sin(c)),s.arc(0,0,u,c,f,!l),i>n.epsilon&&(s.moveTo(i*n.cos(f),i*n.sin(f)),s.arc(0,0,i,f,c,l));else{var y=c,g=f,A=c,R=f,T=j,H=j,I=S.apply(this,arguments)/2,O=I>n.epsilon&&(P?+P.apply(this,arguments):n.sqrt(i*i+u*u)),q=n.min(n.abs(u-i)/2,+D.apply(this,arguments)),d=q,m=q,a,t;if(O>n.epsilon){var z=n.asin(O/i*n.sin(I)),F=n.asin(O/u*n.sin(I));(T-=z*2)>n.epsilon?(z*=l?1:-1,A+=z,R-=z):(T=0,A=R=(c+f)/2),(H-=F*2)>n.epsilon?(F*=l?1:-1,y+=F,g-=F):(H=0,y=g=(c+f)/2)}var B=u*n.cos(y),C=u*n.sin(y),G=i*n.cos(R),J=i*n.sin(R);if(q>n.epsilon){var K=u*n.cos(g),L=u*n.sin(g),N=i*n.cos(A),Q=i*n.sin(A),w;if(j<n.pi)if(w=en(B,C,N,Q,K,L,G,J)){var U=B-w[0],V=C-w[1],W=K-w[0],X=L-w[1],Y=1/n.sin(n.acos((U*W+V*X)/(n.sqrt(U*U+V*V)*n.sqrt(W*W+X*X)))/2),Z=n.sqrt(w[0]*w[0]+w[1]*w[1]);d=n.min(q,(i-Z)/(Y-1)),m=n.min(q,(u-Z)/(Y+1))}else d=m=0}H>n.epsilon?m>n.epsilon?(a=M(N,Q,B,C,u,m,l),t=M(K,L,G,J,u,m,l),s.moveTo(a.cx+a.x01,a.cy+a.y01),m<q?s.arc(a.cx,a.cy,m,n.atan2(a.y01,a.x01),n.atan2(t.y01,t.x01),!l):(s.arc(a.cx,a.cy,m,n.atan2(a.y01,a.x01),n.atan2(a.y11,a.x11),!l),s.arc(0,0,u,n.atan2(a.cy+a.y11,a.cx+a.x11),n.atan2(t.cy+t.y11,t.cx+t.x11),!l),s.arc(t.cx,t.cy,m,n.atan2(t.y11,t.x11),n.atan2(t.y01,t.x01),!l))):(s.moveTo(B,C),s.arc(0,0,u,y,g,!l)):s.moveTo(B,C),!(i>n.epsilon)||!(T>n.epsilon)?s.lineTo(G,J):d>n.epsilon?(a=M(G,J,K,L,i,-d,l),t=M(B,C,N,Q,i,-d,l),s.lineTo(a.cx+a.x01,a.cy+a.y01),d<q?s.arc(a.cx,a.cy,d,n.atan2(a.y01,a.x01),n.atan2(t.y01,t.x01),!l):(s.arc(a.cx,a.cy,d,n.atan2(a.y01,a.x01),n.atan2(a.y11,a.x11),!l),s.arc(0,0,i,n.atan2(a.cy+a.y11,a.cx+a.x11),n.atan2(t.cy+t.y11,t.cx+t.x11),l),s.arc(t.cx,t.cy,d,n.atan2(t.y11,t.x11),n.atan2(t.y01,t.x01),!l))):s.arc(0,0,i,R,A,l)}if(s.closePath(),e)return s=null,e+""||null}return r.centroid=function(){var e=(+o.apply(this,arguments)+ +x.apply(this,arguments))/2,p=(+h.apply(this,arguments)+ +v.apply(this,arguments))/2-n.pi/2;return[n.cos(p)*e,n.sin(p)*e]},r.innerRadius=function(e){return arguments.length?(o=typeof e=="function"?e:n.constant(+e),r):o},r.outerRadius=function(e){return arguments.length?(x=typeof e=="function"?e:n.constant(+e),r):x},r.cornerRadius=function(e){return arguments.length?(D=typeof e=="function"?e:n.constant(+e),r):D},r.padRadius=function(e){return arguments.length?(P=e==null?null:typeof e=="function"?e:n.constant(+e),r):P},r.startAngle=function(e){return arguments.length?(h=typeof e=="function"?e:n.constant(+e),r):h},r.endAngle=function(e){return arguments.length?(v=typeof e=="function"?e:n.constant(+e),r):v},r.padAngle=function(e){return arguments.length?(S=typeof e=="function"?e:n.constant(+e),r):S},r.context=function(e){return arguments.length?(s=e??null,r):s},r}exports.d3arc=an;
@@ -1,4 +1,4 @@
1
- import { aF as ln, aG as an, aH as y, aI as tn, aJ as M, aK as I, aL as _, aM as un, aN as rn, aO as j, aP as o, aQ as H, aR as sn, aS as on, aT as fn } from "./extractHeadings-Boz4pTVy.js";
1
+ import { aF as ln, aG as an, aH as y, aI as tn, aJ as M, aK as I, aL as _, aM as un, aN as rn, aO as j, aP as o, aQ as H, aR as sn, aS as on, aT as fn } from "./extractHeadings-B6uw4Yra.js";
2
2
  function cn(l) {
3
3
  return l.innerRadius;
4
4
  }