@haklex/rich-compose 0.2.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +53 -51
  2. package/dist/core/compose.d.ts.map +1 -1
  3. package/dist/core/dedup.d.ts.map +1 -1
  4. package/dist/core/index.d.ts.map +1 -1
  5. package/dist/core/lazy.d.ts.map +1 -1
  6. package/dist/core/types.d.ts +22 -22
  7. package/dist/core/types.d.ts.map +1 -1
  8. package/dist/index.d.ts +3 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.mjs +430 -5
  11. package/dist/modules/alert/index.d.ts +1 -1
  12. package/dist/modules/alert/index.d.ts.map +1 -1
  13. package/dist/modules/alert/module.d.ts.map +1 -1
  14. package/dist/modules/alert/renderer.d.ts.map +1 -1
  15. package/dist/modules/banner/index.d.ts +1 -1
  16. package/dist/modules/banner/index.d.ts.map +1 -1
  17. package/dist/modules/banner/module.d.ts.map +1 -1
  18. package/dist/modules/banner/renderer.d.ts.map +1 -1
  19. package/dist/modules/chat/index.d.ts +3 -3
  20. package/dist/modules/chat/index.d.ts.map +1 -1
  21. package/dist/modules/chat/index.mjs +9 -2
  22. package/dist/modules/chat/module.d.ts +7 -0
  23. package/dist/modules/chat/module.d.ts.map +1 -1
  24. package/dist/modules/chat/node.d.ts +2 -2
  25. package/dist/modules/chat/node.d.ts.map +1 -1
  26. package/dist/modules/chat/node.mjs +1 -1
  27. package/dist/modules/chat/renderer.d.ts +1 -1
  28. package/dist/modules/chat/renderer.d.ts.map +1 -1
  29. package/dist/modules/chat/renderer.mjs +1 -1
  30. package/dist/modules/code-block/index.d.ts +1 -1
  31. package/dist/modules/code-block/index.d.ts.map +1 -1
  32. package/dist/modules/code-block/module.d.ts.map +1 -1
  33. package/dist/modules/code-block/renderer.d.ts.map +1 -1
  34. package/dist/modules/code-snippet/index.d.ts +1 -1
  35. package/dist/modules/code-snippet/index.d.ts.map +1 -1
  36. package/dist/modules/code-snippet/index.mjs +7 -2
  37. package/dist/modules/code-snippet/module.d.ts +5 -0
  38. package/dist/modules/code-snippet/module.d.ts.map +1 -1
  39. package/dist/modules/code-snippet/node.d.ts +2 -2
  40. package/dist/modules/code-snippet/node.d.ts.map +1 -1
  41. package/dist/modules/code-snippet/node.mjs +1 -1
  42. package/dist/modules/code-snippet/renderer.d.ts +1 -1
  43. package/dist/modules/code-snippet/renderer.d.ts.map +1 -1
  44. package/dist/modules/code-snippet/renderer.mjs +1 -1
  45. package/dist/modules/embed/index.d.ts +1 -1
  46. package/dist/modules/embed/index.d.ts.map +1 -1
  47. package/dist/modules/embed/module.d.ts.map +1 -1
  48. package/dist/modules/embed/node.d.ts.map +1 -1
  49. package/dist/modules/excalidraw/index.d.ts +2 -2
  50. package/dist/modules/excalidraw/index.d.ts.map +1 -1
  51. package/dist/modules/excalidraw/module.d.ts.map +1 -1
  52. package/dist/modules/excalidraw/node.d.ts +2 -2
  53. package/dist/modules/excalidraw/node.d.ts.map +1 -1
  54. package/dist/modules/gallery/index.d.ts +2 -2
  55. package/dist/modules/gallery/index.d.ts.map +1 -1
  56. package/dist/modules/gallery/index.mjs +7 -2
  57. package/dist/modules/gallery/module.d.ts +5 -0
  58. package/dist/modules/gallery/module.d.ts.map +1 -1
  59. package/dist/modules/gallery/node.d.ts +2 -2
  60. package/dist/modules/gallery/node.d.ts.map +1 -1
  61. package/dist/modules/gallery/node.mjs +1 -1
  62. package/dist/modules/gallery/renderer.d.ts +1 -1
  63. package/dist/modules/gallery/renderer.d.ts.map +1 -1
  64. package/dist/modules/gallery/renderer.mjs +1 -1
  65. package/dist/modules/image/index.d.ts +1 -1
  66. package/dist/modules/image/index.d.ts.map +1 -1
  67. package/dist/modules/image/module.d.ts.map +1 -1
  68. package/dist/modules/image/renderer.d.ts.map +1 -1
  69. package/dist/modules/link-card/index.d.ts +1 -1
  70. package/dist/modules/link-card/index.d.ts.map +1 -1
  71. package/dist/modules/link-card/module.d.ts.map +1 -1
  72. package/dist/modules/link-card/renderer.d.ts.map +1 -1
  73. package/dist/modules/mention/index.d.ts +2 -2
  74. package/dist/modules/mention/index.d.ts.map +1 -1
  75. package/dist/modules/mention/module.d.ts.map +1 -1
  76. package/dist/modules/mention/renderer.d.ts.map +1 -1
  77. package/dist/modules/mermaid/index.d.ts +1 -1
  78. package/dist/modules/mermaid/index.d.ts.map +1 -1
  79. package/dist/modules/mermaid/module.d.ts.map +1 -1
  80. package/dist/modules/mermaid/renderer.d.ts.map +1 -1
  81. package/dist/modules/mermaid/ssr-fallback.d.ts.map +1 -1
  82. package/dist/modules/nested-doc/index.d.ts +1 -1
  83. package/dist/modules/nested-doc/index.d.ts.map +1 -1
  84. package/dist/modules/nested-doc/module.d.ts.map +1 -1
  85. package/dist/modules/nested-doc/node.d.ts.map +1 -1
  86. package/dist/modules/poll/index.d.ts +5 -0
  87. package/dist/modules/poll/index.d.ts.map +1 -0
  88. package/dist/modules/poll/index.mjs +20 -0
  89. package/dist/modules/poll/module.d.ts +12 -0
  90. package/dist/modules/poll/module.d.ts.map +1 -0
  91. package/dist/modules/poll/node.d.ts +3 -0
  92. package/dist/modules/poll/node.d.ts.map +1 -0
  93. package/dist/modules/poll/node.mjs +2 -0
  94. package/dist/modules/poll/renderer.d.ts +4 -0
  95. package/dist/modules/poll/renderer.d.ts.map +1 -0
  96. package/dist/modules/poll/renderer.mjs +5 -0
  97. package/dist/modules/ruby/index.d.ts +1 -1
  98. package/dist/modules/ruby/index.d.ts.map +1 -1
  99. package/dist/modules/ruby/module.d.ts.map +1 -1
  100. package/dist/modules/ruby/renderer.d.ts.map +1 -1
  101. package/dist/modules/video/index.d.ts +1 -1
  102. package/dist/modules/video/index.d.ts.map +1 -1
  103. package/dist/modules/video/module.d.ts.map +1 -1
  104. package/dist/modules/video/renderer.d.ts.map +1 -1
  105. package/dist/rich-compose.css +2 -0
  106. package/dist/static-renderer/RichRenderer.d.ts +3 -0
  107. package/dist/static-renderer/RichRenderer.d.ts.map +1 -0
  108. package/dist/static-renderer/components/HtmlComment.d.ts +6 -0
  109. package/dist/static-renderer/components/HtmlComment.d.ts.map +1 -0
  110. package/dist/static-renderer/engine/renderBuiltinNode.d.ts +3 -0
  111. package/dist/static-renderer/engine/renderBuiltinNode.d.ts.map +1 -0
  112. package/dist/static-renderer/engine/renderTextNode.d.ts +3 -0
  113. package/dist/static-renderer/engine/renderTextNode.d.ts.map +1 -0
  114. package/dist/static-renderer/index.d.ts +3 -0
  115. package/dist/static-renderer/index.d.ts.map +1 -0
  116. package/dist/static-renderer/preprocess/footnote.d.ts +7 -0
  117. package/dist/static-renderer/preprocess/footnote.d.ts.map +1 -0
  118. package/dist/static-renderer/table.css.d.ts +5 -0
  119. package/dist/static-renderer/table.css.d.ts.map +1 -0
  120. package/dist/static-renderer/types.d.ts +17 -0
  121. package/dist/static-renderer/types.d.ts.map +1 -0
  122. package/package.json +60 -36
