@rtif-sdk/web 1.1.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/block-drag-handler.js +4 -1
  2. package/dist/block-drag-handler.js.map +1 -1
  3. package/dist/content-handler-html.d.ts +28 -0
  4. package/dist/content-handler-html.d.ts.map +1 -0
  5. package/dist/content-handler-html.js +49 -0
  6. package/dist/content-handler-html.js.map +1 -0
  7. package/dist/content-handlers.d.ts +20 -19
  8. package/dist/content-handlers.d.ts.map +1 -1
  9. package/dist/content-handlers.js +4 -43
  10. package/dist/content-handlers.js.map +1 -1
  11. package/dist/editor.d.ts.map +1 -1
  12. package/dist/editor.js +119 -5
  13. package/dist/editor.js.map +1 -1
  14. package/dist/index.d.ts +12 -4
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +15 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/preset-basic.d.ts +20 -0
  19. package/dist/preset-basic.d.ts.map +1 -0
  20. package/dist/preset-basic.js +28 -0
  21. package/dist/preset-basic.js.map +1 -0
  22. package/dist/preset-full.d.ts +22 -0
  23. package/dist/preset-full.d.ts.map +1 -0
  24. package/dist/preset-full.js +66 -0
  25. package/dist/preset-full.js.map +1 -0
  26. package/dist/preset-plaintext.d.ts +20 -0
  27. package/dist/preset-plaintext.d.ts.map +1 -0
  28. package/dist/preset-plaintext.js +19 -0
  29. package/dist/preset-plaintext.js.map +1 -0
  30. package/dist/preset-standard.d.ts +22 -0
  31. package/dist/preset-standard.d.ts.map +1 -0
  32. package/dist/preset-standard.js +47 -0
  33. package/dist/preset-standard.js.map +1 -0
  34. package/dist/presets.d.ts +7 -88
  35. package/dist/presets.d.ts.map +1 -1
  36. package/dist/presets.js +7 -152
  37. package/dist/presets.js.map +1 -1
  38. package/dist/renderer.d.ts +29 -0
  39. package/dist/renderer.d.ts.map +1 -1
  40. package/dist/renderer.js +107 -77
  41. package/dist/renderer.js.map +1 -1
  42. package/dist/spatial-index.d.ts +203 -0
  43. package/dist/spatial-index.d.ts.map +1 -0
  44. package/dist/spatial-index.js +211 -0
  45. package/dist/spatial-index.js.map +1 -0
  46. package/dist/types.d.ts +82 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/virtual-viewport.d.ts +241 -0
  49. package/dist/virtual-viewport.d.ts.map +1 -0
  50. package/dist/virtual-viewport.js +584 -0
  51. package/dist/virtual-viewport.js.map +1 -0
  52. package/package.json +1 -1
package/dist/presets.d.ts CHANGED
@@ -1,95 +1,14 @@
1
1
  /**
2
2
  * Plugin presets for the RTIF web editor.
3
3
  *
4
- * Each preset is a factory function that returns an array of instantiated
5
- * plugins ready to be registered via `engine.use()`. Presets are ordered
6
- * from lightest (plain text) to heaviest (all features).
4
+ * Re-exports from individual preset modules for backward compatibility.
5
+ * Each preset lives in its own file so that importing one preset does not
6
+ * pull in the plugin imports of other presets (tree-shaking friendly).
7
7
  *
8
8
  * @packageDocumentation
9
9
  */
