@flamingo-stack/openframe-frontend-core 0.0.507 → 0.0.508-snapshot.20260802192916
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 +216 -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 +506 -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 +490 -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-3SQ5KXHQ.cjs → chunk-2T4GTV25.cjs} +9 -9
- package/dist/{chunk-3SQ5KXHQ.cjs.map → chunk-2T4GTV25.cjs.map} +1 -1
- package/dist/{chunk-CWAOV2FK.cjs → chunk-3CGZPAGR.cjs} +3 -3
- package/dist/{chunk-CWAOV2FK.cjs.map → chunk-3CGZPAGR.cjs.map} +1 -1
- package/dist/{chunk-TLMJHMXJ.js → chunk-3QSR22IC.js} +12 -12
- package/dist/chunk-3QSR22IC.js.map +1 -0
- package/dist/{chunk-TWYNR4TZ.cjs → chunk-4G5TLHJD.cjs} +7141 -4799
- package/dist/chunk-4G5TLHJD.cjs.map +1 -0
- package/dist/{chunk-ADPMHWOE.js → chunk-72XAID7Y.js} +4 -4
- package/dist/{chunk-PAGKRNWK.js → chunk-7WZHBQ4J.js} +2 -2
- package/dist/{chunk-OCEKO5CW.js → chunk-AEELJC4N.js} +12106 -9764
- package/dist/chunk-AEELJC4N.js.map +1 -0
- package/dist/{chunk-Z42BGM6Q.cjs → chunk-BT2WWDFP.cjs} +5 -5
- package/dist/{chunk-Z42BGM6Q.cjs.map → chunk-BT2WWDFP.cjs.map} +1 -1
- package/dist/{chunk-7LEL3RIX.cjs → chunk-C7OY3PQP.cjs} +11 -11
- package/dist/{chunk-7LEL3RIX.cjs.map → chunk-C7OY3PQP.cjs.map} +1 -1
- package/dist/{chunk-RHGGEKPQ.cjs → chunk-CIOLOQKQ.cjs} +4 -4
- package/dist/{chunk-RHGGEKPQ.cjs.map → chunk-CIOLOQKQ.cjs.map} +1 -1
- package/dist/{chunk-TSZHM74B.js → chunk-DC2TKS7C.js} +2 -2
- package/dist/{chunk-M2GOR3XQ.cjs → chunk-DYPYR7FR.cjs} +87 -87
- package/dist/{chunk-M2GOR3XQ.cjs.map → chunk-DYPYR7FR.cjs.map} +1 -1
- package/dist/{chunk-I64ABCDX.js → chunk-I2B6X77L.js} +2 -2
- package/dist/{chunk-NIZDKTGL.cjs → chunk-K5MSCMDK.cjs} +37 -37
- package/dist/{chunk-NIZDKTGL.cjs.map → chunk-K5MSCMDK.cjs.map} +1 -1
- package/dist/{chunk-DTYRYB2N.js → chunk-K6QTZ7CZ.js} +2 -2
- package/dist/{chunk-4LTMXDUS.js → chunk-KBN7PMFT.js} +2 -2
- package/dist/{chunk-TBMV7I5N.js → chunk-KXZO2WZX.js} +2 -2
- package/dist/{chunk-QTYZMP6D.cjs → chunk-LBAKLT6T.cjs} +62 -62
- package/dist/chunk-LBAKLT6T.cjs.map +1 -0
- package/dist/{chunk-KEBYLU3U.js → chunk-LFUPI7VX.js} +2 -2
- package/dist/{chunk-LDTR4IVZ.cjs → chunk-M37PBG4N.cjs} +31 -31
- package/dist/{chunk-LDTR4IVZ.cjs.map → chunk-M37PBG4N.cjs.map} +1 -1
- package/dist/{chunk-WA7RR64F.js → chunk-PO5O654H.js} +6 -5
- package/dist/chunk-PO5O654H.js.map +1 -0
- package/dist/{chunk-WK4N5VBX.cjs → chunk-QJJISLPA.cjs} +28 -27
- package/dist/chunk-QJJISLPA.cjs.map +1 -0
- package/dist/{chunk-2F44PLTV.cjs → chunk-T7MCSA55.cjs} +26 -26
- package/dist/{chunk-2F44PLTV.cjs.map → chunk-T7MCSA55.cjs.map} +1 -1
- package/dist/{chunk-WJQHJD7J.js → chunk-TWSKTJHW.js} +2 -2
- package/dist/{chunk-ZSQHZYCO.cjs → chunk-UQDMJ6DH.cjs} +13 -13
- package/dist/{chunk-ZSQHZYCO.cjs.map → chunk-UQDMJ6DH.cjs.map} +1 -1
- package/dist/{chunk-TZRUCD56.js → chunk-V3ZAAFE3.js} +5 -5
- package/dist/{chunk-LRGHJPET.js → chunk-XGIFOHKE.js} +2 -2
- package/dist/{chunk-POOMO3PA.cjs → chunk-YQEPRYT5.cjs} +7 -7
- package/dist/{chunk-POOMO3PA.cjs.map → chunk-YQEPRYT5.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- 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.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chunk-catchup.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 -57
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +10 -2
- 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 +21 -13
- 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 +380 -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 -93
- package/dist/components/chat/types/processing.types.d.ts.map +1 -1
- package/dist/components/chat/types/unified-chat-state.types.d.ts +15 -0
- package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
- 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/history-merge.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 +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +22 -22
- package/dist/components/help-center-pages/index.js +13 -13
- package/dist/components/index.cjs +174 -132
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +65 -23
- package/dist/components/index.js.map +1 -1
- package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +35 -35
- package/dist/components/meeting-scheduler/index.cjs.map +1 -1
- package/dist/components/meeting-scheduler/index.js +5 -5
- package/dist/components/meeting-scheduler/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/index.cjs +44 -2
- 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 +55 -13
- 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/index.cjs +60 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +71 -13
- 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 +319 -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 +237 -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 +254 -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 +264 -0
- package/src/components/chat/.chat-message-list.md +10 -6
- package/src/components/chat/__tests__/chat-message-list.test.tsx +450 -9
- package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +207 -0
- package/src/components/chat/__tests__/chat-pending-turn.test.tsx +250 -0
- package/src/components/chat/chat-message-enhanced.tsx +122 -20
- package/src/components/chat/chat-message-list.tsx +515 -133
- 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__/chunk-catchup-dialog-staleness.test.ts +92 -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.ts +8 -0
- package/src/components/chat/hooks/use-chunk-catchup.ts +26 -1
- package/src/components/chat/hooks/use-nats-chat-adapter.ts +254 -825
- package/src/components/chat/hooks/use-sse-chat-adapter.ts +380 -684
- package/src/components/chat/index.ts +5 -0
- package/src/components/chat/stream/__tests__/__snapshots__/chat-stream-reducer-golden.test.ts.snap +944 -0
- package/src/components/chat/stream/__tests__/chat-dialog-store.test.ts +806 -0
- package/src/components/chat/stream/__tests__/chat-stream-reducer-golden.test.ts +467 -0
- package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +1330 -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 +105 -0
- package/src/components/chat/stream/chat-dialog-store.ts +536 -0
- package/src/components/chat/stream/chat-stream-reducer.ts +1928 -0
- package/src/components/chat/stream/delta-batcher.ts +168 -0
- package/src/components/chat/stream/index.ts +55 -0
- package/src/components/chat/stream/message-mutations.ts +340 -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/.unified-chat-state.types.md +2 -2
- package/src/components/chat/types/api.types.ts +6 -73
- package/src/components/chat/types/processing.types.ts +11 -53
- package/src/components/chat/types/unified-chat-state.types.ts +16 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +21 -3
- package/src/components/chat/utils/.history-merge.md +44 -3
- 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__/extract-incomplete-message-state.test.ts +106 -0
- package/src/components/chat/utils/__tests__/history-merge.test.ts +160 -0
- package/src/components/chat/utils/__tests__/process-historical-messages-approvals.test.ts +61 -0
- package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +394 -0
- package/src/components/chat/utils/__tests__/segment-accumulator-golden.test.ts +270 -0
- package/src/components/chat/utils/extract-incomplete-message-state.ts +93 -6
- package/src/components/chat/utils/history-merge.ts +85 -5
- package/src/components/chat/utils/index.ts +5 -8
- package/src/components/chat/utils/process-historical-messages.ts +361 -385
- package/src/components/meeting-scheduler/directory.tsx +5 -2
- 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 +2540 -0
- package/src/components/ui/index.ts +1 -2
- package/src/components/ui/markdown/__tests__/mermaid-security.test.ts +176 -0
- package/src/components/ui/markdown/__tests__/mermaid-stale-render.test.tsx +151 -0
- package/src/components/ui/markdown/__tests__/sanitize-invariant.test.ts +354 -0
- package/src/components/ui/markdown/__tests__/sanitize-render.test.tsx +118 -0
- package/src/components/ui/markdown/__tests__/streaming.test.tsx +436 -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 +323 -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 +3584 -0
- package/src/components/ui/markdown/simple-markdown-renderer.tsx +28 -0
- package/src/components/ui/markdown/streaming.ts +390 -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/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-OCEKO5CW.js.map +0 -1
- package/dist/chunk-QTYZMP6D.cjs.map +0 -1
- package/dist/chunk-TLMJHMXJ.js.map +0 -1
- package/dist/chunk-TWYNR4TZ.cjs.map +0 -1
- package/dist/chunk-WA7RR64F.js.map +0 -1
- package/dist/chunk-WK4N5VBX.cjs.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 -489
- package/src/components/chat/utils/.chunk-parser.md +0 -62
- package/src/components/chat/utils/chunk-parser.ts +0 -262
- 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-ADPMHWOE.js.map → chunk-72XAID7Y.js.map} +0 -0
- /package/dist/{chunk-PAGKRNWK.js.map → chunk-7WZHBQ4J.js.map} +0 -0
- /package/dist/{chunk-TSZHM74B.js.map → chunk-DC2TKS7C.js.map} +0 -0
- /package/dist/{chunk-I64ABCDX.js.map → chunk-I2B6X77L.js.map} +0 -0
- /package/dist/{chunk-DTYRYB2N.js.map → chunk-K6QTZ7CZ.js.map} +0 -0
- /package/dist/{chunk-4LTMXDUS.js.map → chunk-KBN7PMFT.js.map} +0 -0
- /package/dist/{chunk-TBMV7I5N.js.map → chunk-KXZO2WZX.js.map} +0 -0
- /package/dist/{chunk-KEBYLU3U.js.map → chunk-LFUPI7VX.js.map} +0 -0
- /package/dist/{chunk-WJQHJD7J.js.map → chunk-TWSKTJHW.js.map} +0 -0
- /package/dist/{chunk-TZRUCD56.js.map → chunk-V3ZAAFE3.js.map} +0 -0
- /package/dist/{chunk-LRGHJPET.js.map → chunk-XGIFOHKE.js.map} +0 -0
|
@@ -155,7 +155,9 @@ import {
|
|
|
155
155
|
CustomerInterviewCard,
|
|
156
156
|
CustomerInterviewCardSkeleton,
|
|
157
157
|
DEFAULT_CUSTOM_STATUS_COLOR,
|
|
158
|
+
DEFAULT_DIALOG_SIDE,
|
|
158
159
|
DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
|
|
160
|
+
DEFAULT_MAX_REDUCERS,
|
|
159
161
|
DashboardInfoCard,
|
|
160
162
|
DataRoomDocCard,
|
|
161
163
|
DataRoomDocCardSkeleton,
|
|
@@ -257,9 +259,11 @@ import {
|
|
|
257
259
|
ListPageContainer,
|
|
258
260
|
ListPageLayout,
|
|
259
261
|
LoadError,
|
|
262
|
+
MAX_PENDING_RETAIN_KEYS,
|
|
260
263
|
MESSAGE_ROLE,
|
|
261
264
|
MESSAGE_TYPE,
|
|
262
265
|
MarkdownEditor,
|
|
266
|
+
MarkdownEngine,
|
|
263
267
|
MarqueeWall,
|
|
264
268
|
MarqueeWallFades,
|
|
265
269
|
MediaTypeSelector,
|
|
@@ -280,6 +284,7 @@ import {
|
|
|
280
284
|
MenubarSubContent,
|
|
281
285
|
MenubarSubTrigger,
|
|
282
286
|
MenubarTrigger,
|
|
287
|
+
MermaidDiagram,
|
|
283
288
|
MessageSegmentAccumulator,
|
|
284
289
|
MingoChatHistory,
|
|
285
290
|
MingoChatHistorySkeleton,
|
|
@@ -363,11 +368,13 @@ import {
|
|
|
363
368
|
RoadmapCard,
|
|
364
369
|
RoadmapCardSkeleton,
|
|
365
370
|
RoadmapVoteButton,
|
|
371
|
+
SAFE_HTML_TAGS,
|
|
366
372
|
SCROLL_ANCHOR,
|
|
367
373
|
SCROLL_ANCHOR_WIRE_KEY,
|
|
368
374
|
SECTION_HEADING_CLASS,
|
|
369
375
|
SOURCE_ICON_NAMES,
|
|
370
376
|
SOURCE_LABELS_BY_TABLE,
|
|
377
|
+
SVG_TAGS,
|
|
371
378
|
SYNTHETIC_REALTIME_ID_PREFIXES,
|
|
372
379
|
ScrollFadeOverlay,
|
|
373
380
|
ScrollShadow,
|
|
@@ -407,6 +414,7 @@ import {
|
|
|
407
414
|
StatusBadge,
|
|
408
415
|
StatusIndicator,
|
|
409
416
|
Switch,
|
|
417
|
+
TEXT_SIZE_PRESETS,
|
|
410
418
|
TICKET_STATUS_COLOR_PRESETS,
|
|
411
419
|
TITLE_BLOCK_MIN_HEIGHT,
|
|
412
420
|
TabContent,
|
|
@@ -471,27 +479,39 @@ import {
|
|
|
471
479
|
buildChatAttachmentViewUrl,
|
|
472
480
|
buildChatRefKey,
|
|
473
481
|
buildDiscussAddendum,
|
|
482
|
+
buildEffectiveTagSet,
|
|
483
|
+
buildHeadingIdMap,
|
|
474
484
|
buildNatsWsUrl,
|
|
475
485
|
buildProductReleaseCardProps,
|
|
486
|
+
buildSanitizeSchema,
|
|
476
487
|
buildStreamFrames,
|
|
488
|
+
cardAwareUrlTransform,
|
|
477
489
|
chatChipClass,
|
|
478
490
|
clickupTaskUrl,
|
|
491
|
+
completeStreamingTail,
|
|
479
492
|
computeHistoryPrepend,
|
|
480
493
|
computeIsNewTab,
|
|
494
|
+
createChatDialogStore,
|
|
495
|
+
createChatStreamReducer,
|
|
481
496
|
createColumnHelper,
|
|
497
|
+
createDeltaBatcher,
|
|
498
|
+
createEmptyTurnMeta,
|
|
482
499
|
createMessageSegmentAccumulator,
|
|
483
500
|
decideNewTab,
|
|
501
|
+
decodeHistoricalMessageData,
|
|
484
502
|
defaultBuildProductReleaseCardProps,
|
|
485
503
|
defaultTableIdForDocumentType,
|
|
486
504
|
deriveColumns,
|
|
487
505
|
escapeMarkdownInline,
|
|
506
|
+
escapeUnknownHtmlTags,
|
|
488
507
|
executeNavigation,
|
|
489
508
|
executeNavigationImperative,
|
|
490
509
|
exportToCSV,
|
|
491
510
|
extractEntityIdFilter,
|
|
492
511
|
extractErrorMessages,
|
|
493
512
|
extractIncompleteMessageState,
|
|
494
|
-
|
|
513
|
+
extractIncompleteTailState,
|
|
514
|
+
extractText,
|
|
495
515
|
fetchEmptyStateConfig,
|
|
496
516
|
fetchSlashCommands,
|
|
497
517
|
flattenAssistantContent,
|
|
@@ -531,11 +551,8 @@ import {
|
|
|
531
551
|
hideOnError,
|
|
532
552
|
historicalToUnified,
|
|
533
553
|
interleave,
|
|
534
|
-
isControlChunk,
|
|
535
554
|
isCrossOriginUrl,
|
|
536
|
-
isErrorChunk,
|
|
537
555
|
isHistoricalUserTurn,
|
|
538
|
-
isMetadataChunk,
|
|
539
556
|
isModifierClick,
|
|
540
557
|
isQuickActionIconSpec,
|
|
541
558
|
isStructuredContent,
|
|
@@ -551,12 +568,13 @@ import {
|
|
|
551
568
|
normalizeContent,
|
|
552
569
|
normalizeHistoricalMessageData,
|
|
553
570
|
normalizeIconKey,
|
|
554
|
-
parseChunkToAction,
|
|
555
571
|
parseScrollAnchor,
|
|
556
572
|
parseWireCommandOverride,
|
|
557
573
|
processHistoricalMessages,
|
|
558
574
|
processHistoricalMessagesWithErrors,
|
|
575
|
+
processShortcodes,
|
|
559
576
|
programItemToStripProfile,
|
|
577
|
+
rehypeStripUnsafe,
|
|
560
578
|
remarkCardLinks,
|
|
561
579
|
remarkMentionChips,
|
|
562
580
|
renderChatInlineEntityCard,
|
|
@@ -566,9 +584,11 @@ import {
|
|
|
566
584
|
resolveSourceIcon,
|
|
567
585
|
resolveSourceRowCTA,
|
|
568
586
|
resolveStatusTagProps,
|
|
587
|
+
resolveTextSizeConfig,
|
|
569
588
|
resolveTicketStatus,
|
|
570
589
|
safeHref,
|
|
571
590
|
sanitizeTitleForChat,
|
|
591
|
+
splitStreamingBlocks,
|
|
572
592
|
statusBadgeVariants,
|
|
573
593
|
stripChatAttachmentMarkdown,
|
|
574
594
|
stripSameOriginToPath,
|
|
@@ -583,6 +603,7 @@ import {
|
|
|
583
603
|
useChatAttachments,
|
|
584
604
|
useChatCardItem,
|
|
585
605
|
useChatIdentity,
|
|
606
|
+
useChatStreamReducer,
|
|
586
607
|
useChunkCatchup,
|
|
587
608
|
useCloseOnNavigation,
|
|
588
609
|
useCollapsible,
|
|
@@ -590,13 +611,13 @@ import {
|
|
|
590
611
|
useDataTable,
|
|
591
612
|
useDataTableContext,
|
|
592
613
|
useEmptyStateConfig,
|
|
614
|
+
useHeadingIdMap,
|
|
593
615
|
useJetStreamDialogSubscription,
|
|
594
616
|
useMarqueeSync,
|
|
595
617
|
useNatsChatAdapter,
|
|
596
618
|
useNatsDialogSubscription,
|
|
597
619
|
usePageActionsBottomPadding,
|
|
598
620
|
useProxiedImageUrl,
|
|
599
|
-
useRealtimeChunkProcessor,
|
|
600
621
|
useSSE,
|
|
601
622
|
useScriptedStream,
|
|
602
623
|
useScrollFade,
|
|
@@ -606,7 +627,7 @@ import {
|
|
|
606
627
|
useTestRunState,
|
|
607
628
|
useUnifiedChat,
|
|
608
629
|
usesCanonicalStatusStyle
|
|
609
|
-
} from "../../chunk-
|
|
630
|
+
} from "../../chunk-AEELJC4N.js";
|
|
610
631
|
import "../../chunk-7EUIW46X.js";
|
|
611
632
|
import "../../chunk-LXC6P2EO.js";
|
|
612
633
|
import "../../chunk-EL5YVPD5.js";
|
|
@@ -826,7 +847,9 @@ export {
|
|
|
826
847
|
CustomerInterviewCard,
|
|
827
848
|
CustomerInterviewCardSkeleton,
|
|
828
849
|
DEFAULT_CUSTOM_STATUS_COLOR,
|
|
850
|
+
DEFAULT_DIALOG_SIDE,
|
|
829
851
|
DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
|
|
852
|
+
DEFAULT_MAX_REDUCERS,
|
|
830
853
|
DashboardInfoCard,
|
|
831
854
|
DataRoomDocCard,
|
|
832
855
|
DataRoomDocCardSkeleton,
|
|
@@ -947,9 +970,11 @@ export {
|
|
|
947
970
|
LoadError,
|
|
948
971
|
CheckCircleIcon as LucideCheckCircleIcon,
|
|
949
972
|
XIcon as LucideXIcon,
|
|
973
|
+
MAX_PENDING_RETAIN_KEYS,
|
|
950
974
|
MESSAGE_ROLE,
|
|
951
975
|
MESSAGE_TYPE,
|
|
952
976
|
MarkdownEditor,
|
|
977
|
+
MarkdownEngine,
|
|
953
978
|
MarqueeWall,
|
|
954
979
|
MarqueeWallFades,
|
|
955
980
|
MediaTypeSelector,
|
|
@@ -969,6 +994,7 @@ export {
|
|
|
969
994
|
MenubarSubContent,
|
|
970
995
|
MenubarSubTrigger,
|
|
971
996
|
MenubarTrigger,
|
|
997
|
+
MermaidDiagram,
|
|
972
998
|
MessageSegmentAccumulator,
|
|
973
999
|
MingoChatHistory,
|
|
974
1000
|
MingoChatHistorySkeleton,
|
|
@@ -1052,11 +1078,13 @@ export {
|
|
|
1052
1078
|
RoadmapCard,
|
|
1053
1079
|
RoadmapCardSkeleton,
|
|
1054
1080
|
RoadmapVoteButton,
|
|
1081
|
+
SAFE_HTML_TAGS,
|
|
1055
1082
|
SCROLL_ANCHOR,
|
|
1056
1083
|
SCROLL_ANCHOR_WIRE_KEY,
|
|
1057
1084
|
SECTION_HEADING_CLASS,
|
|
1058
1085
|
SOURCE_ICON_NAMES,
|
|
1059
1086
|
SOURCE_LABELS_BY_TABLE,
|
|
1087
|
+
SVG_TAGS,
|
|
1060
1088
|
SYNTHETIC_REALTIME_ID_PREFIXES,
|
|
1061
1089
|
ScrollFadeOverlay,
|
|
1062
1090
|
ScrollShadow,
|
|
@@ -1105,6 +1133,7 @@ export {
|
|
|
1105
1133
|
StatusBadge,
|
|
1106
1134
|
StatusIndicator,
|
|
1107
1135
|
Switch,
|
|
1136
|
+
TEXT_SIZE_PRESETS,
|
|
1108
1137
|
TICKET_STATUS_COLOR_PRESETS,
|
|
1109
1138
|
TITLE_BLOCK_MIN_HEIGHT,
|
|
1110
1139
|
TabContent,
|
|
@@ -1171,31 +1200,43 @@ export {
|
|
|
1171
1200
|
buildChatAttachmentViewUrl,
|
|
1172
1201
|
buildChatRefKey,
|
|
1173
1202
|
buildDiscussAddendum,
|
|
1203
|
+
buildEffectiveTagSet,
|
|
1204
|
+
buildHeadingIdMap,
|
|
1174
1205
|
buildNatsWsUrl,
|
|
1175
1206
|
buildProductReleaseCardProps,
|
|
1207
|
+
buildSanitizeSchema,
|
|
1176
1208
|
buildStreamFrames,
|
|
1177
1209
|
buttonVariants,
|
|
1210
|
+
cardAwareUrlTransform,
|
|
1178
1211
|
embedAuthedFetch as chatAuthedFetch,
|
|
1179
1212
|
chatChipClass,
|
|
1180
1213
|
clearEmbedProxyAuth as clearChatProxyAuth,
|
|
1181
1214
|
clickupTaskUrl,
|
|
1215
|
+
completeStreamingTail,
|
|
1182
1216
|
computeHistoryPrepend,
|
|
1183
1217
|
computeIsNewTab,
|
|
1218
|
+
createChatDialogStore,
|
|
1219
|
+
createChatStreamReducer,
|
|
1184
1220
|
createColumnHelper,
|
|
1221
|
+
createDeltaBatcher,
|
|
1222
|
+
createEmptyTurnMeta,
|
|
1185
1223
|
createMessageSegmentAccumulator,
|
|
1186
1224
|
decideNewTab,
|
|
1225
|
+
decodeHistoricalMessageData,
|
|
1187
1226
|
defaultBuildProductReleaseCardProps,
|
|
1188
1227
|
defaultTableIdForDocumentType,
|
|
1189
1228
|
deriveColumns,
|
|
1190
1229
|
dotColorByVariant,
|
|
1191
1230
|
escapeMarkdownInline,
|
|
1231
|
+
escapeUnknownHtmlTags,
|
|
1192
1232
|
executeNavigation,
|
|
1193
1233
|
executeNavigationImperative,
|
|
1194
1234
|
exportToCSV,
|
|
1195
1235
|
extractEntityIdFilter,
|
|
1196
1236
|
extractErrorMessages,
|
|
1197
1237
|
extractIncompleteMessageState,
|
|
1198
|
-
|
|
1238
|
+
extractIncompleteTailState,
|
|
1239
|
+
extractText,
|
|
1199
1240
|
fetchEmptyStateConfig,
|
|
1200
1241
|
fetchSlashCommands,
|
|
1201
1242
|
flattenAssistantContent,
|
|
@@ -1237,11 +1278,8 @@ export {
|
|
|
1237
1278
|
hideOnError,
|
|
1238
1279
|
historicalToUnified,
|
|
1239
1280
|
interleave,
|
|
1240
|
-
isControlChunk,
|
|
1241
1281
|
isCrossOriginUrl,
|
|
1242
|
-
isErrorChunk,
|
|
1243
1282
|
isHistoricalUserTurn,
|
|
1244
|
-
isMetadataChunk,
|
|
1245
1283
|
isModifierClick,
|
|
1246
1284
|
isQuickActionIconSpec,
|
|
1247
1285
|
isStructuredContent,
|
|
@@ -1257,13 +1295,14 @@ export {
|
|
|
1257
1295
|
normalizeContent,
|
|
1258
1296
|
normalizeHistoricalMessageData,
|
|
1259
1297
|
normalizeIconKey,
|
|
1260
|
-
parseChunkToAction,
|
|
1261
1298
|
parseScrollAnchor,
|
|
1262
1299
|
parseWireCommandOverride,
|
|
1263
1300
|
processHistoricalMessages,
|
|
1264
1301
|
processHistoricalMessagesWithErrors,
|
|
1302
|
+
processShortcodes,
|
|
1265
1303
|
programItemToStripProfile,
|
|
1266
1304
|
progressColorByVariant,
|
|
1305
|
+
rehypeStripUnsafe,
|
|
1267
1306
|
remarkCardLinks,
|
|
1268
1307
|
remarkMentionChips,
|
|
1269
1308
|
renderChatInlineEntityCard,
|
|
@@ -1273,12 +1312,14 @@ export {
|
|
|
1273
1312
|
resolveSourceIcon,
|
|
1274
1313
|
resolveSourceRowCTA,
|
|
1275
1314
|
resolveStatusTagProps,
|
|
1315
|
+
resolveTextSizeConfig,
|
|
1276
1316
|
resolveTicketStatus,
|
|
1277
1317
|
safeHref,
|
|
1278
1318
|
sanitizeTitleForChat,
|
|
1279
1319
|
setEmbedProxyAuth as setChatProxyAuth,
|
|
1280
1320
|
showCommandApprovalToast,
|
|
1281
1321
|
showToast,
|
|
1322
|
+
splitStreamingBlocks,
|
|
1282
1323
|
statusBadgeVariants,
|
|
1283
1324
|
stripChatAttachmentMarkdown,
|
|
1284
1325
|
stripSameOriginToPath,
|
|
@@ -1293,6 +1334,7 @@ export {
|
|
|
1293
1334
|
useChatAttachments,
|
|
1294
1335
|
useChatCardItem,
|
|
1295
1336
|
useChatIdentity,
|
|
1337
|
+
useChatStreamReducer,
|
|
1296
1338
|
useChunkCatchup,
|
|
1297
1339
|
useCloseOnNavigation,
|
|
1298
1340
|
useCollapsible,
|
|
@@ -1301,13 +1343,13 @@ export {
|
|
|
1301
1343
|
useDataTableContext,
|
|
1302
1344
|
useSseChatAdapter as useEmbeddedChat,
|
|
1303
1345
|
useEmptyStateConfig,
|
|
1346
|
+
useHeadingIdMap,
|
|
1304
1347
|
useJetStreamDialogSubscription,
|
|
1305
1348
|
useMarqueeSync,
|
|
1306
1349
|
useNatsChatAdapter,
|
|
1307
1350
|
useNatsDialogSubscription,
|
|
1308
1351
|
usePageActionsBottomPadding,
|
|
1309
1352
|
useProxiedImageUrl,
|
|
1310
|
-
useRealtimeChunkProcessor,
|
|
1311
1353
|
useSSE,
|
|
1312
1354
|
useScriptedStream,
|
|
1313
1355
|
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;;;;CA6BqC,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,CAkJtD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Components } from 'react-markdown';
|
|
2
|
+
import type { TextSizeElement } from '../text-size';
|
|
3
|
+
export interface BuildRichEmbedOverridesOptions {
|
|
4
|
+
ogApiBaseUrl: string;
|
|
5
|
+
ogEndpointPath: string;
|
|
6
|
+
textSizes: Record<TextSizeElement, string>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Overrides spread LAST onto the engine's base map: `code` (fence-language
|
|
10
|
+
* embeds), `div` (shortcode-expanded embeds), `img` (MarkdownImage with
|
|
11
|
+
* runtime transformImageSrc), `video` (raw tags → Video SSOT).
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildRichEmbedOverrides({ ogApiBaseUrl, ogEndpointPath, textSizes, }: BuildRichEmbedOverridesOptions): Partial<Components>;
|
|
14
|
+
//# sourceMappingURL=embed-overrides.d.ts.map
|