package/README.md CHANGED
@@ -2,11 +2,9 @@
2
2
 
3
3
  Compose primitives for haklex rich content renderers — Gundam-style assembly of Lexical nodes, sync/lazy renderers, and Provider stacks.
4
4
 
5
- Status: experimental (`0.1.0`). The renderer side is being migrated from `@haklex/rich-kit-shiro/renderer`. The editor side is out of scope.
6
-
7
5
  ## Why
8
6
 
9
- `@haklex/rich-kit-shiro/renderer` ships every default renderer eagerly: even when a consumer overrides `CodeBlock` or `LinkCard`, the upstream `shiki` and `LinkCardRenderer` chains stay in the production bundle. `rich-compose` solves three problems at once:
7
+ The legacy `@haklex/rich-kit-shiro/renderer` (now removed) shipped every default renderer eagerly: even when a consumer overrode `CodeBlock` or `LinkCard`, the upstream `shiki` and `LinkCardRenderer` chains stayed in the production bundle. `rich-compose` solves three problems at once:
10
8
 
11
9
  1. **Subtractable** — drop a module by not importing it.
12
10
  2. **Replaceable** — swap a default renderer with no leftover bytes from the original.
@@ -22,12 +20,11 @@ pnpm add @haklex/rich-compose
22
20
 