10
- import type { Plugin } from '@rtif-sdk/engine';
11
- /**
12
- * Plain text preset — no plugins.
13
- *
14
- * Use this for editors that need only unformatted text input with no
15
- * inline marks, block types, or other extensions.
16
- *
17
- * @returns An empty plugin array
18
- *
19
- * @example
20
- * ```ts
21
- * import { PRESET_PLAINTEXT } from '@rtif-sdk/web';
22
- * import { createEngine } from '@rtif-sdk/engine';
23
- *
24
- * const engine = createEngine(initialDoc);
25
- * for (const plugin of PRESET_PLAINTEXT) {
26
- * engine.use(plugin);
27
- * }
28
- * ```
29
- */
30
- export declare const PRESET_PLAINTEXT: ReadonlyArray<Plugin>;
31
- /**
32
- * Basic preset — essential inline formatting.
33
- *
34
- * Includes bold, italic, underline, and link plugins. Suitable for
35
- * simple rich text fields (comments, chat messages, short-form content).
36
- *
37
- * @returns An array of basic formatting plugins
38
- *
39
- * @example
40
- * ```ts
41
- * import { PRESET_BASIC } from '@rtif-sdk/web';
42
- * import { createEngine } from '@rtif-sdk/engine';
43
- *
44
- * const engine = createEngine(initialDoc);
45
- * for (const plugin of PRESET_BASIC) {
46
- * engine.use(plugin);
47
- * }
48
- * ```
49
- */
50
- export declare const PRESET_BASIC: ReadonlyArray<Plugin>;
51
- /**
52
- * Standard preset — common rich text editing features.
53
- *
54
- * Includes everything in {@link PRESET_BASIC}, plus strikethrough,
55
- * inline code, headings, lists, blockquotes, code blocks, and
56
- * horizontal rules. Suitable for blog posts, documentation, and
57
- * general-purpose content editing.
58
- *
59
- * @returns An array of standard editing plugins
60
- *
61
- * @example
62
- * ```ts
63
- * import { PRESET_STANDARD } from '@rtif-sdk/web';
64
- * import { createEngine } from '@rtif-sdk/engine';
65
- *
66
- * const engine = createEngine(initialDoc);
67
- * for (const plugin of PRESET_STANDARD) {
68
- * engine.use(plugin);
69
- * }
70
- * ```
71
- */
72
- export declare const PRESET_STANDARD: ReadonlyArray<Plugin>;
73
- /**
74
- * Full preset — all available plugins.
75
- *
76
- * Includes everything in {@link PRESET_STANDARD}, plus text color,
77
- * font size, font family, alignment, indentation, callouts, images,
78
- * and embeds. Suitable for full-featured document editors and CMS
79
- * authoring tools.
80
- *
81
- * @returns An array of all available plugins
82
- *
83
- * @example
84
- * ```ts
85
- * import { PRESET_FULL } from '@rtif-sdk/web';
86
- * import { createEngine } from '@rtif-sdk/engine';
87
- *
88
- * const engine = createEngine(initialDoc);
89
- * for (const plugin of PRESET_FULL) {
90
- * engine.use(plugin);
91
- * }
92
- * ```
93
- */
94
- export declare const PRESET_FULL: ReadonlyArray<Plugin>;
10
+ export { PRESET_PLAINTEXT } from './preset-plaintext.js';
11
+ export { PRESET_BASIC } from './preset-basic.js';
12
+ export { PRESET_STANDARD } from './preset-standard.js';
13
+ export { PRESET_FULL } from './preset-full.js';
95
14
  //# sourceMappingURL=presets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAsB/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAM,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,CAK9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,MAAM,CAiBjD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,MAAM,CA+B7C,CAAC"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/presets.js CHANGED
@@ -1,159 +1,14 @@
1
1
  /**
2
2
  * Plugin presets for the RTIF web editor.
3
3
  *
4
- * Each preset is a factory function that returns an array of instantiated
5
- * plugins ready to be registered via `engine.use()`. Presets are ordered
6
- * from lightest (plain text) to heaviest (all features).
4
+ * Re-exports from individual preset modules for backward compatibility.
5
+ * Each preset lives in its own file so that importing one preset does not
6
+ * pull in the plugin imports of other presets (tree-shaking friendly).
7
7
  *
8
8
  * @packageDocumentation
9
9
  */
