@haklex/rich-compose 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -8
- package/dist/modules/alert/index.d.ts +3 -0
- package/dist/modules/alert/index.d.ts.map +1 -0
- package/dist/modules/alert/index.mjs +9 -0
- package/dist/modules/alert/module.d.ts +3 -0
- package/dist/modules/alert/module.d.ts.map +1 -0
- package/dist/modules/alert/renderer.d.ts +4 -0
- package/dist/modules/alert/renderer.d.ts.map +1 -0
- package/dist/modules/alert/renderer.mjs +5 -0
- package/dist/modules/banner/index.d.ts +3 -0
- package/dist/modules/banner/index.d.ts.map +1 -0
- package/dist/modules/banner/index.mjs +9 -0
- package/dist/modules/banner/module.d.ts +3 -0
- package/dist/modules/banner/module.d.ts.map +1 -0
- package/dist/modules/banner/renderer.d.ts +4 -0
- package/dist/modules/banner/renderer.d.ts.map +1 -0
- package/dist/modules/banner/renderer.mjs +5 -0
- package/dist/modules/excalidraw/index.d.ts +5 -0
- package/dist/modules/excalidraw/index.d.ts.map +1 -0
- package/dist/modules/excalidraw/index.mjs +18 -0
- package/dist/modules/excalidraw/module.d.ts +12 -0
- package/dist/modules/excalidraw/module.d.ts.map +1 -0
- package/dist/modules/excalidraw/node.d.ts +6 -0
- package/dist/modules/excalidraw/node.d.ts.map +1 -0
- package/dist/modules/excalidraw/node.mjs +5 -0
- package/dist/modules/image/index.d.ts +3 -0
- package/dist/modules/image/index.d.ts.map +1 -0
- package/dist/modules/image/index.mjs +9 -0
- package/dist/modules/image/module.d.ts +3 -0
- package/dist/modules/image/module.d.ts.map +1 -0
- package/dist/modules/image/renderer.d.ts +4 -0
- package/dist/modules/image/renderer.d.ts.map +1 -0
- package/dist/modules/image/renderer.mjs +5 -0
- package/dist/modules/mention/index.d.ts +5 -0
- package/dist/modules/mention/index.d.ts.map +1 -0
- package/dist/modules/mention/index.mjs +9 -0
- package/dist/modules/mention/module.d.ts +3 -0
- package/dist/modules/mention/module.d.ts.map +1 -0
- package/dist/modules/mention/renderer.d.ts +4 -0
- package/dist/modules/mention/renderer.d.ts.map +1 -0
- package/dist/modules/mention/renderer.mjs +5 -0
- package/dist/modules/mermaid/index.d.ts +3 -0
- package/dist/modules/mermaid/index.d.ts.map +1 -0
- package/dist/modules/mermaid/index.mjs +33 -0
- package/dist/modules/mermaid/module.d.ts +9 -0
- package/dist/modules/mermaid/module.d.ts.map +1 -0
- package/dist/modules/mermaid/renderer.d.ts +4 -0
- package/dist/modules/mermaid/renderer.d.ts.map +1 -0
- package/dist/modules/mermaid/renderer.mjs +5 -0
- package/dist/modules/mermaid/ssr-fallback.d.ts +11 -0
- package/dist/modules/mermaid/ssr-fallback.d.ts.map +1 -0
- package/dist/modules/nested-doc/index.d.ts +3 -0
- package/dist/modules/nested-doc/index.d.ts.map +1 -0
- package/dist/modules/nested-doc/index.mjs +15 -0
- package/dist/modules/nested-doc/module.d.ts +10 -0
- package/dist/modules/nested-doc/module.d.ts.map +1 -0
- package/dist/modules/nested-doc/node.d.ts +3 -0
- package/dist/modules/nested-doc/node.d.ts.map +1 -0
- package/dist/modules/nested-doc/node.mjs +2 -0
- package/dist/modules/ruby/index.d.ts +3 -0
- package/dist/modules/ruby/index.d.ts.map +1 -0
- package/dist/modules/ruby/index.mjs +9 -0
- package/dist/modules/ruby/module.d.ts +3 -0
- package/dist/modules/ruby/module.d.ts.map +1 -0
- package/dist/modules/ruby/renderer.d.ts +4 -0
- package/dist/modules/ruby/renderer.d.ts.map +1 -0
- package/dist/modules/ruby/renderer.mjs +5 -0
- package/dist/modules/video/index.d.ts +3 -0
- package/dist/modules/video/index.d.ts.map +1 -0
- package/dist/modules/video/index.mjs +9 -0
- package/dist/modules/video/module.d.ts +3 -0
- package/dist/modules/video/module.d.ts.map +1 -0
- package/dist/modules/video/renderer.d.ts +4 -0
- package/dist/modules/video/renderer.d.ts.map +1 -0
- package/dist/modules/video/renderer.mjs +5 -0
- package/package.json +125 -8
package/README.md
CHANGED
|
@@ -122,7 +122,7 @@ interface RichRendererModule {
|
|
|
122
122
|
|
|
123
123
|
## Lazy modules
|
|
124
124
|
|
|
125
|
-
`code-block
|
|
125
|
+
`code-block` and `mermaid` ship lazy by default with deterministic `ssrFallback`s. The `excalidraw` Klass renders through its own upstream `decorate()` which code-splits internally.
|
|
126
126
|
|
|
127
127
|
To override a lazy renderer (e.g., for a sync, pre-tokenized code block on SSR), pass an entry in `overrides`:
|
|
128
128
|
|
|
@@ -151,18 +151,32 @@ nodes:
|
|
|
151
151
|
|
|
152
152
|
## Module catalog
|
|
153
153
|
|
|
154
|
-
Implemented:
|
|
155
|
-
|
|
156
154
|
| Module | Klass | Renderer mode | Source |
|
|
157
155
|
| --- | --- | --- | --- |
|
|
158
|
-
| `
|
|
159
|
-
| `
|
|
160
|
-
| `gallery` | `GalleryNode` | sync | `rich-ext-gallery` |
|
|
161
|
-
| `code-snippet` | `CodeSnippetNode` | sync | `rich-ext-code-snippet` |
|
|
156
|
+
| `alert` | builtin | sync | `rich-renderer-alert` |
|
|
157
|
+
| `banner` | builtin | sync | `rich-renderer-banner` |
|
|
162
158
|
| `chat` | `ChatNode` | sync | `rich-ext-chat` |
|
|
163
159
|
| `code-block` | builtin | lazy + ssr fallback | `rich-renderer-codeblock` |
|
|
160
|
+
| `code-snippet` | `CodeSnippetNode` | sync | `rich-ext-code-snippet` |
|
|
161
|
+
| `embed` | `EmbedNode` | sync (via node decorate) | `rich-ext-embed` |
|
|
162
|
+
| `excalidraw` | `ExcalidrawNode` | via node decorate | `rich-ext-excalidraw` |
|
|
163
|
+
| `gallery` | `GalleryNode` | sync | `rich-ext-gallery` |
|
|
164
|
+
| `image` | builtin | sync | `rich-renderer-image` |
|
|
165
|
+
| `link-card` | builtin | sync | `rich-renderer-linkcard` |
|
|
166
|
+
| `mention` | builtin | sync | `rich-renderer-mention` |
|
|
167
|
+
| `mermaid` | builtin | lazy + ssr fallback | `rich-renderer-mermaid` |
|
|
168
|
+
| `nested-doc` | `NestedDocNode` | recursive (via composeRenderer) | `rich-ext-nested-doc` |
|
|
169
|
+
| `ruby` | builtin | sync | `rich-renderer-ruby` |
|
|
170
|
+
| `video` | builtin | sync | `rich-renderer-video` |
|
|
171
|
+
|
|
172
|
+
Not shipped (handled by `@haklex/rich-editor`'s default renderers via Klass `decorate()`): `katex`, `poll`, `tag`, `footnote`. To override these, pass `overrides` to `composeRenderer`:
|
|
164
173
|
|
|
165
|
-
|
|
174
|
+
```ts
|
|
175
|
+
composeRenderer({
|
|
176
|
+
modules: [/* ... */],
|
|
177
|
+
overrides: { KaTeX: MyKaTeXRenderer, Poll: MyPollRenderer },
|
|
178
|
+
})
|
|
179
|
+
```
|
|
166
180
|
|
|
167
181
|
> **Note**: `@haklex/rich-editor` registers a wide set of custom Klasses in `customNodes` (LinkCard, Mention, Image, Video, KaTeX, Mermaid, Alert, Banner, Ruby, Tag, Poll, CodeBlock, Footnote, etc.). Modules for these contribute only renderer mappings — there is no Klass to register, hence no `node.ts` and no `/node` subpath.
|
|
168
182
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/alert/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AlertRenderer } from "./renderer.mjs";
|
|
2
|
+
import { AlertRenderer as AlertRenderer$1 } from "@haklex/rich-renderer-alert/static";
|
|
3
|
+
//#region src/modules/alert/module.ts
|
|
4
|
+
var alertModule = {
|
|
5
|
+
name: "alert",
|
|
6
|
+
renderers: { Alert: AlertRenderer$1 }
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AlertRenderer, alertModule };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/alert/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,eAAO,MAAM,WAAW,EAAE,kBAGzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/modules/alert/renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,eAAe,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/banner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BannerRenderer } from "./renderer.mjs";
|
|
2
|
+
import { BannerRenderer as BannerRenderer$1 } from "@haklex/rich-renderer-banner/static";
|
|
3
|
+
//#region src/modules/banner/module.ts
|
|
4
|
+
var bannerModule = {
|
|
5
|
+
name: "banner",
|
|
6
|
+
renderers: { Banner: BannerRenderer$1 }
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { BannerRenderer, bannerModule };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/banner/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,eAAO,MAAM,YAAY,EAAE,kBAG1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/modules/banner/renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEpE,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { SerializedExcalidrawNode } from '@haklex/rich-ext-excalidraw/static';
|
|
2
|
+
export { ExcalidrawConfigProvider, ExcalidrawDisplayRenderer, useExcalidrawConfig, } from '@haklex/rich-ext-excalidraw/static';
|
|
3
|
+
export { $createExcalidrawNode, $isExcalidrawNode, ExcalidrawNode, excalidrawNodes, } from './node';
|
|
4
|
+
export { excalidrawModule } from './module';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/excalidraw/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAA;AAClF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { $createExcalidrawNode, $isExcalidrawNode, ExcalidrawNode, excalidrawNodes } from "./node.mjs";
|
|
2
|
+
import { ExcalidrawConfigProvider, ExcalidrawDisplayRenderer, useExcalidrawConfig } from "@haklex/rich-ext-excalidraw/static";
|
|
3
|
+
//#region src/modules/excalidraw/module.ts
|
|
4
|
+
/**
|
|
5
|
+
* Excalidraw module — registers `ExcalidrawNode`. There is no
|
|
6
|
+
* `Excalidraw` slot in `RendererConfig`; the Klass's `decorate()` handles
|
|
7
|
+
* its own rendering (and the upstream renderer code-splits internally).
|
|
8
|
+
*
|
|
9
|
+
* Consumers wrapping `ExcalidrawConfigProvider` or replacing the display
|
|
10
|
+
* renderer do so via upstream APIs (`@haklex/rich-ext-excalidraw/static`)
|
|
11
|
+
* rather than through `composeRenderer`.
|
|
12
|
+
*/
|
|
13
|
+
var excalidrawModule = {
|
|
14
|
+
name: "excalidraw",
|
|
15
|
+
nodes: excalidrawNodes
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { $createExcalidrawNode, $isExcalidrawNode, ExcalidrawConfigProvider, ExcalidrawDisplayRenderer, ExcalidrawNode, excalidrawModule, excalidrawNodes, useExcalidrawConfig };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RichRendererModule } from '../../core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Excalidraw module — registers `ExcalidrawNode`. There is no
|
|
4
|
+
* `Excalidraw` slot in `RendererConfig`; the Klass's `decorate()` handles
|
|
5
|
+
* its own rendering (and the upstream renderer code-splits internally).
|
|
6
|
+
*
|
|
7
|
+
* Consumers wrapping `ExcalidrawConfigProvider` or replacing the display
|
|
8
|
+
* renderer do so via upstream APIs (`@haklex/rich-ext-excalidraw/static`)
|
|
9
|
+
* rather than through `composeRenderer`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const excalidrawModule: RichRendererModule;
|
|
12
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/excalidraw/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,kBAG9B,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Klass, LexicalNode } from 'lexical';
|
|
2
|
+
import { $createExcalidrawNode, $isExcalidrawNode, ExcalidrawNode } from '@haklex/rich-ext-excalidraw/static';
|
|
3
|
+
export type { SerializedExcalidrawNode } from '@haklex/rich-ext-excalidraw/static';
|
|
4
|
+
export { $createExcalidrawNode, $isExcalidrawNode, ExcalidrawNode, };
|
|
5
|
+
export declare const excalidrawNodes: Array<Klass<LexicalNode>>;
|
|
6
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/modules/excalidraw/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACf,MAAM,oCAAoC,CAAA;AAE3C,YAAY,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAA;AAClF,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,GACf,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAoB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { $createExcalidrawNode, $isExcalidrawNode, ExcalidrawNode } from "@haklex/rich-ext-excalidraw/static";
|
|
2
|
+
//#region src/modules/excalidraw/node.ts
|
|
3
|
+
var excalidrawNodes = [ExcalidrawNode];
|
|
4
|
+
//#endregion
|
|
5
|
+
export { $createExcalidrawNode, $isExcalidrawNode, ExcalidrawNode, excalidrawNodes };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ImageRenderer } from "./renderer.mjs";
|
|
2
|
+
import { ImageRenderer as ImageRenderer$1 } from "@haklex/rich-renderer-image/static";
|
|
3
|
+
//#region src/modules/image/module.ts
|
|
4
|
+
var imageModule = {
|
|
5
|
+
name: "image",
|
|
6
|
+
renderers: { Image: ImageRenderer$1 }
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { ImageRenderer, imageModule };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/image/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,eAAO,MAAM,WAAW,EAAE,kBAGzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/modules/image/renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,eAAe,aAAa,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { MentionPlatformMeta } from '@haklex/rich-renderer-mention/static';
|
|
2
|
+
export { MentionPlatformProvider } from '@haklex/rich-renderer-mention/static';
|
|
3
|
+
export { MentionRenderer } from './renderer';
|
|
4
|
+
export { mentionModule } from './module';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/mention/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MentionRenderer } from "./renderer.mjs";
|
|
2
|
+
import { MentionPlatformProvider, MentionRenderer as MentionRenderer$1 } from "@haklex/rich-renderer-mention/static";
|
|
3
|
+
//#region src/modules/mention/module.ts
|
|
4
|
+
var mentionModule = {
|
|
5
|
+
name: "mention",
|
|
6
|
+
renderers: { Mention: MentionRenderer$1 }
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { MentionPlatformProvider, MentionRenderer, mentionModule };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/mention/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/modules/mention/renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AAEtE,OAAO,EAAE,eAAe,EAAE,CAAA;AAC1B,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/mermaid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MermaidRenderer } from "./renderer.mjs";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/modules/mermaid/ssr-fallback.tsx
|
|
4
|
+
/**
|
|
5
|
+
* SSR / Suspense fallback for the lazy Mermaid renderer.
|
|
6
|
+
*
|
|
7
|
+
* Determinism requirement: identical output server-side and client-side
|
|
8
|
+
* to avoid hydration mismatches. No Date, no random, no client-only API.
|
|
9
|
+
*
|
|
10
|
+
* Renders an empty placeholder shell sized via CSS so layout stays stable
|
|
11
|
+
* before mermaid's heavy chunk resolves and replaces it.
|
|
12
|
+
*/
|
|
13
|
+
function MermaidSsrFallback() {
|
|
14
|
+
return /* @__PURE__ */ jsx("div", {
|
|
15
|
+
className: "rich-mermaid-skeleton",
|
|
16
|
+
"data-rich-skeleton": "mermaid"
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/modules/mermaid/module.tsx
|
|
21
|
+
/**
|
|
22
|
+
* Mermaid module — `MermaidNode` is registered by `@haklex/rich-editor`
|
|
23
|
+
* (in `customNodes`/`allNodes`). The default renderer
|
|
24
|
+
* (`@haklex/rich-renderer-mermaid`) pulls mermaid lib (~2MB), so it ships
|
|
25
|
+
* as a separate lazy chunk with a deterministic SSR fallback.
|
|
26
|
+
*/
|
|
27
|
+
var mermaidModule = {
|
|
28
|
+
name: "mermaid",
|
|
29
|
+
lazyRenderers: { Mermaid: () => import("./renderer.mjs") },
|
|
30
|
+
ssrFallback: { Mermaid: /* @__PURE__ */ jsx(MermaidSsrFallback, {}) }
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { MermaidRenderer, mermaidModule };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RichRendererModule } from '../../core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Mermaid module — `MermaidNode` is registered by `@haklex/rich-editor`
|
|
4
|
+
* (in `customNodes`/`allNodes`). The default renderer
|
|
5
|
+
* (`@haklex/rich-renderer-mermaid`) pulls mermaid lib (~2MB), so it ships
|
|
6
|
+
* as a separate lazy chunk with a deterministic SSR fallback.
|
|
7
|
+
*/
|
|
8
|
+
export declare const mermaidModule: RichRendererModule;
|
|
9
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/mermaid/module.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,kBAQ3B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/modules/mermaid/renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AAEtE,OAAO,EAAE,eAAe,EAAE,CAAA;AAC1B,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSR / Suspense fallback for the lazy Mermaid renderer.
|
|
3
|
+
*
|
|
4
|
+
* Determinism requirement: identical output server-side and client-side
|
|
5
|
+
* to avoid hydration mismatches. No Date, no random, no client-only API.
|
|
6
|
+
*
|
|
7
|
+
* Renders an empty placeholder shell sized via CSS so layout stays stable
|
|
8
|
+
* before mermaid's heavy chunk resolves and replaces it.
|
|
9
|
+
*/
|
|
10
|
+
export declare function MermaidSsrFallback(): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=ssr-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr-fallback.d.ts","sourceRoot":"","sources":["../../../src/modules/mermaid/ssr-fallback.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,4CAOjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/nested-doc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { $createNestedDocNode, $isNestedDocNode, NestedDocNode, nestedDocNodes } from "./node.mjs";
|
|
2
|
+
//#region src/modules/nested-doc/module.ts
|
|
3
|
+
/**
|
|
4
|
+
* Nested-doc module — registers `NestedDocNode`. There is no
|
|
5
|
+
* `NestedDoc` slot in `RendererConfig`; the Klass's `decorate()` consumes
|
|
6
|
+
* the `NestedContentRendererProvider` (composeRenderer always wires this
|
|
7
|
+
* to a recursive closure) so nested editor states render through the
|
|
8
|
+
* same composition.
|
|
9
|
+
*/
|
|
10
|
+
var nestedDocModule = {
|
|
11
|
+
name: "nested-doc",
|
|
12
|
+
nodes: nestedDocNodes
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { $createNestedDocNode, $isNestedDocNode, NestedDocNode, nestedDocModule, nestedDocNodes };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RichRendererModule } from '../../core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Nested-doc module — registers `NestedDocNode`. There is no
|
|
4
|
+
* `NestedDoc` slot in `RendererConfig`; the Klass's `decorate()` consumes
|
|
5
|
+
* the `NestedContentRendererProvider` (composeRenderer always wires this
|
|
6
|
+
* to a recursive closure) so nested editor states render through the
|
|
7
|
+
* same composition.
|
|
8
|
+
*/
|
|
9
|
+
export declare const nestedDocModule: RichRendererModule;
|
|
10
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/nested-doc/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,kBAG7B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/modules/nested-doc/node.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,oCAAoC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/ruby/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RubyRenderer } from "./renderer.mjs";
|
|
2
|
+
import { RubyRenderer as RubyRenderer$1 } from "@haklex/rich-renderer-ruby/static";
|
|
3
|
+
//#region src/modules/ruby/module.ts
|
|
4
|
+
var rubyModule = {
|
|
5
|
+
name: "ruby",
|
|
6
|
+
renderers: { Ruby: RubyRenderer$1 }
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { RubyRenderer, rubyModule };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/ruby/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,eAAO,MAAM,UAAU,EAAE,kBAGxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/modules/ruby/renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/video/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { VideoRenderer } from "./renderer.mjs";
|
|
2
|
+
import { VideoRenderer as VideoRenderer$1 } from "@haklex/rich-renderer-video/static";
|
|
3
|
+
//#region src/modules/video/module.ts
|
|
4
|
+
var videoModule = {
|
|
5
|
+
name: "video",
|
|
6
|
+
renderers: { Video: VideoRenderer$1 }
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { VideoRenderer, videoModule };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/video/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,eAAO,MAAM,WAAW,EAAE,kBAGzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/modules/video/renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,eAAe,aAAa,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haklex/rich-compose",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Compose primitives for haklex rich content renderers — Gundam-style assembly of Lexical nodes, sync/lazy renderers, and Provider stacks.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -77,6 +77,78 @@
|
|
|
77
77
|
"import": "./dist/modules/chat/renderer.mjs",
|
|
78
78
|
"types": "./dist/modules/chat/renderer.d.ts"
|
|
79
79
|
},
|
|
80
|
+
"./modules/alert": {
|
|
81
|
+
"import": "./dist/modules/alert/index.mjs",
|
|
82
|
+
"types": "./dist/modules/alert/index.d.ts"
|
|
83
|
+
},
|
|
84
|
+
"./modules/alert/renderer": {
|
|
85
|
+
"import": "./dist/modules/alert/renderer.mjs",
|
|
86
|
+
"types": "./dist/modules/alert/renderer.d.ts"
|
|
87
|
+
},
|
|
88
|
+
"./modules/banner": {
|
|
89
|
+
"import": "./dist/modules/banner/index.mjs",
|
|
90
|
+
"types": "./dist/modules/banner/index.d.ts"
|
|
91
|
+
},
|
|
92
|
+
"./modules/banner/renderer": {
|
|
93
|
+
"import": "./dist/modules/banner/renderer.mjs",
|
|
94
|
+
"types": "./dist/modules/banner/renderer.d.ts"
|
|
95
|
+
},
|
|
96
|
+
"./modules/image": {
|
|
97
|
+
"import": "./dist/modules/image/index.mjs",
|
|
98
|
+
"types": "./dist/modules/image/index.d.ts"
|
|
99
|
+
},
|
|
100
|
+
"./modules/image/renderer": {
|
|
101
|
+
"import": "./dist/modules/image/renderer.mjs",
|
|
102
|
+
"types": "./dist/modules/image/renderer.d.ts"
|
|
103
|
+
},
|
|
104
|
+
"./modules/mention": {
|
|
105
|
+
"import": "./dist/modules/mention/index.mjs",
|
|
106
|
+
"types": "./dist/modules/mention/index.d.ts"
|
|
107
|
+
},
|
|
108
|
+
"./modules/mention/renderer": {
|
|
109
|
+
"import": "./dist/modules/mention/renderer.mjs",
|
|
110
|
+
"types": "./dist/modules/mention/renderer.d.ts"
|
|
111
|
+
},
|
|
112
|
+
"./modules/ruby": {
|
|
113
|
+
"import": "./dist/modules/ruby/index.mjs",
|
|
114
|
+
"types": "./dist/modules/ruby/index.d.ts"
|
|
115
|
+
},
|
|
116
|
+
"./modules/ruby/renderer": {
|
|
117
|
+
"import": "./dist/modules/ruby/renderer.mjs",
|
|
118
|
+
"types": "./dist/modules/ruby/renderer.d.ts"
|
|
119
|
+
},
|
|
120
|
+
"./modules/video": {
|
|
121
|
+
"import": "./dist/modules/video/index.mjs",
|
|
122
|
+
"types": "./dist/modules/video/index.d.ts"
|
|
123
|
+
},
|
|
124
|
+
"./modules/video/renderer": {
|
|
125
|
+
"import": "./dist/modules/video/renderer.mjs",
|
|
126
|
+
"types": "./dist/modules/video/renderer.d.ts"
|
|
127
|
+
},
|
|
128
|
+
"./modules/mermaid": {
|
|
129
|
+
"import": "./dist/modules/mermaid/index.mjs",
|
|
130
|
+
"types": "./dist/modules/mermaid/index.d.ts"
|
|
131
|
+
},
|
|
132
|
+
"./modules/mermaid/renderer": {
|
|
133
|
+
"import": "./dist/modules/mermaid/renderer.mjs",
|
|
134
|
+
"types": "./dist/modules/mermaid/renderer.d.ts"
|
|
135
|
+
},
|
|
136
|
+
"./modules/excalidraw": {
|
|
137
|
+
"import": "./dist/modules/excalidraw/index.mjs",
|
|
138
|
+
"types": "./dist/modules/excalidraw/index.d.ts"
|
|
139
|
+
},
|
|
140
|
+
"./modules/excalidraw/node": {
|
|
141
|
+
"import": "./dist/modules/excalidraw/node.mjs",
|
|
142
|
+
"types": "./dist/modules/excalidraw/node.d.ts"
|
|
143
|
+
},
|
|
144
|
+
"./modules/nested-doc": {
|
|
145
|
+
"import": "./dist/modules/nested-doc/index.mjs",
|
|
146
|
+
"types": "./dist/modules/nested-doc/index.d.ts"
|
|
147
|
+
},
|
|
148
|
+
"./modules/nested-doc/node": {
|
|
149
|
+
"import": "./dist/modules/nested-doc/node.mjs",
|
|
150
|
+
"types": "./dist/modules/nested-doc/node.d.ts"
|
|
151
|
+
},
|
|
80
152
|
"./style.css": "./dist/rich-compose.css"
|
|
81
153
|
},
|
|
82
154
|
"main": "./dist/index.mjs",
|
|
@@ -95,13 +167,22 @@
|
|
|
95
167
|
"vite-plugin-dts": "^4.5.4",
|
|
96
168
|
"vitest": "^4.1.5",
|
|
97
169
|
"@haklex/rich-editor": "0.4.1",
|
|
98
|
-
"@haklex/rich-ext-
|
|
170
|
+
"@haklex/rich-ext-embed": "0.4.1",
|
|
99
171
|
"@haklex/rich-ext-code-snippet": "0.4.1",
|
|
100
172
|
"@haklex/rich-ext-gallery": "0.4.1",
|
|
101
|
-
"@haklex/rich-
|
|
173
|
+
"@haklex/rich-renderer-alert": "0.4.1",
|
|
174
|
+
"@haklex/rich-ext-nested-doc": "0.4.1",
|
|
175
|
+
"@haklex/rich-renderer-banner": "0.4.1",
|
|
102
176
|
"@haklex/rich-renderer-codeblock": "0.4.1",
|
|
177
|
+
"@haklex/rich-renderer-linkcard": "0.4.1",
|
|
178
|
+
"@haklex/rich-renderer-image": "0.4.1",
|
|
179
|
+
"@haklex/rich-ext-excalidraw": "0.4.1",
|
|
180
|
+
"@haklex/rich-renderer-video": "0.4.1",
|
|
181
|
+
"@haklex/rich-ext-chat": "0.4.1",
|
|
103
182
|
"@haklex/rich-static-renderer": "0.4.1",
|
|
104
|
-
"@haklex/rich-renderer-
|
|
183
|
+
"@haklex/rich-renderer-mermaid": "0.4.1",
|
|
184
|
+
"@haklex/rich-renderer-mention": "0.4.1",
|
|
185
|
+
"@haklex/rich-renderer-ruby": "0.4.1"
|
|
105
186
|
},
|
|
106
187
|
"peerDependencies": {
|
|
107
188
|
"@lexical/react": "^0.44.0",
|
|
@@ -109,13 +190,22 @@
|
|
|
109
190
|
"react": ">=19",
|
|
110
191
|
"react-dom": ">=19",
|
|
111
192
|
"@haklex/rich-editor": "0.4.1",
|
|
112
|
-
"@haklex/rich-ext-
|
|
193
|
+
"@haklex/rich-ext-code-snippet": "0.4.1",
|
|
194
|
+
"@haklex/rich-ext-excalidraw": "0.4.1",
|
|
113
195
|
"@haklex/rich-ext-embed": "0.4.1",
|
|
196
|
+
"@haklex/rich-ext-chat": "0.4.1",
|
|
114
197
|
"@haklex/rich-ext-gallery": "0.4.1",
|
|
115
|
-
"@haklex/rich-
|
|
198
|
+
"@haklex/rich-renderer-alert": "0.4.1",
|
|
199
|
+
"@haklex/rich-renderer-image": "0.4.1",
|
|
200
|
+
"@haklex/rich-ext-nested-doc": "0.4.1",
|
|
201
|
+
"@haklex/rich-renderer-banner": "0.4.1",
|
|
116
202
|
"@haklex/rich-renderer-linkcard": "0.4.1",
|
|
117
|
-
"@haklex/rich-
|
|
118
|
-
"@haklex/rich-renderer-
|
|
203
|
+
"@haklex/rich-renderer-codeblock": "0.4.1",
|
|
204
|
+
"@haklex/rich-renderer-mention": "0.4.1",
|
|
205
|
+
"@haklex/rich-renderer-ruby": "0.4.1",
|
|
206
|
+
"@haklex/rich-renderer-mermaid": "0.4.1",
|
|
207
|
+
"@haklex/rich-renderer-video": "0.4.1",
|
|
208
|
+
"@haklex/rich-static-renderer": "0.4.1"
|
|
119
209
|
},
|
|
120
210
|
"peerDependenciesMeta": {
|
|
121
211
|
"@haklex/rich-ext-chat": {
|
|
@@ -127,14 +217,41 @@
|
|
|
127
217
|
"@haklex/rich-ext-embed": {
|
|
128
218
|
"optional": true
|
|
129
219
|
},
|
|
220
|
+
"@haklex/rich-ext-excalidraw": {
|
|
221
|
+
"optional": true
|
|
222
|
+
},
|
|
130
223
|
"@haklex/rich-ext-gallery": {
|
|
131
224
|
"optional": true
|
|
132
225
|
},
|
|
226
|
+
"@haklex/rich-ext-nested-doc": {
|
|
227
|
+
"optional": true
|
|
228
|
+
},
|
|
229
|
+
"@haklex/rich-renderer-alert": {
|
|
230
|
+
"optional": true
|
|
231
|
+
},
|
|
232
|
+
"@haklex/rich-renderer-banner": {
|
|
233
|
+
"optional": true
|
|
234
|
+
},
|
|
133
235
|
"@haklex/rich-renderer-codeblock": {
|
|
134
236
|
"optional": true
|
|
135
237
|
},
|
|
238
|
+
"@haklex/rich-renderer-image": {
|
|
239
|
+
"optional": true
|
|
240
|
+
},
|
|
136
241
|
"@haklex/rich-renderer-linkcard": {
|
|
137
242
|
"optional": true
|
|
243
|
+
},
|
|
244
|
+
"@haklex/rich-renderer-mention": {
|
|
245
|
+
"optional": true
|
|
246
|
+
},
|
|
247
|
+
"@haklex/rich-renderer-mermaid": {
|
|
248
|
+
"optional": true
|
|
249
|
+
},
|
|
250
|
+
"@haklex/rich-renderer-ruby": {
|
|
251
|
+
"optional": true
|
|
252
|
+
},
|
|
253
|
+
"@haklex/rich-renderer-video": {
|
|
254
|
+
"optional": true
|
|
138
255
|
}
|
|
139
256
|
},
|
|
140
257
|
"publishConfig": {
|