23
21
  ## Peer Dependencies
24
22
 
25
- | Package | Version |
26
- | --- | --- |
27
- | `react` / `react-dom` | `>=19` |
23
+ | Package | Version |
24
+ | ---------------------------- | --------- |
25
+ | `react` / `react-dom` | `>=19` |
28
26
  | `lexical` / `@lexical/react` | `^0.44.0` |
29
- | `@haklex/rich-editor` | workspace |
30
- | `@haklex/rich-static-renderer` | workspace |
27
+ | `@haklex/rich-editor` | workspace |
31
28
 
32
29
  Per-module upstream packages (`@haklex/rich-ext-*`, `@haklex/rich-renderer-*`) are optional peers — install only those you compose into your renderer.
33
30
 
@@ -57,7 +54,7 @@ const RichContent = composeRenderer({
57
54
  Import the module sugar. Klass + renderer + (optional) lazy/SSR fallback are wired automatically.
58
55
 
59
56
  ```tsx
60
- import { embedModule } from '@haklex/rich-compose/modules/embed'
57
+ import { embedModule } from '@haklex/rich-compose/modules/embed';
61
58
  ```
62
59
 
63
60
  ### Mode B — custom renderer (tree-shake the default)
@@ -65,13 +62,13 @@ import { embedModule } from '@haklex/rich-compose/modules/embed'
65
62
  Import the Klass from the `/node` subpath; supply your own renderer. The default renderer's chunk never enters the bundle.
66
63
 
67
64
  ```tsx
68
- import { GalleryNode } from '@haklex/rich-compose/modules/gallery/node'
65
+ import { GalleryNode } from '@haklex/rich-compose/modules/gallery/node';
69
66
 
70
67
  const myGalleryModule: RichRendererModule = {
71
68
  name: 'gallery',
72
69
  nodes: [GalleryNode],
73
70
  renderers: { Gallery: MyGalleryRenderer },
74
- }
71
+ };
75
72
  ```
76
73
 
77
74
  For modules with no custom Klass (most of the renderer-only modules), simply construct a module with the same `name` and your renderer:
@@ -80,7 +77,7 @@ For modules with no custom Klass (most of the renderer-only modules), simply con
80
77
  const myLinkCardModule: RichRendererModule = {
81
78
  name: 'link-card',
82
79
  renderers: { LinkCard: MyLinkCardRenderer },
83
- }
80
+ };
84
81
  ```
85
82
 
86
83
  ### Mode C — wrap the default
@@ -88,8 +85,8 @@ const myLinkCardModule: RichRendererModule = {
88
85
  Pull the default renderer from `/renderer` and wrap it.
89
86
 
90
87
  ```tsx
91
- import { LinkCardNode } from '@haklex/rich-compose/modules/link-card/node' // when applicable
92
- import { LinkCardRenderer } from '@haklex/rich-compose/modules/link-card/renderer'
88
+ import { LinkCardNode } from '@haklex/rich-compose/modules/link-card/node'; // when applicable
89
+ import { LinkCardRenderer } from '@haklex/rich-compose/modules/link-card/renderer';
93
90
 
94
91
  const wrappedModule: RichRendererModule = {
95
92
  name: 'link-card',
@@ -100,21 +97,22 @@ const wrappedModule: RichRendererModule = {
100
97
  </div>
101
98
  ),
102
99
  },
103
- }
100
+ };
104
101
  ```
105
102
 
106
103
  ## `RichRendererModule` shape
107
104
 
108
105
  ```ts