10
- import { boldPlugin } from './plugins/bold-plugin.js';
11
- import { italicPlugin } from './plugins/italic-plugin.js';
12
- import { underlinePlugin } from './plugins/underline-plugin.js';
13
- import { linkPlugin } from './plugins/link-plugin.js';
14
- import { strikethroughPlugin } from './plugins/strikethrough-plugin.js';
15
- import { codePlugin } from './plugins/code-plugin.js';
16
- import { headingPlugin } from './plugins/heading-plugin.js';
17
- import { listPlugin } from './plugins/list-plugin.js';
18
- import { blockquotePlugin } from './plugins/blockquote-plugin.js';
19
- import { codeBlockPlugin } from './plugins/code-block-plugin.js';
20
- import { hrPlugin } from './plugins/hr-plugin.js';
21
- import { textColorPlugin } from './plugins/text-color-plugin.js';
22
- import { fontSizePlugin } from './plugins/font-size-plugin.js';
23
- import { fontFamilyPlugin } from './plugins/font-family-plugin.js';
24
- import { alignmentPlugin } from './plugins/alignment-plugin.js';
25
- import { indentPlugin } from './plugins/indent-plugin.js';
26
- import { calloutPlugin } from './plugins/callout-plugin.js';
27
- import { imagePlugin } from './plugins/image-plugin.js';
28
- import { embedPlugin } from './plugins/embed-plugin.js';
29
- /**
30
- * Plain text preset — no plugins.
31
- *
32
- * Use this for editors that need only unformatted text input with no
33
- * inline marks, block types, or other extensions.
34
- *
35
- * @returns An empty plugin array
36
- *
37
- * @example
38
- * ```ts
39
- * import { PRESET_PLAINTEXT } from '@rtif-sdk/web';
40
- * import { createEngine } from '@rtif-sdk/engine';
41
- *
42
- * const engine = createEngine(initialDoc);
43
- * for (const plugin of PRESET_PLAINTEXT) {
44
- * engine.use(plugin);
45
- * }
46
- * ```
47
- */
48
- export const PRESET_PLAINTEXT = [];
49
- /**
50
- * Basic preset — essential inline formatting.
51
- *
52
- * Includes bold, italic, underline, and link plugins. Suitable for
53
- * simple rich text fields (comments, chat messages, short-form content).
54
- *
55
- * @returns An array of basic formatting plugins
56
- *
57
- * @example
58
- * ```ts
59
- * import { PRESET_BASIC } from '@rtif-sdk/web';
60
- * import { createEngine } from '@rtif-sdk/engine';
61
- *
62
- * const engine = createEngine(initialDoc);
63
- * for (const plugin of PRESET_BASIC) {
64
- * engine.use(plugin);
65
- * }
66
- * ```
67
- */
68
- export const PRESET_BASIC = [
69
- boldPlugin(),
70
- italicPlugin(),
71
- underlinePlugin(),
72
- linkPlugin(),
73
- ];
74
- /**
75
- * Standard preset — common rich text editing features.
76
- *
77
- * Includes everything in {@link PRESET_BASIC}, plus strikethrough,
78
- * inline code, headings, lists, blockquotes, code blocks, and
79
- * horizontal rules. Suitable for blog posts, documentation, and
80
- * general-purpose content editing.
81
- *
82
- * @returns An array of standard editing plugins
83
- *
84
- * @example
85
- * ```ts
86
- * import { PRESET_STANDARD } from '@rtif-sdk/web';
87
- * import { createEngine } from '@rtif-sdk/engine';
88
- *
89
- * const engine = createEngine(initialDoc);
90
- * for (const plugin of PRESET_STANDARD) {
91
- * engine.use(plugin);
92
- * }
93
- * ```
94
- */
95
- export const PRESET_STANDARD = [
96
- // Inline marks (from BASIC)
97
- boldPlugin(),
98
- italicPlugin(),
99
- underlinePlugin(),
100
- linkPlugin(),
101
- // Additional inline marks
102
- strikethroughPlugin(),
103
- codePlugin(),
104
- // Block types
105
- headingPlugin(),
106
- listPlugin(),
107
- blockquotePlugin(),
108
- codeBlockPlugin(),
109
- hrPlugin(),
110
- ];
111
- /**
112
- * Full preset — all available plugins.
113
- *
114
- * Includes everything in {@link PRESET_STANDARD}, plus text color,
115
- * font size, font family, alignment, indentation, callouts, images,
116
- * and embeds. Suitable for full-featured document editors and CMS
117
- * authoring tools.
118
- *
119
- * @returns An array of all available plugins
120
- *
121
- * @example
122
- * ```ts
123
- * import { PRESET_FULL } from '@rtif-sdk/web';
124
- * import { createEngine } from '@rtif-sdk/engine';
125
- *
126
- * const engine = createEngine(initialDoc);
127
- * for (const plugin of PRESET_FULL) {
128
- * engine.use(plugin);
129
- * }
130
- * ```
131
- */
132
- export const PRESET_FULL = [
133
- // Inline marks (from BASIC)
134
- boldPlugin(),
135
- italicPlugin(),
136
- underlinePlugin(),
137
- linkPlugin(),
138
- // Additional inline marks (from STANDARD)
139
- strikethroughPlugin(),
140
- codePlugin(),
141
- // Block types (from STANDARD)
142
- headingPlugin(),
143
- listPlugin(),
144
- blockquotePlugin(),
145
- codeBlockPlugin(),
146
- hrPlugin(),
147
- // Parameterized text styling
148
- textColorPlugin(),
149
- fontSizePlugin(),
150
- fontFamilyPlugin(),
151
- // Paragraph formatting
152
- alignmentPlugin(),
153
- indentPlugin(),
154
- // Advanced block types
155
- calloutPlugin(),
156
- imagePlugin(),
157
- embedPlugin(),
158
- ];
10
+ export { PRESET_PLAINTEXT } from './preset-plaintext.js';
11
+ export { PRESET_BASIC } from './preset-basic.js';
12
+ export { PRESET_STANDARD } from './preset-standard.js';
13
+ export { PRESET_FULL } from './preset-full.js';
159
14
  //# sourceMappingURL=presets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA0B,EAAE,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,UAAU,EAAE;IACZ,YAAY,EAAE;IACd,eAAe,EAAE;IACjB,UAAU,EAAE;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,eAAe,GAA0B;IACpD,4BAA4B;IAC5B,UAAU,EAAE;IACZ,YAAY,EAAE;IACd,eAAe,EAAE;IACjB,UAAU,EAAE;IAEZ,0BAA0B;IAC1B,mBAAmB,EAAE;IACrB,UAAU,EAAE;IAEZ,cAAc;IACd,aAAa,EAAE;IACf,UAAU,EAAE;IACZ,gBAAgB,EAAE;IAClB,eAAe,EAAE;IACjB,QAAQ,EAAE;CACX,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,4BAA4B;IAC5B,UAAU,EAAE;IACZ,YAAY,EAAE;IACd,eAAe,EAAE;IACjB,UAAU,EAAE;IAEZ,0CAA0C;IAC1C,mBAAmB,EAAE;IACrB,UAAU,EAAE;IAEZ,8BAA8B;IAC9B,aAAa,EAAE;IACf,UAAU,EAAE;IACZ,gBAAgB,EAAE;IAClB,eAAe,EAAE;IACjB,QAAQ,EAAE;IAEV,6BAA6B;IAC7B,eAAe,EAAE;IACjB,cAAc,EAAE;IAChB,gBAAgB,EAAE;IAElB,uBAAuB;IACvB,eAAe,EAAE;IACjB,YAAY,EAAE;IAEd,uBAAuB;IACvB,aAAa,EAAE;IACf,WAAW,EAAE;IACb,WAAW,EAAE;CACd,CAAC"}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -122,4 +122,33 @@ export declare function renderInitial(root: HTMLElement, doc: Document, markRend
