@flamingo-stack/openframe-frontend-core 0.0.488 → 0.0.490-1506.3944.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.
- package/dist/chat-protocol/decode.d.ts +58 -0
- package/dist/chat-protocol/decode.d.ts.map +1 -0
- package/dist/chat-protocol/encode.d.ts +44 -0
- package/dist/chat-protocol/encode.d.ts.map +1 -0
- package/dist/chat-protocol/env-flag.d.ts +35 -0
- package/dist/chat-protocol/env-flag.d.ts.map +1 -0
- package/dist/chat-protocol/events.d.ts +196 -0
- package/dist/chat-protocol/events.d.ts.map +1 -0
- package/dist/chat-protocol/frames.d.ts +213 -0
- package/dist/chat-protocol/frames.d.ts.map +1 -0
- package/dist/chat-protocol/index.cjs +494 -0
- package/dist/chat-protocol/index.cjs.map +1 -0
- package/dist/chat-protocol/index.d.ts +18 -0
- package/dist/chat-protocol/index.d.ts.map +1 -0
- package/dist/chat-protocol/index.js +478 -0
- package/dist/chat-protocol/index.js.map +1 -0
- package/dist/chat-protocol/ip-normalize.d.ts +44 -0
- package/dist/chat-protocol/ip-normalize.d.ts.map +1 -0
- package/dist/chat-protocol/nats-decoder.d.ts +26 -0
- package/dist/chat-protocol/nats-decoder.d.ts.map +1 -0
- package/dist/{chunk-AJNDDXKC.js → chunk-4NWARV5I.js} +3 -3
- package/dist/{chunk-GQX6LFFA.cjs → chunk-5CJR2GZ4.cjs} +42 -42
- package/dist/{chunk-GQX6LFFA.cjs.map → chunk-5CJR2GZ4.cjs.map} +1 -1
- package/dist/{chunk-EUYIFALO.cjs → chunk-5EYRXSY5.cjs} +14 -14
- package/dist/{chunk-EUYIFALO.cjs.map → chunk-5EYRXSY5.cjs.map} +1 -1
- package/dist/{chunk-5RXKOGH6.cjs → chunk-5LMGFI4J.cjs} +7011 -4777
- package/dist/chunk-5LMGFI4J.cjs.map +1 -0
- package/dist/{chunk-KFQXO7QB.js → chunk-6GT557KN.js} +1 -1
- package/dist/chunk-6GT557KN.js.map +1 -0
- package/dist/{chunk-77DFPD35.js → chunk-BE6DK7QY.js} +12267 -10033
- package/dist/chunk-BE6DK7QY.js.map +1 -0
- package/dist/{chunk-A7IPON2V.cjs → chunk-BIKOJ4FH.cjs} +5 -5
- package/dist/{chunk-A7IPON2V.cjs.map → chunk-BIKOJ4FH.cjs.map} +1 -1
- package/dist/{chunk-HQYJINFV.js → chunk-CORIBKHG.js} +4 -4
- package/dist/{chunk-YEEHB4T6.cjs → chunk-CSYSYJCF.cjs} +40 -40
- package/dist/{chunk-YEEHB4T6.cjs.map → chunk-CSYSYJCF.cjs.map} +1 -1
- package/dist/{chunk-SIKCXKGB.cjs → chunk-DSDZ5T4P.cjs} +7 -7
- package/dist/{chunk-SIKCXKGB.cjs.map → chunk-DSDZ5T4P.cjs.map} +1 -1
- package/dist/{chunk-PNXNWGBY.js → chunk-GTWO5NAY.js} +2 -2
- package/dist/{chunk-SCCTJ2UI.js → chunk-HSACATCD.js} +4 -4
- package/dist/{chunk-PECGZWQR.cjs → chunk-KP5KRRD6.cjs} +3 -3
- package/dist/{chunk-PECGZWQR.cjs.map → chunk-KP5KRRD6.cjs.map} +1 -1
- package/dist/{chunk-2B6773QM.cjs → chunk-LILQJ3UZ.cjs} +1 -1
- package/dist/chunk-LILQJ3UZ.cjs.map +1 -0
- package/dist/{chunk-RZSA6MZL.cjs → chunk-NWX7MMF5.cjs} +15 -15
- package/dist/{chunk-RZSA6MZL.cjs.map → chunk-NWX7MMF5.cjs.map} +1 -1
- package/dist/{chunk-V3CNNMY3.cjs → chunk-P4WTZU6L.cjs} +18 -18
- package/dist/{chunk-V3CNNMY3.cjs.map → chunk-P4WTZU6L.cjs.map} +1 -1
- package/dist/{chunk-KLYHZRAD.js → chunk-PB3BTZDU.js} +2 -2
- package/dist/{chunk-FZOBQG6M.cjs → chunk-Q6E7VJ4W.cjs} +37 -36
- package/dist/chunk-Q6E7VJ4W.cjs.map +1 -0
- package/dist/{chunk-EYEIVYYF.cjs → chunk-QSCHCZL3.cjs} +7 -7
- package/dist/{chunk-EYEIVYYF.cjs.map → chunk-QSCHCZL3.cjs.map} +1 -1
- package/dist/{chunk-YJSKQ2ZV.js → chunk-RQLBHKXN.js} +3 -3
- package/dist/{chunk-CWQACI4Z.js → chunk-RW2LPL72.js} +2 -2
- package/dist/{chunk-DX6AOHNU.cjs → chunk-S2NHJDKQ.cjs} +77 -77
- package/dist/{chunk-DX6AOHNU.cjs.map → chunk-S2NHJDKQ.cjs.map} +1 -1
- package/dist/{chunk-AHDJMEEN.js → chunk-T2EGSZFN.js} +9 -8
- package/dist/chunk-T2EGSZFN.js.map +1 -0
- package/dist/{chunk-S52LJNMU.js → chunk-TKN5667N.js} +13 -13
- package/dist/chunk-TKN5667N.js.map +1 -0
- package/dist/{chunk-3BFX6HJM.js → chunk-UUYRJPGJ.js} +6 -6
- package/dist/{chunk-F6BYUO5U.js → chunk-VHG6AX5V.js} +3 -3
- package/dist/{chunk-FOQV6RCO.cjs → chunk-VQ523ORK.cjs} +29 -29
- package/dist/{chunk-FOQV6RCO.cjs.map → chunk-VQ523ORK.cjs.map} +1 -1
- package/dist/{chunk-PXF5J24T.js → chunk-XQ2B74SI.js} +2 -2
- package/dist/{chunk-H7JX2BG7.cjs → chunk-YHOIAA2E.cjs} +76 -76
- package/dist/chunk-YHOIAA2E.cjs.map +1 -0
- package/dist/{chunk-LLWBPPZ4.js → chunk-YZ2OIYQ3.js} +6 -6
- package/dist/components/case-studies/index.cjs +10 -10
- package/dist/components/case-studies/index.js +4 -4
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/hooks/index.d.ts +0 -1
- package/dist/components/chat/hooks/index.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat-history-hydration.d.ts +47 -0
- package/dist/components/chat/hooks/use-chat-history-hydration.d.ts.map +1 -0
- package/dist/components/chat/hooks/use-chat.d.ts +1 -0
- package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +15 -48
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +10 -53
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +12 -4
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +23 -15
- package/dist/components/chat/stream/chat-dialog-store.d.ts +184 -0
- package/dist/components/chat/stream/chat-dialog-store.d.ts.map +1 -0
- package/dist/components/chat/stream/chat-stream-reducer.d.ts +367 -0
- package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -0
- package/dist/components/chat/stream/delta-batcher.d.ts +51 -0
- package/dist/components/chat/stream/delta-batcher.d.ts.map +1 -0
- package/dist/components/chat/stream/index.d.ts +17 -0
- package/dist/components/chat/stream/index.d.ts.map +1 -0
- package/dist/components/chat/stream/message-mutations.d.ts +77 -0
- package/dist/components/chat/stream/message-mutations.d.ts.map +1 -0
- package/dist/components/chat/stream/use-chat-stream-reducer.d.ts +22 -0
- package/dist/components/chat/stream/use-chat-stream-reducer.d.ts.map +1 -0
- package/dist/components/chat/types/api.types.d.ts +1 -81
- package/dist/components/chat/types/api.types.d.ts.map +1 -1
- package/dist/components/chat/types/processing.types.d.ts +2 -90
- package/dist/components/chat/types/processing.types.d.ts.map +1 -1
- package/dist/components/chat/types/unified-chat-state.types.d.ts +5 -0
- package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
- package/dist/components/chat/utils/chat-conversation-storage.d.ts +34 -0
- package/dist/components/chat/utils/chat-conversation-storage.d.ts.map +1 -0
- package/dist/components/chat/utils/extract-incomplete-message-state.d.ts +34 -6
- package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
- package/dist/components/chat/utils/index.d.ts +2 -3
- package/dist/components/chat/utils/index.d.ts.map +1 -1
- package/dist/components/chat/utils/process-historical-messages.d.ts +59 -11
- package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/help-center-pages/index.cjs +23 -23
- package/dist/components/help-center-pages/index.js +14 -14
- package/dist/components/index.cjs +182 -140
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +66 -24
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +7 -7
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/ui/index.cjs +46 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +1 -2
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +57 -15
- package/dist/components/ui/markdown/base-components.d.ts +51 -0
- package/dist/components/ui/markdown/base-components.d.ts.map +1 -0
- package/dist/components/ui/markdown/engine.d.ts +99 -0
- package/dist/components/ui/markdown/engine.d.ts.map +1 -0
- package/dist/components/ui/markdown/heading-ids.d.ts +65 -0
- package/dist/components/ui/markdown/heading-ids.d.ts.map +1 -0
- package/dist/components/ui/markdown/index.d.ts +18 -0
- package/dist/components/ui/markdown/index.d.ts.map +1 -0
- package/dist/components/ui/markdown/mermaid-diagram.d.ts +79 -0
- package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -0
- package/dist/components/ui/markdown/rich/embed-overrides.d.ts +14 -0
- package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -0
- package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +40 -0
- package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -0
- package/dist/components/ui/markdown/rich/shortcodes.d.ts +8 -0
- package/dist/components/ui/markdown/rich/shortcodes.d.ts.map +1 -0
- package/dist/components/ui/markdown/sanitize.d.ts +153 -0
- package/dist/components/ui/markdown/sanitize.d.ts.map +1 -0
- package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +23 -0
- package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -0
- package/dist/components/ui/markdown/streaming.d.ts +78 -0
- package/dist/components/ui/markdown/streaming.d.ts.map +1 -0
- package/dist/components/ui/markdown/text-size.d.ts +34 -0
- package/dist/components/ui/markdown/text-size.d.ts.map +1 -0
- package/dist/contexts/chat-runtime-context.d.ts +8 -0
- package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
- package/dist/contexts/index.cjs +2 -2
- package/dist/contexts/index.js +1 -1
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +62 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +73 -15
- package/dist/utils/index.cjs +169 -40
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +162 -41
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/markdown-fences.d.ts +42 -0
- package/dist/utils/markdown-fences.d.ts.map +1 -0
- package/dist/utils/markdown-heading-id.d.ts +85 -0
- package/dist/utils/markdown-heading-id.d.ts.map +1 -0
- package/dist/utils/markdown-section-extractor.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/chat-protocol/__tests__/__snapshots__/nats-decoder-golden.test.ts.snap +307 -0
- package/src/chat-protocol/__tests__/chat-protocol.test.ts +516 -0
- package/src/chat-protocol/__tests__/env-flag.test.ts +52 -0
- package/src/chat-protocol/__tests__/ip-normalize.test.ts +136 -0
- package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +228 -0
- package/src/chat-protocol/decode.ts +278 -0
- package/src/chat-protocol/encode.ts +71 -0
- package/src/chat-protocol/env-flag.ts +39 -0
- package/src/chat-protocol/events.ts +232 -0
- package/src/chat-protocol/frames.ts +245 -0
- package/src/chat-protocol/index.ts +21 -0
- package/src/chat-protocol/ip-normalize.ts +146 -0
- package/src/chat-protocol/nats-decoder.ts +252 -0
- package/src/components/chat/__tests__/chat-message-list.test.tsx +293 -5
- package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +207 -0
- package/src/components/chat/__tests__/chat-pending-turn.test.tsx +209 -0
- package/src/components/chat/chat-message-enhanced.tsx +111 -17
- package/src/components/chat/chat-message-list.tsx +358 -109
- package/src/components/chat/embeddable-chat.tsx +6 -0
- package/src/components/chat/hooks/.index.md +30 -33
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +36 -55
- package/src/components/chat/hooks/__tests__/__snapshots__/conversation-id-persistence-golden.test.ts.snap +37 -0
- package/src/components/chat/hooks/__tests__/__snapshots__/sse-stream-golden.test.ts.snap +0 -0
- package/src/components/chat/hooks/__tests__/conversation-id-persistence-golden.test.ts +438 -0
- package/src/components/chat/hooks/__tests__/sse-stream-golden.test.ts +318 -0
- package/src/components/chat/hooks/index.ts +0 -1
- package/src/components/chat/hooks/use-chat-history-hydration.ts +142 -0
- package/src/components/chat/hooks/use-chat.ts +20 -0
- package/src/components/chat/hooks/use-nats-chat-adapter.ts +243 -823
- package/src/components/chat/hooks/use-sse-chat-adapter.ts +417 -774
- package/src/components/chat/index.ts +5 -0
- package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +940 -0
- package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +756 -0
- package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +460 -0
- package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +894 -0
- package/src/components/chat/stream/__tests__/delta-batcher.test.ts +255 -0
- package/src/components/chat/stream/__tests__/use-chat-stream-reducer.test.ts +98 -0
- package/src/components/chat/stream/chat-dialog-store.ts +536 -0
- package/src/components/chat/stream/chat-stream-reducer.ts +1796 -0
- package/src/components/chat/stream/delta-batcher.ts +159 -0
- package/src/components/chat/stream/index.ts +55 -0
- package/src/components/chat/stream/message-mutations.ts +338 -0
- package/src/components/chat/stream/use-chat-stream-reducer.ts +126 -0
- package/src/components/chat/thinking-display.tsx +1 -1
- package/src/components/chat/types/.api.types.md +39 -49
- package/src/components/chat/types/.processing.types.md +29 -58
- package/src/components/chat/types/api.types.ts +6 -73
- package/src/components/chat/types/processing.types.ts +11 -52
- package/src/components/chat/types/unified-chat-state.types.ts +6 -0
- package/src/components/chat/utils/.index.md +31 -40
- package/src/components/chat/utils/__tests__/__snapshots__/process-historical-messages-golden.test.ts.snap +420 -0
- package/src/components/chat/utils/__tests__/__snapshots__/segment-accumulator-golden.test.ts.snap +605 -0
- package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +317 -0
- package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +270 -0
- package/src/components/chat/utils/chat-conversation-storage.ts +83 -0
- package/src/components/chat/utils/extract-incomplete-message-state.ts +63 -5
- package/src/components/chat/utils/index.ts +5 -8
- package/src/components/chat/utils/process-historical-messages.ts +352 -384
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +22 -4
- package/src/components/shared/legal-document/legal-document-page.tsx +1 -1
- package/src/components/shared/product-release/release-detail-page.tsx +19 -4
- package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +2420 -0
- package/src/components/ui/__tests__/markdown-parity.test.tsx +2528 -0
- package/src/components/ui/index.ts +1 -2
- package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +115 -0
- package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +95 -0
- package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +309 -0
- package/src/components/ui/markdown/__tests__/streaming.test.tsx +388 -0
- package/src/components/ui/markdown/base-components.tsx +360 -0
- package/src/components/ui/markdown/engine.tsx +315 -0
- package/src/components/ui/markdown/heading-ids.ts +239 -0
- package/src/components/ui/markdown/index.ts +49 -0
- package/src/components/ui/markdown/mermaid-diagram.tsx +291 -0
- package/src/components/ui/markdown/rich/embed-overrides.tsx +199 -0
- package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +184 -0
- package/src/components/ui/markdown/rich/shortcodes.ts +170 -0
- package/src/components/ui/markdown/sanitize.ts +3499 -0
- package/src/components/ui/markdown/simple-markdown-renderer.tsx +28 -0
- package/src/components/ui/markdown/streaming.ts +362 -0
- package/src/components/ui/markdown/text-size.ts +106 -0
- package/src/components/ui/release-changelog-section.tsx +1 -1
- package/src/components/ui/ticket-info-section.tsx +1 -1
- package/src/contexts/chat-runtime-context.tsx +8 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/markdown-fences.ts +127 -0
- package/src/utils/markdown-heading-id.ts +348 -0
- package/src/utils/markdown-section-extractor.ts +41 -56
- package/dist/chunk-2B6773QM.cjs.map +0 -1
- package/dist/chunk-5RXKOGH6.cjs.map +0 -1
- package/dist/chunk-77DFPD35.js.map +0 -1
- package/dist/chunk-AHDJMEEN.js.map +0 -1
- package/dist/chunk-FZOBQG6M.cjs.map +0 -1
- package/dist/chunk-H7JX2BG7.cjs.map +0 -1
- package/dist/chunk-KFQXO7QB.js.map +0 -1
- package/dist/chunk-S52LJNMU.js.map +0 -1
- package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts +0 -6
- package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +0 -1
- package/dist/components/chat/utils/chunk-parser.d.ts +0 -25
- package/dist/components/chat/utils/chunk-parser.d.ts.map +0 -1
- package/dist/components/ui/rich-markdown-renderer.d.ts +0 -34
- package/dist/components/ui/rich-markdown-renderer.d.ts.map +0 -1
- package/dist/components/ui/simple-markdown-renderer.d.ts +0 -73
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +0 -1
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +0 -77
- package/src/components/chat/hooks/use-realtime-chunk-processor.ts +0 -479
- package/src/components/chat/utils/.chunk-parser.md +0 -62
- package/src/components/chat/utils/chunk-parser.ts +0 -256
- package/src/components/ui/.simple-markdown-renderer.md +0 -52
- package/src/components/ui/rich-markdown-renderer.tsx +0 -1223
- package/src/components/ui/simple-markdown-renderer.tsx +0 -964
- /package/dist/{chunk-AJNDDXKC.js.map → chunk-4NWARV5I.js.map} +0 -0
- /package/dist/{chunk-HQYJINFV.js.map → chunk-CORIBKHG.js.map} +0 -0
- /package/dist/{chunk-PNXNWGBY.js.map → chunk-GTWO5NAY.js.map} +0 -0
- /package/dist/{chunk-SCCTJ2UI.js.map → chunk-HSACATCD.js.map} +0 -0
- /package/dist/{chunk-KLYHZRAD.js.map → chunk-PB3BTZDU.js.map} +0 -0
- /package/dist/{chunk-YJSKQ2ZV.js.map → chunk-RQLBHKXN.js.map} +0 -0
- /package/dist/{chunk-CWQACI4Z.js.map → chunk-RW2LPL72.js.map} +0 -0
- /package/dist/{chunk-3BFX6HJM.js.map → chunk-UUYRJPGJ.js.map} +0 -0
- /package/dist/{chunk-F6BYUO5U.js.map → chunk-VHG6AX5V.js.map} +0 -0
- /package/dist/{chunk-PXF5J24T.js.map → chunk-XQ2B74SI.js.map} +0 -0
- /package/dist/{chunk-LLWBPPZ4.js.map → chunk-YZ2OIYQ3.js.map} +0 -0
|
@@ -153,7 +153,9 @@ import {
|
|
|
153
153
|
CustomerInterviewCard,
|
|
154
154
|
CustomerInterviewCardSkeleton,
|
|
155
155
|
DEFAULT_CUSTOM_STATUS_COLOR,
|
|
156
|
+
DEFAULT_DIALOG_SIDE,
|
|
156
157
|
DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
|
|
158
|
+
DEFAULT_MAX_REDUCERS,
|
|
157
159
|
DashboardInfoCard,
|
|
158
160
|
DataRoomDocCard,
|
|
159
161
|
DataRoomDocCardSkeleton,
|
|
@@ -254,9 +256,11 @@ import {
|
|
|
254
256
|
ListPageContainer,
|
|
255
257
|
ListPageLayout,
|
|
256
258
|
LoadError,
|
|
259
|
+
MAX_PENDING_RETAIN_KEYS,
|
|
257
260
|
MESSAGE_ROLE,
|
|
258
261
|
MESSAGE_TYPE,
|
|
259
262
|
MarkdownEditor,
|
|
263
|
+
MarkdownEngine,
|
|
260
264
|
MarqueeWall,
|
|
261
265
|
MarqueeWallFades,
|
|
262
266
|
MediaTypeSelector,
|
|
@@ -277,6 +281,7 @@ import {
|
|
|
277
281
|
MenubarSubContent,
|
|
278
282
|
MenubarSubTrigger,
|
|
279
283
|
MenubarTrigger,
|
|
284
|
+
MermaidDiagram,
|
|
280
285
|
MessageSegmentAccumulator,
|
|
281
286
|
MingoChatHistory,
|
|
282
287
|
MingoChatHistorySkeleton,
|
|
@@ -359,11 +364,13 @@ import {
|
|
|
359
364
|
RoadmapCard,
|
|
360
365
|
RoadmapCardSkeleton,
|
|
361
366
|
RoadmapVoteButton,
|
|
367
|
+
SAFE_HTML_TAGS,
|
|
362
368
|
SCROLL_ANCHOR,
|
|
363
369
|
SCROLL_ANCHOR_WIRE_KEY,
|
|
364
370
|
SECTION_HEADING_CLASS,
|
|
365
371
|
SOURCE_ICON_NAMES,
|
|
366
372
|
SOURCE_LABELS_BY_TABLE,
|
|
373
|
+
SVG_TAGS,
|
|
367
374
|
SYNTHETIC_REALTIME_ID_PREFIXES,
|
|
368
375
|
ScrollFadeOverlay,
|
|
369
376
|
ScrollShadow,
|
|
@@ -403,6 +410,7 @@ import {
|
|
|
403
410
|
StatusBadge,
|
|
404
411
|
StatusIndicator,
|
|
405
412
|
Switch,
|
|
413
|
+
TEXT_SIZE_PRESETS,
|
|
406
414
|
TICKET_STATUS_COLOR_PRESETS,
|
|
407
415
|
TITLE_BLOCK_MIN_HEIGHT,
|
|
408
416
|
TabContent,
|
|
@@ -467,27 +475,39 @@ import {
|
|
|
467
475
|
buildChatAttachmentViewUrl,
|
|
468
476
|
buildChatRefKey,
|
|
469
477
|
buildDiscussAddendum,
|
|
478
|
+
buildEffectiveTagSet,
|
|
479
|
+
buildHeadingIdMap,
|
|
470
480
|
buildNatsWsUrl,
|
|
471
481
|
buildProductReleaseCardProps,
|
|
482
|
+
buildSanitizeSchema,
|
|
472
483
|
buildStreamFrames,
|
|
484
|
+
cardAwareUrlTransform,
|
|
473
485
|
chatChipClass,
|
|
474
486
|
clickupTaskUrl,
|
|
487
|
+
completeStreamingTail,
|
|
475
488
|
computeHistoryPrepend,
|
|
476
489
|
computeIsNewTab,
|
|
490
|
+
createChatDialogStore,
|
|
491
|
+
createChatStreamReducer,
|
|
477
492
|
createColumnHelper,
|
|
493
|
+
createDeltaBatcher,
|
|
494
|
+
createEmptyTurnMeta,
|
|
478
495
|
createMessageSegmentAccumulator,
|
|
479
496
|
decideNewTab,
|
|
497
|
+
decodeHistoricalMessageData,
|
|
480
498
|
defaultBuildProductReleaseCardProps,
|
|
481
499
|
defaultTableIdForDocumentType,
|
|
482
500
|
deriveColumns,
|
|
483
501
|
escapeMarkdownInline,
|
|
502
|
+
escapeUnknownHtmlTags,
|
|
484
503
|
executeNavigation,
|
|
485
504
|
executeNavigationImperative,
|
|
486
505
|
exportToCSV,
|
|
487
506
|
extractEntityIdFilter,
|
|
488
507
|
extractErrorMessages,
|
|
489
508
|
extractIncompleteMessageState,
|
|
490
|
-
|
|
509
|
+
extractIncompleteTailState,
|
|
510
|
+
extractText,
|
|
491
511
|
fetchEmptyStateConfig,
|
|
492
512
|
fetchSlashCommands,
|
|
493
513
|
flattenAssistantContent,
|
|
@@ -527,11 +547,8 @@ import {
|
|
|
527
547
|
hideOnError,
|
|
528
548
|
historicalToUnified,
|
|
529
549
|
interleave,
|
|
530
|
-
isControlChunk,
|
|
531
550
|
isCrossOriginUrl,
|
|
532
|
-
isErrorChunk,
|
|
533
551
|
isHistoricalUserTurn,
|
|
534
|
-
isMetadataChunk,
|
|
535
552
|
isModifierClick,
|
|
536
553
|
isQuickActionIconSpec,
|
|
537
554
|
isStructuredContent,
|
|
@@ -547,12 +564,13 @@ import {
|
|
|
547
564
|
normalizeContent,
|
|
548
565
|
normalizeHistoricalMessageData,
|
|
549
566
|
normalizeIconKey,
|
|
550
|
-
parseChunkToAction,
|
|
551
567
|
parseScrollAnchor,
|
|
552
568
|
parseWireCommandOverride,
|
|
553
569
|
processHistoricalMessages,
|
|
554
570
|
processHistoricalMessagesWithErrors,
|
|
571
|
+
processShortcodes,
|
|
555
572
|
programItemToStripProfile,
|
|
573
|
+
rehypeStripUnsafe,
|
|
556
574
|
remarkCardLinks,
|
|
557
575
|
remarkMentionChips,
|
|
558
576
|
renderChatInlineEntityCard,
|
|
@@ -562,9 +580,11 @@ import {
|
|
|
562
580
|
resolveSourceIcon,
|
|
563
581
|
resolveSourceRowCTA,
|
|
564
582
|
resolveStatusTagProps,
|
|
583
|
+
resolveTextSizeConfig,
|
|
565
584
|
resolveTicketStatus,
|
|
566
585
|
safeHref,
|
|
567
586
|
sanitizeTitleForChat,
|
|
587
|
+
splitStreamingBlocks,
|
|
568
588
|
statusBadgeVariants,
|
|
569
589
|
stripChatAttachmentMarkdown,
|
|
570
590
|
stripSameOriginToPath,
|
|
@@ -579,6 +599,7 @@ import {
|
|
|
579
599
|
useChatAttachments,
|
|
580
600
|
useChatCardItem,
|
|
581
601
|
useChatIdentity,
|
|
602
|
+
useChatStreamReducer,
|
|
582
603
|
useChunkCatchup,
|
|
583
604
|
useCloseOnNavigation,
|
|
584
605
|
useCollapsible,
|
|
@@ -586,13 +607,13 @@ import {
|
|
|
586
607
|
useDataTable,
|
|
587
608
|
useDataTableContext,
|
|
588
609
|
useEmptyStateConfig,
|
|
610
|
+
useHeadingIdMap,
|
|
589
611
|
useJetStreamDialogSubscription,
|
|
590
612
|
useMarqueeSync,
|
|
591
613
|
useNatsChatAdapter,
|
|
592
614
|
useNatsDialogSubscription,
|
|
593
615
|
usePageActionsBottomPadding,
|
|
594
616
|
useProxiedImageUrl,
|
|
595
|
-
useRealtimeChunkProcessor,
|
|
596
617
|
useSSE,
|
|
597
618
|
useScriptedStream,
|
|
598
619
|
useScrollFade,
|
|
@@ -602,7 +623,7 @@ import {
|
|
|
602
623
|
useTestRunState,
|
|
603
624
|
useUnifiedChat,
|
|
604
625
|
usesCanonicalStatusStyle
|
|
605
|
-
} from "../../chunk-
|
|
626
|
+
} from "../../chunk-BE6DK7QY.js";
|
|
606
627
|
import {
|
|
607
628
|
CommandApprovalToast,
|
|
608
629
|
ToastCard,
|
|
@@ -617,9 +638,9 @@ import {
|
|
|
617
638
|
setEmbedProxyAuth,
|
|
618
639
|
showCommandApprovalToast,
|
|
619
640
|
showToast
|
|
620
|
-
} from "../../chunk-
|
|
641
|
+
} from "../../chunk-PB3BTZDU.js";
|
|
621
642
|
import "../../chunk-OYGFWWLQ.js";
|
|
622
|
-
import "../../chunk-
|
|
643
|
+
import "../../chunk-6GT557KN.js";
|
|
623
644
|
import "../../chunk-7EUIW46X.js";
|
|
624
645
|
import "../../chunk-EL5YVPD5.js";
|
|
625
646
|
import "../../chunk-ZJJERZUA.js";
|
|
@@ -818,7 +839,9 @@ export {
|
|
|
818
839
|
CustomerInterviewCard,
|
|
819
840
|
CustomerInterviewCardSkeleton,
|
|
820
841
|
DEFAULT_CUSTOM_STATUS_COLOR,
|
|
842
|
+
DEFAULT_DIALOG_SIDE,
|
|
821
843
|
DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
|
|
844
|
+
DEFAULT_MAX_REDUCERS,
|
|
822
845
|
DashboardInfoCard,
|
|
823
846
|
DataRoomDocCard,
|
|
824
847
|
DataRoomDocCardSkeleton,
|
|
@@ -938,9 +961,11 @@ export {
|
|
|
938
961
|
LoadError,
|
|
939
962
|
CheckCircleIcon as LucideCheckCircleIcon,
|
|
940
963
|
XIcon as LucideXIcon,
|
|
964
|
+
MAX_PENDING_RETAIN_KEYS,
|
|
941
965
|
MESSAGE_ROLE,
|
|
942
966
|
MESSAGE_TYPE,
|
|
943
967
|
MarkdownEditor,
|
|
968
|
+
MarkdownEngine,
|
|
944
969
|
MarqueeWall,
|
|
945
970
|
MarqueeWallFades,
|
|
946
971
|
MediaTypeSelector,
|
|
@@ -960,6 +985,7 @@ export {
|
|
|
960
985
|
MenubarSubContent,
|
|
961
986
|
MenubarSubTrigger,
|
|
962
987
|
MenubarTrigger,
|
|
988
|
+
MermaidDiagram,
|
|
963
989
|
MessageSegmentAccumulator,
|
|
964
990
|
MingoChatHistory,
|
|
965
991
|
MingoChatHistorySkeleton,
|
|
@@ -1042,11 +1068,13 @@ export {
|
|
|
1042
1068
|
RoadmapCard,
|
|
1043
1069
|
RoadmapCardSkeleton,
|
|
1044
1070
|
RoadmapVoteButton,
|
|
1071
|
+
SAFE_HTML_TAGS,
|
|
1045
1072
|
SCROLL_ANCHOR,
|
|
1046
1073
|
SCROLL_ANCHOR_WIRE_KEY,
|
|
1047
1074
|
SECTION_HEADING_CLASS,
|
|
1048
1075
|
SOURCE_ICON_NAMES,
|
|
1049
1076
|
SOURCE_LABELS_BY_TABLE,
|
|
1077
|
+
SVG_TAGS,
|
|
1050
1078
|
SYNTHETIC_REALTIME_ID_PREFIXES,
|
|
1051
1079
|
ScrollFadeOverlay,
|
|
1052
1080
|
ScrollShadow,
|
|
@@ -1095,6 +1123,7 @@ export {
|
|
|
1095
1123
|
StatusBadge,
|
|
1096
1124
|
StatusIndicator,
|
|
1097
1125
|
Switch,
|
|
1126
|
+
TEXT_SIZE_PRESETS,
|
|
1098
1127
|
TICKET_STATUS_COLOR_PRESETS,
|
|
1099
1128
|
TITLE_BLOCK_MIN_HEIGHT,
|
|
1100
1129
|
TabContent,
|
|
@@ -1161,31 +1190,43 @@ export {
|
|
|
1161
1190
|
buildChatAttachmentViewUrl,
|
|
1162
1191
|
buildChatRefKey,
|
|
1163
1192
|
buildDiscussAddendum,
|
|
1193
|
+
buildEffectiveTagSet,
|
|
1194
|
+
buildHeadingIdMap,
|
|
1164
1195
|
buildNatsWsUrl,
|
|
1165
1196
|
buildProductReleaseCardProps,
|
|
1197
|
+
buildSanitizeSchema,
|
|
1166
1198
|
buildStreamFrames,
|
|
1167
1199
|
buttonVariants,
|
|
1200
|
+
cardAwareUrlTransform,
|
|
1168
1201
|
embedAuthedFetch as chatAuthedFetch,
|
|
1169
1202
|
chatChipClass,
|
|
1170
1203
|
clearEmbedProxyAuth as clearChatProxyAuth,
|
|
1171
1204
|
clickupTaskUrl,
|
|
1205
|
+
completeStreamingTail,
|
|
1172
1206
|
computeHistoryPrepend,
|
|
1173
1207
|
computeIsNewTab,
|
|
1208
|
+
createChatDialogStore,
|
|
1209
|
+
createChatStreamReducer,
|
|
1174
1210
|
createColumnHelper,
|
|
1211
|
+
createDeltaBatcher,
|
|
1212
|
+
createEmptyTurnMeta,
|
|
1175
1213
|
createMessageSegmentAccumulator,
|
|
1176
1214
|
decideNewTab,
|
|
1215
|
+
decodeHistoricalMessageData,
|
|
1177
1216
|
defaultBuildProductReleaseCardProps,
|
|
1178
1217
|
defaultTableIdForDocumentType,
|
|
1179
1218
|
deriveColumns,
|
|
1180
1219
|
dotColorByVariant,
|
|
1181
1220
|
escapeMarkdownInline,
|
|
1221
|
+
escapeUnknownHtmlTags,
|
|
1182
1222
|
executeNavigation,
|
|
1183
1223
|
executeNavigationImperative,
|
|
1184
1224
|
exportToCSV,
|
|
1185
1225
|
extractEntityIdFilter,
|
|
1186
1226
|
extractErrorMessages,
|
|
1187
1227
|
extractIncompleteMessageState,
|
|
1188
|
-
|
|
1228
|
+
extractIncompleteTailState,
|
|
1229
|
+
extractText,
|
|
1189
1230
|
fetchEmptyStateConfig,
|
|
1190
1231
|
fetchSlashCommands,
|
|
1191
1232
|
flattenAssistantContent,
|
|
@@ -1227,11 +1268,8 @@ export {
|
|
|
1227
1268
|
hideOnError,
|
|
1228
1269
|
historicalToUnified,
|
|
1229
1270
|
interleave,
|
|
1230
|
-
isControlChunk,
|
|
1231
1271
|
isCrossOriginUrl,
|
|
1232
|
-
isErrorChunk,
|
|
1233
1272
|
isHistoricalUserTurn,
|
|
1234
|
-
isMetadataChunk,
|
|
1235
1273
|
isModifierClick,
|
|
1236
1274
|
isQuickActionIconSpec,
|
|
1237
1275
|
isStructuredContent,
|
|
@@ -1247,13 +1285,14 @@ export {
|
|
|
1247
1285
|
normalizeContent,
|
|
1248
1286
|
normalizeHistoricalMessageData,
|
|
1249
1287
|
normalizeIconKey,
|
|
1250
|
-
parseChunkToAction,
|
|
1251
1288
|
parseScrollAnchor,
|
|
1252
1289
|
parseWireCommandOverride,
|
|
1253
1290
|
processHistoricalMessages,
|
|
1254
1291
|
processHistoricalMessagesWithErrors,
|
|
1292
|
+
processShortcodes,
|
|
1255
1293
|
programItemToStripProfile,
|
|
1256
1294
|
progressColorByVariant,
|
|
1295
|
+
rehypeStripUnsafe,
|
|
1257
1296
|
remarkCardLinks,
|
|
1258
1297
|
remarkMentionChips,
|
|
1259
1298
|
renderChatInlineEntityCard,
|
|
@@ -1263,12 +1302,14 @@ export {
|
|
|
1263
1302
|
resolveSourceIcon,
|
|
1264
1303
|
resolveSourceRowCTA,
|
|
1265
1304
|
resolveStatusTagProps,
|
|
1305
|
+
resolveTextSizeConfig,
|
|
1266
1306
|
resolveTicketStatus,
|
|
1267
1307
|
safeHref,
|
|
1268
1308
|
sanitizeTitleForChat,
|
|
1269
1309
|
setEmbedProxyAuth as setChatProxyAuth,
|
|
1270
1310
|
showCommandApprovalToast,
|
|
1271
1311
|
showToast,
|
|
1312
|
+
splitStreamingBlocks,
|
|
1272
1313
|
statusBadgeVariants,
|
|
1273
1314
|
stripChatAttachmentMarkdown,
|
|
1274
1315
|
stripSameOriginToPath,
|
|
@@ -1283,6 +1324,7 @@ export {
|
|
|
1283
1324
|
useChatAttachments,
|
|
1284
1325
|
useChatCardItem,
|
|
1285
1326
|
useChatIdentity,
|
|
1327
|
+
useChatStreamReducer,
|
|
1286
1328
|
useChunkCatchup,
|
|
1287
1329
|
useCloseOnNavigation,
|
|
1288
1330
|
useCollapsible,
|
|
@@ -1291,13 +1333,13 @@ export {
|
|
|
1291
1333
|
useDataTableContext,
|
|
1292
1334
|
useSseChatAdapter as useEmbeddedChat,
|
|
1293
1335
|
useEmptyStateConfig,
|
|
1336
|
+
useHeadingIdMap,
|
|
1294
1337
|
useJetStreamDialogSubscription,
|
|
1295
1338
|
useMarqueeSync,
|
|
1296
1339
|
useNatsChatAdapter,
|
|
1297
1340
|
useNatsDialogSubscription,
|
|
1298
1341
|
usePageActionsBottomPadding,
|
|
1299
1342
|
useProxiedImageUrl,
|
|
1300
|
-
useRealtimeChunkProcessor,
|
|
1301
1343
|
useSSE,
|
|
1302
1344
|
useScriptedStream,
|
|
1303
1345
|
useScrollFade,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Components } from 'react-markdown';
|
|
2
|
+
import type { ResolveLinkResult } from '../../../types/doc-source';
|
|
3
|
+
import type { TextSizeElement } from './text-size';
|
|
4
|
+
export declare function hasRenderableSrc(src: unknown): src is string;
|
|
5
|
+
export interface BuildBaseComponentsOptions {
|
|
6
|
+
textSizes: Record<TextSizeElement, string>;
|
|
7
|
+
demoteMarkdownH1ToH2: boolean;
|
|
8
|
+
brokenLinks: readonly string[];
|
|
9
|
+
currentPath?: string;
|
|
10
|
+
onInternalLinkClick?: (path: string, options?: {
|
|
11
|
+
expandFolder?: boolean;
|
|
12
|
+
fromInternalLink?: boolean;
|
|
13
|
+
}) => void;
|
|
14
|
+
onResolveLink?: (href: string, currentPath: string) => Promise<ResolveLinkResult>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The standard leaf renderers (`code` block + inline, `blockquote`, `div`
|
|
18
|
+
* pass-through) as standalone functions.
|
|
19
|
+
*
|
|
20
|
+
* SSOT for compositions that must OVERRIDE these renderers for a narrow
|
|
21
|
+
* special case and then fall through: the rich composition intercepts embed
|
|
22
|
+
* fence languages, shortcode-expanded `div`s and Reddit's `reddit-embed-bq`
|
|
23
|
+
* blockquote, and delegates everything else here. Previously it reproduced
|
|
24
|
+
* these renderers byte-for-byte, so any class change here silently drifted
|
|
25
|
+
* on content surfaces.
|
|
26
|
+
*
|
|
27
|
+
* THESE MUST STAY HOOK-FREE: the rich composition calls them as plain
|
|
28
|
+
* functions from inside its own renderers (`standard.code(props)`), which is
|
|
29
|
+
* not a React render of a component and would break the rules of hooks.
|
|
30
|
+
* Hook-using renderers (the headings, which read the heading-line offset
|
|
31
|
+
* from context) live in `buildBaseComponents` below and are never delegated
|
|
32
|
+
* to this way.
|
|
33
|
+
*
|
|
34
|
+
* ODS-TOKENS FLAG (ODS_TOKEN_RULES §Typography / §General): inline code keeps
|
|
35
|
+
* an inline `text-[0.9em]`, carried over verbatim from the pre-unification
|
|
36
|
+
* renderers — ODS has no relative-to-parent code size, so mapping it onto an
|
|
37
|
+
* existing token would visibly change every inline code span. Same shape as
|
|
38
|
+
* the flag in ./text-size.ts — flagged for addition to ODS, not copied
|
|
39
|
+
* anywhere else.
|
|
40
|
+
*
|
|
41
|
+
* The code BLOCK's font is NOT flagged: the raw "JetBrains Mono", "SF Mono",
|
|
42
|
+
* Consolas stack the old renderer inlined is gone, replaced by Tailwind's
|
|
43
|
+
* `font-mono` (→ `var(--font-family-heading)`, the Azeret Mono ODS stack) —
|
|
44
|
+
* the same class the inline-code branch below already used, so the two code
|
|
45
|
+
* surfaces no longer disagree about their family.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildStandardLeafRenderers({ textSizes, }: {
|
|
48
|
+
textSizes: Record<TextSizeElement, string>;
|
|
49
|
+
}): Pick<Components, 'code' | 'blockquote' | 'div'>;
|
|
50
|
+
export declare function buildBaseComponents({ textSizes, demoteMarkdownH1ToH2, brokenLinks, currentPath: propCurrentPath, onInternalLinkClick, onResolveLink, }: BuildBaseComponentsOptions): Components;
|
|
51
|
+
//# sourceMappingURL=base-components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-components.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/markdown/base-components.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4CnD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAE5D;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC3C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/G,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,GACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC,CA4DlD;AAED,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EACnB,aAAa,GACd,EAAE,0BAA0B,GAAG,UAAU,CAwLzC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MarkdownEngine — THE one react-markdown pipeline for every surface
|
|
3
|
+
* (chat messages, blog, docs, KB articles, legal, releases, admin previews).
|
|
4
|
+
*
|
|
5
|
+
* `SimpleMarkdownRenderer` and `RichMarkdownRenderer` are thin compositions
|
|
6
|
+
* over this engine (see ./simple-markdown-renderer.tsx and ./rich/) — there
|
|
7
|
+
* is exactly ONE parse path, ONE sanitizer stack, ONE mermaid, ONE
|
|
8
|
+
* heading-id algorithm, ONE link-click model. Do not fork this pipeline;
|
|
9
|
+
* extend via `componentOverrides` / `additionalRemarkPlugins` /
|
|
10
|
+
* `preprocessContent` / `extraAllowedHtmlTags`.
|
|
11
|
+
*
|
|
12
|
+
* Pipeline order (each stage documented in ./sanitize.ts):
|
|
13
|
+
* preprocessContent (composition hook, e.g. shortcodes)
|
|
14
|
+
* → completeStreamingTail (streaming only — MUST precede the escape pass)
|
|
15
|
+
* → escapeUnknownHtmlTags (text pre-pass, React 19 crash guard)
|
|
16
|
+
* → remark: remarkGfm, remarkBreaks, ...additionalRemarkPlugins
|
|
17
|
+
* → rehype: rehypeRaw → rehypeSanitize(schema) → rehypeStripUnsafe
|
|
18
|
+
* → rehypeHighlight
|
|
19
|
+
* → urlTransform: cardAwareUrlTransform
|
|
20
|
+
* → components: buildBaseComponents(...) spread-last componentOverrides
|
|
21
|
+
*/
|
|
22
|
+
import React from 'react';
|
|
23
|
+
import { type Components } from 'react-markdown';
|
|
24
|
+
import type { PluggableList } from 'unified';
|
|
25
|
+
import type { ResolveLinkResult } from '../../../types/doc-source';
|
|
26
|
+
import { type TextSizeConfig } from './text-size';
|
|
27
|
+
import { type HeadingSection } from './heading-ids';
|
|
28
|
+
export type { ResolveLinkResult };
|
|
29
|
+
/**
|
|
30
|
+
* Module-scope empty default for `brokenLinks`.
|
|
31
|
+
*
|
|
32
|
+
* A `brokenLinks = []` DEFAULT PARAMETER allocates a fresh array on every
|
|
33
|
+
* render, so the `components` useMemo (which lists it as a dep) recomputed
|
|
34
|
+
* every render, which changed `StreamingBlockRenderer`'s `components` prop
|
|
35
|
+
* identity, which made its `memo` bail EVERY time — every completed block
|
|
36
|
+
* re-parsed on every streamed token, defeating the entire atomic-block
|
|
37
|
+
* optimization. Any new default that is an object/array/function MUST be
|
|
38
|
+
* hoisted here for the same reason.
|
|
39
|
+
*
|
|
40
|
+
* Exported so the compositions that apply the SAME default before handing
|
|
41
|
+
* props down (rich) share this ONE identity instead of declaring a second
|
|
42
|
+
* module-scope empty array with a copy of this rationale. Deliberately NOT
|
|
43
|
+
* re-exported from ./index — it is an internal identity contract between the
|
|
44
|
+
* engine and its compositions, not public API.
|
|
45
|
+
*/
|
|
46
|
+
export declare const NO_BROKEN_LINKS: readonly string[];
|
|
47
|
+
export interface MarkdownEngineProps {
|
|
48
|
+
content: string;
|
|
49
|
+
className?: string;
|
|
50
|
+
/** Backend-provided heading IDs for deep-link anchors */
|
|
51
|
+
sectionIds?: HeadingSection[];
|
|
52
|
+
/** When the page already has an H1, render markdown `#` as `<h2>` */
|
|
53
|
+
demoteMarkdownH1ToH2?: boolean;
|
|
54
|
+
/** List of broken link hrefs detected server-side (shown with [BROKEN] badge) */
|
|
55
|
+
brokenLinks?: readonly string[];
|
|
56
|
+
/** Callback for internal (non-http, non-anchor) link clicks */
|
|
57
|
+
onInternalLinkClick?: (path: string, options?: {
|
|
58
|
+
expandFolder?: boolean;
|
|
59
|
+
fromInternalLink?: boolean;
|
|
60
|
+
}) => void;
|
|
61
|
+
/** Current documentation path — enables internal-link mode when set */
|
|
62
|
+
currentPath?: string;
|
|
63
|
+
/** Resolve an internal link href to a navigation path. */
|
|
64
|
+
onResolveLink?: (href: string, currentPath: string) => Promise<ResolveLinkResult>;
|
|
65
|
+
/** Pre-process the raw markdown string before rendering (e.g. shortcode expansion) */
|
|
66
|
+
preprocessContent?: (content: string) => string;
|
|
67
|
+
/** Merge additional or override react-markdown component renderers (spread LAST — caller wins) */
|
|
68
|
+
componentOverrides?: Partial<Components>;
|
|
69
|
+
/** Extra remark plugins appended after the built-in remarkGfm + remarkBreaks */
|
|
70
|
+
additionalRemarkPlugins?: PluggableList;
|
|
71
|
+
/** Text sizing preset / per-element overrides */
|
|
72
|
+
textSize?: TextSizeConfig;
|
|
73
|
+
/**
|
|
74
|
+
* Extra raw-HTML tags this composition admits. Unioned into BOTH the
|
|
75
|
+
* text pre-pass allowlist AND the sanitize schema together (the
|
|
76
|
+
* coupled-allowlist invariant — see ./sanitize.ts).
|
|
77
|
+
*/
|
|
78
|
+
extraAllowedHtmlTags?: string[];
|
|
79
|
+
/**
|
|
80
|
+
* Set true for the actively streaming message ONLY. Enables atomic-block
|
|
81
|
+
* memoization + fence tail-completion + an aria-live wrapper. The caller
|
|
82
|
+
* MUST flip back to false on completion — that final render is one
|
|
83
|
+
* authoritative whole-document parse (block cache discarded), so
|
|
84
|
+
* streaming can never permanently diverge from the settled output.
|
|
85
|
+
*/
|
|
86
|
+
streaming?: boolean;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Memoized so a parent re-render with UNCHANGED props (same `content`
|
|
90
|
+
* string, same memoized `componentOverrides`/plugins) does NOT re-parse the
|
|
91
|
+
* markdown. Re-parsing rebuilds the entire react-markdown subtree, which
|
|
92
|
+
* RE-MOUNTS any embedded inline entity cards — closing their open menus and
|
|
93
|
+
* re-triggering their fetch on every chat re-render (streaming chunk AND
|
|
94
|
+
* scroll). With stable props the renderer bails, so completed messages'
|
|
95
|
+
* cards stay mounted. The streaming path additionally memoizes completed
|
|
96
|
+
* atomic blocks so the in-flight message re-parses only its live tail.
|
|
97
|
+
*/
|
|
98
|
+
export declare const MarkdownEngine: React.NamedExoticComponent<MarkdownEngineProps>;
|
|
99
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/markdown/engine.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAM7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQnE,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAIvB,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAO,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iFAAiF;IACjF,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/G,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClF,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,kGAAkG;IAClG,kBAAkB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,aAAa,CAAC;IACxC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqMD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,iDAA2B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface HeadingSection {
|
|
2
|
+
id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
level: number;
|
|
5
|
+
}
|
|
6
|
+
/** `line (1-based, document-wide) → heading id`. */
|
|
7
|
+
export type HeadingIdMap = ReadonlyMap<number, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Line offset added to unit-relative hast positions. Non-zero only on the
|
|
10
|
+
* streaming path, where each atomic unit is parsed by its own
|
|
11
|
+
* `ReactMarkdown` (see `StreamingBlock.startLine`).
|
|
12
|
+
*/
|
|
13
|
+
export declare const HeadingLineOffsetContext: import("react").Context<number>;
|
|
14
|
+
/**
|
|
15
|
+
* The document's heading-id map, delivered by CONTEXT rather than baked into
|
|
16
|
+
* the react-markdown `components` map on purpose: the map is rebuilt on every
|
|
17
|
+
* streamed token (its input is the growing `processedContent`), so listing it
|
|
18
|
+
* as a `components` memo dep would change that map's identity each token and
|
|
19
|
+
* make every completed streaming block's `memo` bail — the exact regression
|
|
20
|
+
* `NO_BROKEN_LINKS` was introduced to fix. Through context only the heading
|
|
21
|
+
* renderers re-render.
|
|
22
|
+
*/
|
|
23
|
+
export declare const HeadingIdMapContext: import("react").Context<HeadingIdMap>;
|
|
24
|
+
/** Look up the pre-computed id for a heading hast node. Pure. */
|
|
25
|
+
export declare function useHeadingId(node: any): string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Build the document's `line → id` map. Pure: same content + same
|
|
28
|
+
* `sectionIds` always yields the same map.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildHeadingIdMap(content: string, sectionIds?: HeadingSection[]): HeadingIdMap;
|
|
31
|
+
/**
|
|
32
|
+
* Memoized `buildHeadingIdMap` for the engine, with the map's IDENTITY held
|
|
33
|
+
* stable across content changes that don't touch any heading.
|
|
34
|
+
*
|
|
35
|
+
* `content` changes on every streamed token, so the `useMemo` alone rebuilt
|
|
36
|
+
* a fresh `Map` per token; that map is the context value, so EVERY heading
|
|
37
|
+
* consumer in every already-completed block re-rendered on every token —
|
|
38
|
+
* the same identity-churn class `NO_BROKEN_LINKS` exists to prevent, just
|
|
39
|
+
* one layer down. Rebuilding is cheap; re-rendering the consumers is not, so
|
|
40
|
+
* the newly built map is compared to the previous one and the previous
|
|
41
|
+
* object is returned when the entries match.
|
|
42
|
+
*/
|
|
43
|
+
export declare function useHeadingIdMap(content: string, sectionIds?: HeadingSection[]): HeadingIdMap;
|
|
44
|
+
/**
|
|
45
|
+
* Fallback id for a heading the source scan could NOT see — in practice only
|
|
46
|
+
* a heading synthesized by a caller remark/rehype plugin, which carries no
|
|
47
|
+
* source position. (Setext, blockquote/list-nested ATX and multiple raw
|
|
48
|
+
* `<hN>`s on one line are all scanned now, so they no longer land here.)
|
|
49
|
+
*
|
|
50
|
+
* Routed through the SAME dedupe shape as the map so a fallback id can never
|
|
51
|
+
* collide with an assigned one. It stays PURE — `taken` is derived from the
|
|
52
|
+
* map, not from render order — which is why two position-less headings with
|
|
53
|
+
* IDENTICAL text still collide with each other: disambiguating those would
|
|
54
|
+
* require the shared mutable counter this module deleted.
|
|
55
|
+
*/
|
|
56
|
+
export declare function resolveFallbackHeadingId(base: string, taken: ReadonlySet<string>): string;
|
|
57
|
+
/**
|
|
58
|
+
* The ids already assigned by the document's heading-id map. Cached per map
|
|
59
|
+
* IDENTITY, which `useHeadingIdMap` now keeps stable across heading-free
|
|
60
|
+
* token growth — so this is O(headings) once, not per heading per token.
|
|
61
|
+
*/
|
|
62
|
+
export declare function useAssignedHeadingIds(): ReadonlySet<string>;
|
|
63
|
+
/** Extract plain text from React children (headings receive mixed nodes). */
|
|
64
|
+
export declare function extractText(node: any): string;
|
|
65
|
+
//# sourceMappingURL=heading-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heading-ids.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/markdown/heading-ids.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,oDAAoD;AACpD,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAUtD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,iCAAmB,CAAA;AAIxD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,uCAAiD,CAAA;AAEjF,iEAAiE;AAEjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAK1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,YAAY,CAoEd;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,YAAY,CAQd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAMzF;AAKD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAAC,MAAM,CAAC,CAO3D;AAED,6EAA6E;AAE7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAK7C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified markdown module — public surface.
|
|
3
|
+
*
|
|
4
|
+
* ONE engine (`MarkdownEngine`), two named compositions:
|
|
5
|
+
* - `SimpleMarkdownRenderer` — chat/doc surfaces (embed-free bundle)
|
|
6
|
+
* - `RichMarkdownRenderer` — authored-content surfaces (shortcodes,
|
|
7
|
+
* social embeds, Video SSOT, OG previews)
|
|
8
|
+
*/
|
|
9
|
+
export { MarkdownEngine, type MarkdownEngineProps } from './engine';
|
|
10
|
+
export { SimpleMarkdownRenderer, type SimpleMarkdownRendererProps, type ResolveLinkResult, } from './simple-markdown-renderer';
|
|
11
|
+
export { RichMarkdownRenderer, type RichMarkdownRendererProps, } from './rich/rich-markdown-renderer';
|
|
12
|
+
export { processShortcodes } from './rich/shortcodes';
|
|
13
|
+
export { SAFE_HTML_TAGS, SVG_TAGS, buildEffectiveTagSet, buildSanitizeSchema, cardAwareUrlTransform, escapeUnknownHtmlTags, rehypeStripUnsafe, } from './sanitize';
|
|
14
|
+
export { TEXT_SIZE_PRESETS, resolveTextSizeConfig, type TextSizeConfig, type TextSizeClassMap, type TextSizeElement, type TextSizePreset, } from './text-size';
|
|
15
|
+
export { MermaidDiagram } from './mermaid-diagram';
|
|
16
|
+
export { buildHeadingIdMap, useHeadingIdMap, extractText, type HeadingSection, type HeadingIdMap, } from './heading-ids';
|
|
17
|
+
export { splitStreamingBlocks, completeStreamingTail, type StreamingBlock } from './streaming';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/markdown/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single MermaidDiagram for the unified markdown engine (dark theme only —
|
|
3
|
+
* the old RichMarkdownRenderer's light-theme branch was dead code behind a
|
|
4
|
+
* hardcoded `isDarkMode = true` and is deleted, not carried over).
|
|
5
|
+
*
|
|
6
|
+
* `mermaid` stays a dynamic import so neither chat nor content bundles pay
|
|
7
|
+
* for it unless a diagram is actually rendered.
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
/**
|
|
11
|
+
* SECURITY SSOT for the mermaid renderer — the ONLY place these knobs are
|
|
12
|
+
* written. `./__tests__/mermaid-security.test.ts` imports THIS constant and
|
|
13
|
+
* spreads it into its own `mermaid.initialize`, so the fixture and the
|
|
14
|
+
* component can no longer drift: flipping `securityLevel` to `'loose'` here
|
|
15
|
+
* fails the suite (verified by doing exactly that).
|
|
16
|
+
*
|
|
17
|
+
* This renderer sits on the CHAT path, so the diagram source is MODEL output
|
|
18
|
+
* — untrusted by construction — and the rendered SVG goes through
|
|
19
|
+
* `dangerouslySetInnerHTML`. The pre-unification renderer used `'loose'`,
|
|
20
|
+
* which permits raw HTML inside labels and enables mermaid's `click`
|
|
21
|
+
* interaction directive: a node label like `A["<img src=x onerror=...>"]`
|
|
22
|
+
* would have produced LIVE HTML.
|
|
23
|
+
*
|
|
24
|
+
* - `securityLevel: 'strict'` encodes HTML tags in text and disables click
|
|
25
|
+
* handlers.
|
|
26
|
+
* - `htmlLabels: false` renders labels as SVG `<text>` instead of a
|
|
27
|
+
* foreignObject HTML subtree, so there is no HTML surface at all. Verified:
|
|
28
|
+
* no authored diagram in this repo or in the consuming hub's markdown uses
|
|
29
|
+
* HTML labels (not even `<br/>`), so 'antiscript' (which still allows tags)
|
|
30
|
+
* is not needed. (`htmlLabels` is set at the ROOT — `flowchart.htmlLabels`
|
|
31
|
+
* is deprecated in mermaid 11 and the root value takes precedence.)
|
|
32
|
+
* - `secure` is the allowlist of config keys a `%%{init}%%` directive in the
|
|
33
|
+
* diagram SOURCE may NOT override. mermaid's default list covers
|
|
34
|
+
* `securityLevel` but NOT `htmlLabels`, so model-authored source could
|
|
35
|
+
* otherwise re-enable HTML labels while `securityLevel` stayed locked.
|
|
36
|
+
* Adding `htmlLabels` (plus `secure` itself and the resource limits) closes
|
|
37
|
+
* that hole.
|
|
38
|
+
*
|
|
39
|
+
* jsdom NOTE: with `htmlLabels` unlocked, a `%%{init: {"htmlLabels": true}}%%`
|
|
40
|
+
* directive was observed to make `mermaid.render` never settle under jsdom
|
|
41
|
+
* (>60s, against a passing two-render control). This was NOT reproduced in a
|
|
42
|
+
* real browser and may well be an artifact of jsdom having no layout — do not
|
|
43
|
+
* read it as a confirmed browser DoS. Either way the render below is wrapped
|
|
44
|
+
* in a timeout so a non-settling render surfaces the error state instead of
|
|
45
|
+
* sitting on "Rendering diagram…" forever.
|
|
46
|
+
*/
|
|
47
|
+
export declare const MERMAID_SECURITY_OPTIONS: {
|
|
48
|
+
htmlLabels: false;
|
|
49
|
+
securityLevel: "strict";
|
|
50
|
+
secure: string[];
|
|
51
|
+
};
|
|
52
|
+
/** Upper bound on a single `mermaid.render`. Generous enough that no honest
|
|
53
|
+
* diagram hits it; short enough that a wedged render becomes a visible error
|
|
54
|
+
* instead of a permanent skeleton. */
|
|
55
|
+
export declare const MERMAID_RENDER_TIMEOUT_MS = 15000;
|
|
56
|
+
/**
|
|
57
|
+
* ODS-TOKENS FLAG (ODS_TOKEN_RULES §Colors / §Typography / §General):
|
|
58
|
+
* `mermaidStyles` below and the `themeVariables` / `fontFamily` / `fontSize`
|
|
59
|
+
* block in `MermaidDiagram` carry RAW hex colors, a literal font-family and
|
|
60
|
+
* literal px font sizes.
|
|
61
|
+
*
|
|
62
|
+
* Reason: mermaid's configuration is not CSS — `themeVariables` is a
|
|
63
|
+
* JavaScript API whose values are baked into the generated SVG as literal
|
|
64
|
+
* attribute strings, so a `var(--color-…)` reference resolves to nothing
|
|
65
|
+
* there. On top of that, ODS has NO 10-step categorical color ramp, and
|
|
66
|
+
* mermaid's `cScale0…cScale9` requires exactly one. The palette is carried
|
|
67
|
+
* over VERBATIM from the pre-unification RichMarkdownRenderer, so this is
|
|
68
|
+
* parity, not new divergence; the missing categorical-ramp tokens are
|
|
69
|
+
* flagged here for addition to ODS.
|
|
70
|
+
*
|
|
71
|
+
* Scope: this exemption covers THIS file only, and only the mermaid config
|
|
72
|
+
* surface. Do NOT copy this pattern — every other style in the markdown
|
|
73
|
+
* module uses ODS semantic classes.
|
|
74
|
+
*/
|
|
75
|
+
export declare const mermaidStyles = "\n .mermaid-svg-container svg {\n max-width: 100% !important;\n height: auto !important;\n min-height: 200px;\n font-family: 'DM Sans', sans-serif !important;\n font-size: 14px !important;\n }\n @media (min-width: 1520px) {\n .mermaid-svg-container svg {\n max-width: 900px !important;\n max-height: 700px !important;\n min-height: 300px;\n font-size: 16px !important;\n }\n }\n @media (min-width: 768px) and (max-width: 1519px) {\n .mermaid-svg-container svg {\n max-width: 700px !important;\n max-height: 600px !important;\n min-height: 250px;\n font-size: 15px !important;\n }\n }\n @media (max-width: 767px) {\n .mermaid-svg-container svg {\n max-width: 90vw !important;\n max-height: 400px !important;\n min-height: 200px;\n font-size: 13px !important;\n }\n }\n .mermaid-svg-container svg[width] { width: 100% !important; }\n .mermaid-svg-container .node rect,\n .mermaid-svg-container .node circle,\n .mermaid-svg-container .node ellipse,\n .mermaid-svg-container .node polygon { stroke-width: 2px !important; }\n .mermaid-svg-container .edgePath path { stroke-width: 2px !important; }\n @media (min-width: 768px) {\n .mermaid-svg-container .node text,\n .mermaid-svg-container .edgeLabel text { font-size: 14px !important; }\n }\n @media (min-width: 1520px) {\n .mermaid-svg-container .node text,\n .mermaid-svg-container .edgeLabel text { font-size: 16px !important; }\n }\n";
|
|
76
|
+
export declare const MermaidDiagram: React.FC<{
|
|
77
|
+
chart: string;
|
|
78
|
+
}>;
|
|
79
|
+
//# sourceMappingURL=mermaid-diagram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-diagram.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/markdown/mermaid-diagram.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,wBAAwB;;;;CAIqC,CAAC;AAE3E;;uCAEuC;AACvC,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAkBhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,u+CA8CzB,CAAC;AAQF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA2ItD,CAAC"}
|