109
106
  interface RichRendererModule {
110
- name: string // dedup key
111
- nodes?: Klass<LexicalNode>[] // optional — omit for builtin types
112
- renderers?: Partial<RendererConfig> // sync renderer map
113
- Provider?: ComponentType<{ children: ReactNode }> // optional internal provider
114
- lazyRenderers?: Partial<{ // code-split renderers
115
- [K in RendererKey]: () => Promise<{ default: NonNullable<RendererConfig[K]> }>
116
- }>
117
- ssrFallback?: Partial<Record<RendererKey, ReactNode>> // deterministic fallback
107
+ name: string; // dedup key
108
+ nodes?: Klass<LexicalNode>[]; // optional — omit for builtin types
109
+ renderers?: Partial<RendererConfig>; // sync renderer map
110
+ Provider?: ComponentType<{ children: ReactNode }>; // optional internal provider
111
+ lazyRenderers?: Partial<{
112
+ // code-split renderers
113
+ [K in RendererKey]: () => Promise<{ default: NonNullable<RendererConfig[K]> }>;
114
+ }>;
115
+ ssrFallback?: Partial<Record<RendererKey, ReactNode>>; // deterministic fallback
118
116
  }
119
117
  ```
120
118
 
@@ -128,9 +126,11 @@ To override a lazy renderer (e.g., for a sync, pre-tokenized code block on SSR),
128
126
 
129
127
  ```ts
130
128
  composeRenderer({
131
- modules: [/* ... */],
129
+ modules: [
130
+ /* ... */
131
+ ],
132
132
  overrides: { CodeBlock: PreTokenizedCodeBlock },
133
- })
133
+ });
134
134
  ```
135
135
 
136
136
  The lazy chunk is still emitted but never fetched at runtime.
@@ -151,44 +151,46 @@ nodes:
151
151
 
152
152
  ## Module catalog
153
153
 
154
- | Module | Klass | Renderer mode | Source |
155
- | --- | --- | --- | --- |
156
- | `alert` | builtin | sync | `rich-renderer-alert` |
157
- | `banner` | builtin | sync | `rich-renderer-banner` |
158
- | `chat` | `ChatNode` | sync | `rich-ext-chat` |
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` |
154
+ | Module | Klass | Renderer mode | Source |
155
+ | -------------- | ----------------- | ------------------------------- | ------------------------- |
156
+ | `alert` | builtin | sync | `rich-renderer-alert` |
157
+ | `banner` | builtin | sync | `rich-renderer-banner` |
158
+ | `chat` | `ChatNode` | sync | `rich-ext-chat` |
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
171
 
172
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`:
173
173
 
174
174
  ```ts