122
122
  * ```
123
123
  */
124
124
  export declare function reconcile(root: HTMLElement, prevDoc: Document, nextDoc: Document, composingBlockId: string | null, markRenderers?: MarkRendererRegistry, blockRenderers?: BlockRendererRegistry, blockElementMap?: Map<string, HTMLElement>): void;
125
+ /**
126
+ * Reconcile a single block element to match a new RTIF block state.
127
+ *
128
+ * Extracted from {@link reconcile} for use by the virtual viewport, which
129
+ * needs to reconcile individual blocks without running the full document
130
+ * reconciliation loop.
131
+ *
132
+ * Returns the (possibly replaced) block element. When the block type or attrs
133
+ * change and in-place update fails, a new element is created and the caller
134
+ * must update its own references (e.g., blockElementMap).
135
+ *
136
+ * @param root - The root DOM element (used for block renderer context)
137
+ * @param blockEl - The existing block DOM element
138
+ * @param prevBlock - The previous RTIF block state, or undefined if new
139
+ * @param nextBlock - The new RTIF block state
140
+ * @param composingBlockId - Block ID currently under IME composition, or null
141
+ * @param markRenderers - Optional registry of mark renderers
142
+ * @param blockRenderers - Optional registry of block renderers
143
+ * @returns The reconciled block element (same reference or a new replacement)
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const el = reconcileBlock(root, blockEl, prevBlock, nextBlock, null, marks, blocks);
148
+ * if (el !== blockEl) {
149
+ * blockElementMap.set(nextBlock.id, el);
150
+ * }
151
+ * ```
152
+ */
153
+ export declare function reconcileBlock(root: HTMLElement, blockEl: HTMLElement, prevBlock: Block | undefined, nextBlock: Block, composingBlockId: string | null, markRenderers?: MarkRendererRegistry, blockRenderers?: BlockRendererRegistry): HTMLElement;
125
154
  //# sourceMappingURL=renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAoCjE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,aAAa,CAAC,EAAE,oBAAoB,GACnC,WAAW,CA6Bb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,aAAa,CAAC,EAAE,oBAAoB,EACpC,cAAc,CAAC,EAAE,qBAAqB,GACrC,cAAc,CAgBhB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,IAAI,CAEpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,QAAQ,EACb,aAAa,CAAC,EAAE,oBAAoB,EACpC,cAAc,CAAC,EAAE,qBAAqB,EACtC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACzC,IAAI,CAiBN;AA4HD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,QAAQ,EACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,aAAa,CAAC,EAAE,oBAAoB,EACpC,cAAc,CAAC,EAAE,qBAAqB,EACtC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACzC,IAAI,CAmJN"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAoCjE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,aAAa,CAAC,EAAE,oBAAoB,GACnC,WAAW,CA6Bb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,aAAa,CAAC,EAAE,oBAAoB,EACpC,cAAc,CAAC,EAAE,qBAAqB,GACrC,cAAc,CAgBhB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,IAAI,CAEpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,QAAQ,EACb,aAAa,CAAC,EAAE,oBAAoB,EACpC,cAAc,CAAC,EAAE,qBAAqB,EACtC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACzC,IAAI,CAiBN;AA4HD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,QAAQ,EACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,aAAa,CAAC,EAAE,oBAAoB,EACpC,cAAc,CAAC,EAAE,qBAAqB,EACtC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACzC,IAAI,CAuFN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,KAAK,GAAG,SAAS,EAC5B,SAAS,EAAE,KAAK,EAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,aAAa,CAAC,EAAE,oBAAoB,EACpC,cAAc,CAAC,EAAE,qBAAqB,GACrC,WAAW,CAmEb"}