175
175
  composeRenderer({
176
- modules: [/* ... */],
176
+ modules: [
177
+ /* ... */
178
+ ],
177
179
  overrides: { KaTeX: MyKaTeXRenderer, Poll: MyPollRenderer },
178
- })
180
+ });
179
181
  ```
180
182
 
181
183
  > **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.
182
184
 
183
185
  ## Sub-path exports
184
186
 
185
- | Path | Description |
186
- | --- | --- |
187
- | `@haklex/rich-compose` | core: `composeRenderer`, types, helpers |
188
- | `@haklex/rich-compose/modules/<name>` | full module barrel |
189
- | `@haklex/rich-compose/modules/<name>/node` | Klass(es) only (when applicable) |
190
- | `@haklex/rich-compose/modules/<name>/renderer` | default renderer only |
191
- | `@haklex/rich-compose/style.css` | core styles (skeletons, layout shell) |
187
+ | Path | Description |
188
+ | ---------------------------------------------- | --------------------------------------- |
189
+ | `@haklex/rich-compose` | core: `composeRenderer`, types, helpers |
190
+ | `@haklex/rich-compose/modules/<name>` | full module barrel |
191
+ | `@haklex/rich-compose/modules/<name>/node` | Klass(es) only (when applicable) |
192
+ | `@haklex/rich-compose/modules/<name>/renderer` | default renderer only |
193
+ | `@haklex/rich-compose/style.css` | core styles (skeletons, layout shell) |
192
194
 
193
195
  ## Part of Haklex
194
196
 
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/core/compose.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAA+C,MAAM,OAAO,CAAA;AAIvF,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,SAAS,CAAA;AAoChB,wBAAgB,eAAe,CAC7B,IAAI,EAAE,sBAAsB,GAC3B,aAAa,CAAC,qBAAqB,CAAC,CAiDtC"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/core/compose.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,aAAa,EAA+C,MAAM,OAAO,CAAC;AAKxF,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAsB,MAAM,SAAS,CAAC;AAkCjG,wBAAgB,eAAe,CAC7B,IAAI,EAAE,sBAAsB,GAC3B,aAAa,CAAC,qBAAqB,CAAC,CA4CtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../src/core/dedup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,kBAAkB,EAAE,GAAG,SAAS,EACxC,OAAO,EAAE,kBAAkB,EAAE,GAAG,SAAS,GACxC,kBAAkB,EAAE,CA0BtB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAyB5E"}
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../src/core/dedup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,kBAAkB,EAAE,GAAG,SAAS,EACxC,OAAO,EAAE,kBAAkB,EAAE,GAAG,SAAS,GACxC,kBAAkB,EAAE,CA0BtB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAyB5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/core/lazy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAIzD,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE9D;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAsB/E"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/core/lazy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAsB/E"}
@@ -1,9 +1,19 @@
1
1
  import { RendererConfig, RichEditorVariant } from '@haklex/rich-editor';
2
- import { BuiltinNodeRenderer } from '@haklex/rich-static-renderer';
3
2
  import { Klass, LexicalNode, SerializedEditorState } from 'lexical';
4
3
  import { ComponentType, CSSProperties, ReactNode } from 'react';
4
+ import { BuiltinNodeRenderer } from '../static-renderer/types';
5
5
  export type RendererKey = keyof RendererConfig;
6
6
  export interface RichRendererModule {
7
+ /**
8
+ * Lazy renderers. Each loader returns the renderer component as default
9
+ * export. composeRenderer wraps each in `React.lazy` (factory created
10
+ * once at compose time) + `<Suspense fallback={ssrFallback?.[type]}>`.
11
+ */
12
+ lazyRenderers?: Partial<{
13
+ [K in RendererKey]: () => Promise<{
14
+ default: NonNullable<RendererConfig[K]>;
15
+ }>;
16
+ }>;
7
17
  /** Stable identifier; used for dedup, debug logs, and Provider DevTools naming. */
8
18
  name: string;
9
19
  /**
@@ -12,8 +22,6 @@ export interface RichRendererModule {
12
22
  * composeRenderer treats missing `nodes` as `[]`.
13
23
  */
14
24
  nodes?: Klass<LexicalNode>[];
15
- /** type → Component map. Sync renderers. */
16
- renderers?: Partial<RendererConfig>;
17
25
  /**
18
26
  * Optional context provider. composeRenderer stacks Providers in module
19
27
  * order outside `<RichRenderer>`. Module Providers are for internal
@@ -23,16 +31,8 @@ export interface RichRendererModule {
23
31
  Provider?: ComponentType<{
24
32
  children: ReactNode;
25
33
  }>;
26
- /**
27
- * Lazy renderers. Each loader returns the renderer component as default
28
- * export. composeRenderer wraps each in `React.lazy` (factory created
29
- * once at compose time) + `<Suspense fallback={ssrFallback?.[type]}>`.
30
- */
31
- lazyRenderers?: Partial<{
32
- [K in RendererKey]: () => Promise<{
33
- default: NonNullable<RendererConfig[K]>;
34
- }>;
35
- }>;
34
+ /** type → Component map. Sync renderers. */
35
+ renderers?: Partial<RendererConfig>;
36
36
  /**
37
37
  * SSR / Suspense fallback. Must be deterministic — no Date.now, no random,
38
38
  * no client-only API access. Renders identically server-side and during
@@ -41,22 +41,22 @@ export interface RichRendererModule {
41
41
  ssrFallback?: Partial<Record<RendererKey, ReactNode>>;
42
42
  }
43
43
  export interface ComposeRendererOptions {
44
- /** Starting set; can be `shiroPreset`, custom array, or omitted. */
45
- preset?: RichRendererModule[];
44
+ /** Pass-through to `<RichRenderer>` for `paragraph` / `link` / `autolink` etc. */
45
+ builtinNodeOverrides?: Record<string, BuiltinNodeRenderer>;
46
46
  /** Appended to preset; later modules override earlier on `name` collision. */
47
47
  modules?: RichRendererModule[];
48
48
  /** Final renderer overrides; takes precedence over module-supplied renderers. */
49
49
  overrides?: Partial<RendererConfig>;
50
- /** Pass-through to `<RichRenderer>` for `paragraph` / `link` / `autolink` etc. */
51
- builtinNodeOverrides?: Record<string, BuiltinNodeRenderer>;
50
+ /** Starting set; can be `shiroPreset`, custom array, or omitted. */
51
+ preset?: RichRendererModule[];
52
52
  }
53
53
  export interface RichRendererBaseProps {
54
- value: SerializedEditorState;
55
- variant?: RichEditorVariant;
56
- theme?: 'light' | 'dark';
54
+ as?: keyof React.JSX.IntrinsicElements;
57
55
  className?: string;
58
- style?: CSSProperties;
59
56
  nested?: boolean;
60
- as?: keyof React.JSX.IntrinsicElements;
57
+ style?: CSSProperties;
58
+ theme?: 'light' | 'dark';
59
+ value: SerializedEditorState;
60
+ variant?: RichEditorVariant;
61
61
  }
62
62
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpE,MAAM,MAAM,WAAW,GAAG,MAAM,cAAc,CAAA;AAE9C,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAA;IAEZ;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAA;IAE5B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IAEjD;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;SACrB,CAAC,IAAI,WAAW,GAAG,MAAM,OAAO,CAAC;YAAE,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;SAAE,CAAC;KAC/E,CAAC,CAAA;IAEF;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;CACtD;AAED,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC7B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC9B,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACnC,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAA;CACvC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;SACrB,CAAC,IAAI,WAAW,GAAG,MAAM,OAAO,CAAC;YAAE,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;SAAE,CAAC;KAC/E,CAAC,CAAC;IAEH,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IAE7B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAElD,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC3D,8EAA8E;IAC9E,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,oEAAoE;IACpE,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
- export { composeRenderer, dedupNodes, mergeModules, wrapLazy, } from './core';
2
1
  export type { ComposeRendererOptions, RendererKey, RichRendererBaseProps, RichRendererModule, } from './core';
2
+ export { composeRenderer, dedupNodes, mergeModules, wrapLazy } from './core';
3
+ export type { BuiltinNodeRenderer, RichRendererProps } from './static-renderer';
4
+ export { RichRenderer } from './static-renderer';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,MAAM,QAAQ,CAAA;AACf,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}