package/dist/renderer.js CHANGED
@@ -344,90 +344,28 @@ export function reconcile(root, prevDoc, nextDoc, composingBlockId, markRenderer
344
344
  const nextBlockIds = new Set();
345
345
  // Walk next blocks in order, using a reference node cursor to minimize moves
346
346
  let referenceNode = root.firstChild;
347
+ // Skip spacer nodes (from virtual viewport) so reconcile doesn't treat them as blocks
348
+ while (referenceNode instanceof HTMLElement &&
349
+ referenceNode.hasAttribute('data-rtif-spacer')) {
350
+ referenceNode = referenceNode.nextSibling;
351
+ }
347
352
  for (const nextBlock of nextDoc.blocks) {
348
353
  nextBlockIds.add(nextBlock.id);
349
354
  let blockEl = existingElements.get(nextBlock.id) ?? null;
350
355
  if (blockEl) {
351
- // Block element already exists in the DOM
352
356
  const prevBlock = prevBlockMap.get(nextBlock.id);
353
- // Skip composing block entirely
354
- if (nextBlock.id === composingBlockId) {
355
- // Just make sure it's in the right position
356
- if (blockEl !== referenceNode) {
357
- root.insertBefore(blockEl, referenceNode);
358
- }
359
- else {
360
- referenceNode = referenceNode.nextSibling;
361
- }
357
+ // Delegate content reconciliation to reconcileBlock (single source of truth).
358
+ // reconcileBlock handles composing skip, type/attr changes, span updates.
359
+ // It may return a new element if the block was fully replaced.
360
+ const result = reconcileBlock(root, blockEl, prevBlock, nextBlock, composingBlockId, markRenderers, blockRenderers);
361
+ if (result !== blockEl) {
362
+ existingElements.set(nextBlock.id, result);
363
+ blockEl = result;
364
+ // replaceChild already placed the new element in the old position;
365
+ // advance referenceNode past it.
366
+ referenceNode = result.nextSibling;
362
367
  continue;
363
368
  }
364
- // Check if block changed by reference
365
- if (prevBlock !== nextBlock) {
366
- // If block type or attrs changed, try in-place update first
367
- if (prevBlock && (prevBlock.type !== nextBlock.type || prevBlock.attrs !== nextBlock.attrs)) {
368
- let didUpdate = false;
369
- // If same type, try updateElement() for efficient in-place attr updates
370
- if (prevBlock.type === nextBlock.type && blockRenderers) {
371
- const renderer = blockRenderers.get(nextBlock.type);
372
- if (renderer?.updateElement) {
373
- didUpdate = renderer.updateElement(blockEl, nextBlock);
374
- if (didUpdate) {
375
- // Re-apply attr renderers (alignment, indent, etc.)
376
- if (nextBlock.attrs) {
377
- for (const [key, value] of Object.entries(nextBlock.attrs)) {
378
- if (value == null)
379
- continue;
380
- const attrRenderer = blockRenderers.getAttrRenderer(key);
381
- if (attrRenderer) {
382
- attrRenderer.apply(blockEl, value);
383
- }
384
- }
385
- }
386
- // Reconcile spans separately since updateElement only handles attrs
387
- const container = getSpanContainer(blockEl, nextBlock.type, blockRenderers);
388
- reconcileBlockSpans(container, prevBlock, nextBlock, markRenderers);
389
- // Ensure correct position
390
- if (blockEl !== referenceNode) {
391
- root.insertBefore(blockEl, referenceNode);
392
- }
393
- else {
394
- referenceNode = referenceNode.nextSibling;
395
- }
396
- continue;
397
- }
398
- }
399
- }
400
- // Fall back to full replacement if updateElement doesn't exist,
401
- // returned false, or types differ
402
- const newBlockEl = createBlockElement(nextBlock, markRenderers, blockRenderers);
403
- root.replaceChild(newBlockEl, blockEl);
404
- // Update our reference so position tracking remains correct
405
- existingElements.set(nextBlock.id, newBlockEl);
406
- blockEl = newBlockEl;
407
- // replaceChild keeps position; advance referenceNode past replaced element
408
- referenceNode = newBlockEl.nextSibling;
409
- continue;
410
- }
411
- // Update block-type attribute if changed
412
- if (blockEl.getAttribute('data-block-type') !== nextBlock.type) {
413
- blockEl.setAttribute('data-block-type', nextBlock.type);
414
- }
415
- // Reconcile spans within this block (skip if spans are identical by reference)
416
- if (prevBlock && prevBlock.spans !== nextBlock.spans) {
417
- const container = getSpanContainer(blockEl, nextBlock.type, blockRenderers);
418
- reconcileBlockSpans(container, prevBlock, nextBlock, markRenderers);
419
- }
420
- else if (!prevBlock) {
421
- // No previous block data — full re-render of span content
422
- const container = getSpanContainer(blockEl, nextBlock.type, blockRenderers);
423
- while (container.firstChild) {
424
- container.removeChild(container.firstChild);
425
- }
426
- for (const span of nextBlock.spans) {
427
- container.appendChild(createSpanElement(span, markRenderers));
428
- }
429
- }
430
- }
431
369
  // Ensure correct position
432
370
  if (blockEl !== referenceNode) {
433
371
  root.insertBefore(blockEl, referenceNode);
@@ -458,4 +396,96 @@ export function reconcile(root, prevDoc, nextDoc, composingBlockId, markRenderer
458
396
  }
459
397
  }
460
398
  }
399
+ /**
400
+ * Reconcile a single block element to match a new RTIF block state.
401
+ *
402
+ * Extracted from {@link reconcile} for use by the virtual viewport, which
403
+ * needs to reconcile individual blocks without running the full document
404
+ * reconciliation loop.
405
+ *
406
+ * Returns the (possibly replaced) block element. When the block type or attrs
407
+ * change and in-place update fails, a new element is created and the caller
408
+ * must update its own references (e.g., blockElementMap).
409
+ *
410
+ * @param root - The root DOM element (used for block renderer context)
411
+ * @param blockEl - The existing block DOM element
412
+ * @param prevBlock - The previous RTIF block state, or undefined if new
413
+ * @param nextBlock - The new RTIF block state
414
+ * @param composingBlockId - Block ID currently under IME composition, or null
415
+ * @param markRenderers - Optional registry of mark renderers
416
+ * @param blockRenderers - Optional registry of block renderers
417
+ * @returns The reconciled block element (same reference or a new replacement)
418
+ *
419
+ * @example
420
+ * ```ts
421
+ * const el = reconcileBlock(root, blockEl, prevBlock, nextBlock, null, marks, blocks);
422
+ * if (el !== blockEl) {
423
+ * blockElementMap.set(nextBlock.id, el);
424
+ * }
425
+ * ```
426
+ */
427
+ export function reconcileBlock(root, blockEl, prevBlock, nextBlock, composingBlockId, markRenderers, blockRenderers) {
428
+ // Skip composing block entirely
429
+ if (nextBlock.id === composingBlockId) {
430
+ return blockEl;
431
+ }
432
+ // Check if block changed by reference
433
+ if (prevBlock === nextBlock) {
434
+ return blockEl;
435
+ }
436
+ // If block type or attrs changed, try in-place update first
437
+ if (prevBlock && (prevBlock.type !== nextBlock.type || prevBlock.attrs !== nextBlock.attrs)) {
438
+ // If same type, try updateElement() for efficient in-place attr updates
439
+ if (prevBlock.type === nextBlock.type && blockRenderers) {
440
+ const renderer = blockRenderers.get(nextBlock.type);
441
+ if (renderer?.updateElement) {
442
+ const didUpdate = renderer.updateElement(blockEl, nextBlock);
443
+ if (didUpdate) {
444
+ // Re-apply attr renderers (alignment, indent, etc.)
445
+ if (nextBlock.attrs) {
446
+ for (const [key, value] of Object.entries(nextBlock.attrs)) {
447
+ if (value == null)
448
+ continue;
449
+ const attrRenderer = blockRenderers.getAttrRenderer(key);
450
+ if (attrRenderer) {
451
+ attrRenderer.apply(blockEl, value);
452
+ }
453
+ }
454
+ }
455
+ // Reconcile spans separately since updateElement only handles attrs
456
+ const container = getSpanContainer(blockEl, nextBlock.type, blockRenderers);
457
+ reconcileBlockSpans(container, prevBlock, nextBlock, markRenderers);
458
+ return blockEl;
459
+ }
460
+ }
461
+ }
462
+ // Fall back to full replacement if updateElement doesn't exist,
463
+ // returned false, or types differ
464
+ const newBlockEl = createBlockElement(nextBlock, markRenderers, blockRenderers);
465
+ if (blockEl.parentNode) {
466
+ blockEl.parentNode.replaceChild(newBlockEl, blockEl);
467
+ }
468
+ return newBlockEl;
469
+ }
470
+ // Update block-type attribute if changed
471
+ if (blockEl.getAttribute('data-block-type') !== nextBlock.type) {
472
+ blockEl.setAttribute('data-block-type', nextBlock.type);
473
+ }
474
+ // Reconcile spans within this block (skip if spans are identical by reference)
475
+ if (prevBlock && prevBlock.spans !== nextBlock.spans) {
476
+ const container = getSpanContainer(blockEl, nextBlock.type, blockRenderers);
477
+ reconcileBlockSpans(container, prevBlock, nextBlock, markRenderers);
478
+ }
479
+ else if (!prevBlock) {
480
+ // No previous block data — full re-render of span content
481
+ const container = getSpanContainer(blockEl, nextBlock.type, blockRenderers);
482
+ while (container.firstChild) {
483
+ container.removeChild(container.firstChild);
484
+ }
485
+ for (const span of nextBlock.spans) {
486
+ container.appendChild(createSpanElement(span, markRenderers));
487
+ }
488
+ }
489
+ return blockEl;
490
+ }
461
491
  //# sourceMappingURL=renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}