@dxos/ui-editor 0.8.4-main.937b3ca → 0.8.4-main.9be5663bfe

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 (102) hide show
  1. package/dist/lib/browser/index.mjs +1487 -725
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +1487 -725
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/defaults.d.ts +3 -10
  8. package/dist/types/src/defaults.d.ts.map +1 -1
  9. package/dist/types/src/extensions/auto-scroll.d.ts +8 -0
  10. package/dist/types/src/extensions/auto-scroll.d.ts.map +1 -0
  11. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  12. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  13. package/dist/types/src/extensions/factories.d.ts +2 -2
  14. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  15. package/dist/types/src/extensions/folding.d.ts.map +1 -1
  16. package/dist/types/src/extensions/index.d.ts +3 -2
  17. package/dist/types/src/extensions/index.d.ts.map +1 -1
  18. package/dist/types/src/extensions/markdown/action.d.ts.map +1 -1
  19. package/dist/types/src/extensions/markdown/bundle.d.ts +3 -0
  20. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  21. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  22. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  23. package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
  24. package/dist/types/src/extensions/markdown/styles.d.ts.map +1 -1
  25. package/dist/types/src/extensions/outliner/outliner.d.ts.map +1 -1
  26. package/dist/types/src/extensions/preview/preview.d.ts +3 -1
  27. package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
  28. package/dist/types/src/extensions/scroll-past-end.d.ts +3 -0
  29. package/dist/types/src/extensions/scroll-past-end.d.ts.map +1 -0
  30. package/dist/types/src/extensions/scroller.d.ts +63 -0
  31. package/dist/types/src/extensions/scroller.d.ts.map +1 -0
  32. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +1 -1
  33. package/dist/types/src/extensions/tags/fader.d.ts +12 -0
  34. package/dist/types/src/extensions/tags/fader.d.ts.map +1 -0
  35. package/dist/types/src/extensions/tags/index.d.ts +2 -1
  36. package/dist/types/src/extensions/tags/index.d.ts.map +1 -1
  37. package/dist/types/src/extensions/tags/wire.d.ts +23 -0
  38. package/dist/types/src/extensions/tags/wire.d.ts.map +1 -0
  39. package/dist/types/src/extensions/tags/wire.test.d.ts +2 -0
  40. package/dist/types/src/extensions/tags/wire.test.d.ts.map +1 -0
  41. package/dist/types/src/extensions/tags/xml-tags.d.ts +36 -9
  42. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +1 -1
  43. package/dist/types/src/styles/index.d.ts +0 -2
  44. package/dist/types/src/styles/index.d.ts.map +1 -1
  45. package/dist/types/src/styles/theme.d.ts +15 -0
  46. package/dist/types/src/styles/theme.d.ts.map +1 -1
  47. package/dist/types/src/util/cursor.d.ts +1 -1
  48. package/dist/types/src/util/cursor.d.ts.map +1 -1
  49. package/dist/types/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +32 -32
  51. package/src/defaults.ts +25 -21
  52. package/src/extensions/annotations.ts +1 -1
  53. package/src/extensions/auto-scroll.ts +179 -0
  54. package/src/extensions/automerge/automerge.test.tsx +2 -2
  55. package/src/extensions/automerge/automerge.ts +6 -6
  56. package/src/extensions/blocks.ts +5 -5
  57. package/src/extensions/comments.ts +5 -6
  58. package/src/extensions/dnd.ts +2 -2
  59. package/src/extensions/factories.ts +8 -10
  60. package/src/extensions/folding.ts +5 -22
  61. package/src/extensions/index.ts +3 -2
  62. package/src/extensions/markdown/action.ts +0 -1
  63. package/src/extensions/markdown/bundle.ts +23 -9
  64. package/src/extensions/markdown/decorate.ts +15 -12
  65. package/src/extensions/markdown/highlight.ts +15 -7
  66. package/src/extensions/markdown/link.ts +27 -33
  67. package/src/extensions/markdown/parser.test.ts +0 -1
  68. package/src/extensions/markdown/styles.ts +42 -9
  69. package/src/extensions/markdown/table.ts +24 -2
  70. package/src/extensions/outliner/outliner.test.ts +0 -1
  71. package/src/extensions/outliner/outliner.ts +3 -4
  72. package/src/extensions/outliner/tree.test.ts +0 -1
  73. package/src/extensions/preview/preview.ts +62 -15
  74. package/src/extensions/scroll-past-end.ts +32 -0
  75. package/src/extensions/scroller.ts +245 -0
  76. package/src/extensions/selection.ts +1 -1
  77. package/src/extensions/tags/extended-markdown.test.ts +120 -2
  78. package/src/extensions/tags/extended-markdown.ts +80 -1
  79. package/src/extensions/tags/fader.ts +195 -0
  80. package/src/extensions/tags/index.ts +2 -1
  81. package/src/extensions/tags/wire.test.ts +65 -0
  82. package/src/extensions/tags/wire.ts +459 -0
  83. package/src/extensions/tags/xml-tags.ts +211 -34
  84. package/src/extensions/tags/xml-util.test.ts +111 -23
  85. package/src/styles/index.ts +0 -2
  86. package/src/styles/theme.ts +116 -34
  87. package/src/util/cursor.ts +1 -2
  88. package/dist/types/src/extensions/autoscroll.d.ts +0 -20
  89. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  90. package/dist/types/src/extensions/scrolling.d.ts +0 -78
  91. package/dist/types/src/extensions/scrolling.d.ts.map +0 -1
  92. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  93. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  94. package/dist/types/src/styles/markdown.d.ts +0 -8
  95. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  96. package/dist/types/src/styles/tokens.d.ts +0 -3
  97. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  98. package/src/extensions/autoscroll.ts +0 -165
  99. package/src/extensions/scrolling.ts +0 -189
  100. package/src/extensions/tags/streamer.ts +0 -243
  101. package/src/styles/markdown.ts +0 -26
  102. package/src/styles/tokens.ts +0 -17
@@ -1,5 +1,6 @@
1
1
  import { type EditorState, type Extension } from '@codemirror/state';
2
2
  import { type SyntaxNode } from '@lezer/common';
3
+ import { type Database } from '@dxos/echo';
3
4
  export type PreviewBlock = {
4
5
  link: PreviewLinkRef;
5
6
  el: HTMLElement;
@@ -8,7 +9,7 @@ export type PreviewLinkRef = {
8
9
  suggest?: boolean;
9
10
  block?: boolean;
10
11
  label: string;
11
- ref: string;
12
+ dxn: string;
12
13
  };
13
14
  export type PreviewLinkTarget = {
14
15
  label: string;
@@ -16,6 +17,7 @@ export type PreviewLinkTarget = {
16
17
  object?: any;
17
18
  };
18
19
  export type PreviewOptions = {
20
+ db?: Database.Database;
19
21
  addBlockContainer?: (block: PreviewBlock) => void;
20
22
  removeBlockContainer?: (block: PreviewBlock) => void;
21
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/preview/preview.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAA+B,MAAM,mBAAmB,CAAC;AAElG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,WAAW,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,UAAS,cAAmB,KAAG,SAmBtD,CAAC;AA0DF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,EAAE,MAAM,UAAU,KAAG,cAAc,GAAG,SAclF,CAAC"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/preview/preview.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAA4C,MAAM,mBAAmB,CAAC;AAE/G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,WAAW,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACvB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACtD,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,UAAS,cAAmB,KAAG,SA8BtD,CAAC;AAyFF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,EAAE,MAAM,UAAU,KAAG,cAAc,GAAG,SAclF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Extension } from '@codemirror/state';
2
+ export declare const scrollPastEnd: () => Extension;
3
+ //# sourceMappingURL=scroll-past-end.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-past-end.d.ts","sourceRoot":"","sources":["../../../../src/extensions/scroll-past-end.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAwBnD,eAAO,MAAM,aAAa,QAAO,SAGhC,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { EditorView } from '@codemirror/view';
2
+ /**
3
+ * Parameters for the scroll to line effect.
4
+ */
5
+ export type ScrollToProps = {
6
+ /**
7
+ * Zero-based line number; -1 for end of document.
8
+ * NOTE: view.state.doc.lineAt() uses 1-based line numbers.
9
+ */
10
+ line: number;
11
+ /**
12
+ * Additional offset from the target line in pixels.
13
+ * Positive values scroll past the line, negative values stop before it.
14
+ * @default 0
15
+ */
16
+ offset?: number;
17
+ /**
18
+ * Position of the target line in the viewport.
19
+ * - 'start': Line appears at the start (top) of the screen
20
+ * - 'end': Line appears at the end (bottom) of the screen
21
+ * @default 'start'
22
+ */
23
+ position?: 'start' | 'end';
24
+ /**
25
+ * Whether to use smooth scrolling.
26
+ * @default 'instant'
27
+ */
28
+ behavior?: ScrollBehavior;
29
+ };
30
+ /** Scroll to a specific line. */
31
+ export declare const scrollerLineEffect: import("@codemirror/state").StateEffectType<ScrollToProps>;
32
+ /** Start/stop crawling the end of the document. */
33
+ export declare const scrollerCrawlEffect: import("@codemirror/state").StateEffectType<boolean>;
34
+ /**
35
+ * Helper function to scroll to a specific line.
36
+ * This is a convenience function that can be used directly with an EditorView.
37
+ */
38
+ export declare const scrollToLine: (view: EditorView, options: ScrollToProps) => void;
39
+ export type ScrollerOptions = {
40
+ /** Threshold in px to trigger scroll from bottom. */
41
+ overScroll?: number;
42
+ };
43
+ /**
44
+ * Extension that provides smooth scrolling to specific lines in the editor.
45
+ */
46
+ export declare const scroller: ({ overScroll }?: ScrollerOptions) => import("@codemirror/state").Extension[];
47
+ /**
48
+ * Creates a smooth crawler that follows the live bottom of a CodeMirror 6 EditorView.
49
+ *
50
+ * Uses a velocity-based approach with easing:
51
+ * - Accelerates smoothly when content starts arriving.
52
+ * - Maintains a steady cruise velocity during continuous streaming.
53
+ * - Decelerates smoothly when content stops arriving.
54
+ *
55
+ * @param accel Acceleration in px/frame^2 for ease-in/ease-out.
56
+ * @param maxVelocity Maximum scroll velocity in px/frame.
57
+ * @param snapThreshold Snap-to-target threshold in px.
58
+ */
59
+ export declare function createCrawler(view: EditorView, accel?: number, maxVelocity?: number, snapThreshold?: number): {
60
+ scroll: () => void;
61
+ cancel: () => void;
62
+ };
63
+ //# sourceMappingURL=scroller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroller.d.ts","sourceRoot":"","sources":["../../../../src/extensions/scroller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAI1D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,kBAAkB,4DAAsC,CAAC;AAEtE,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,sDAAgC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,EAAE,SAAS,aAAa,SAIpE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,iBAAoB,eAAoB,4CAgHhE,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,SAAO,EAAE,WAAW,SAAI,EAAE,aAAa,SAAM;;;EAqDjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"extended-markdown.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/extended-markdown.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,eAAc,uBAA4B,KAAG,SAiB7E,CAAC"}
1
+ {"version":3,"file":"extended-markdown.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/extended-markdown.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,eAAc,uBAA4B,KAAG,SAoB7E,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type Extension } from '@codemirror/state';
2
+ export type FaderOptions = {
3
+ /** Time window in ms to coalesce adjacent appends into a single decoration. */
4
+ coalesce?: number;
5
+ };
6
+ /**
7
+ * Extension that decorates appended text with a fade-in effect.
8
+ * Adjacent appends within the coalesce window are merged into a single decoration.
9
+ * Decorations are queued with an expiry and removed by a timer.
10
+ */
11
+ export declare const fader: (options?: FaderOptions) => Extension;
12
+ //# sourceMappingURL=fader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fader.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/fader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAA2B,MAAM,mBAAmB,CAAC;AAO5E,MAAM,MAAM,YAAY,GAAG;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,UAAS,YAAiB,KAAG,SA6KlD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './extended-markdown';
2
- export * from './streamer';
2
+ export * from './fader';
3
+ export * from './wire';
3
4
  export * from './xml-tags';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/index.ts"],"names":[],"mappings":"AAIA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/index.ts"],"names":[],"mappings":"AAIA,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type Extension } from '@codemirror/state';
2
+ /** Annotate a transaction to bypass the wire buffer (content appears immediately). */
3
+ export declare const wireBypass: import("@codemirror/state").AnnotationType<boolean>;
4
+ export type WireOptions = {
5
+ /** Characters per second. */
6
+ rate?: number;
7
+ /** Show a blinking cursor at the insertion point while streaming. */
8
+ cursor?: boolean;
9
+ /** Tag names whose inner content should be streamed (not buffered until close). */
10
+ streamingTags?: Set<string>;
11
+ };
12
+ /**
13
+ * Extension that intercepts appended text and inserts it one character at a time,
14
+ * except for XML tags, links, and images which are flushed atomically.
15
+ */
16
+ export declare const wire: (options?: WireOptions) => Extension;
17
+ /**
18
+ * Returns the length of a complete XML element at the start of the buffer, or 0 if the element is incomplete.
19
+ * Handles self-closing tags, closing tags, and opening tags with nested content.
20
+ * E.g., `<foo>content<bar />more</foo>` returns the full length.
21
+ */
22
+ export declare const xmlElementLength: (buffer: string) => number;
23
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/wire.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,mBAAmB,CAAC;AAG3B,sFAAsF;AACtF,eAAO,MAAM,UAAU,qDAA+B,CAAC;AASvD,MAAM,MAAM,WAAW,GAAG;IACxB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,UAAS,WAAgB,KAAG,SAqJhD,CAAC;AA4LF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,MAkDjD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wire.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.test.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/wire.test.ts"],"names":[],"mappings":""}
@@ -25,27 +25,47 @@ export type XmlEventHandler<TEvent = any> = (event: TEvent) => void;
25
25
  */
26
26
  export type XmlWidgetProps<TProps = any, TContext = any> = TProps & {
27
27
  _tag: string;
28
- context?: TContext;
29
- range?: {
28
+ range: {
30
29
  from: number;
31
30
  to: number;
32
31
  };
32
+ children?: any[];
33
+ context?: TContext;
33
34
  view?: EditorView;
34
35
  onEvent?: XmlEventHandler;
35
36
  };
36
37
  /**
37
38
  * Factory for creating widgets.
38
39
  */
39
- export type XmlWidgetFactory = (props: XmlWidgetProps, onEvent?: XmlEventHandler) => WidgetType | null;
40
+ export type XmlWidgetFactory = (props: XmlWidgetProps) => WidgetType | null;
40
41
  /**
41
42
  * Widget registry definition.
43
+ * NOTE: Widgets should NOT use top/bottom margins (it causes unstable measurements while scrolling which leads to jumps).
44
+ * If required, use encapsulated divs with padding instead.
42
45
  */
43
46
  export type XmlWidgetDef = {
44
- /** Block widget. */
47
+ /**
48
+ * Block widget.
49
+ */
45
50
  block?: boolean;
46
- /** Native widget (rendered inline). */
51
+ /**
52
+ * When true, the opening tag is flushed immediately and inner content streams character-by-character.
53
+ */
54
+ streaming?: boolean;
55
+ /**
56
+ * Debug only.
57
+ */
58
+ debug?: boolean;
59
+ /**
60
+ * Native widget (rendered inline).
61
+ */
47
62
  factory?: XmlWidgetFactory;
48
- /** React/Solid widget (rendered in portals outside of the editor). */
63
+ /**
64
+ * React/Solid widget (rendered in portals outside of the editor).
65
+ * Prefer an `id="..."` attribute on the tag so `updateWidget` can target the instance; if omitted,
66
+ * an id is derived from the tag’s document range (non-streaming) or opening position (streaming).
67
+ * Streaming tags use `cm-xml-<from>` so the same portal id is kept when the closing tag arrives.
68
+ */
49
69
  Component?: FunctionComponent<XmlWidgetProps>;
50
70
  };
51
71
  export type XmlWidgetRegistry = Record<string, XmlWidgetDef>;
@@ -78,11 +98,18 @@ export interface XmlWidgetNotifier {
78
98
  export type XmlTagsOptions = {
79
99
  /** Tag registry. */
80
100
  registry?: XmlWidgetRegistry;
101
+ /** Tags to bookmark for navigation. */
102
+ bookmarks?: string[];
81
103
  /** Called when widgets are mounted or unmounted. */
82
104
  setWidgets?: (widgets: XmlWidgetState[]) => void;
83
- /** Tags to bookmark. */
84
- bookmarks?: string[];
105
+ /**
106
+ * When set, adds top margin on block widget lines that immediately follow a line without
107
+ * a `data-xml-widget` host (typically narrative text before portaled or status widgets).
108
+ */
109
+ paragraphToWidgetGapRem?: number;
85
110
  };
111
+ /** Marks widget roots used by `paragraphToWidgetGapRem` line spacing in the editor theme. */
112
+ export declare const XML_WIDGET_DATA_ATTR = "data-xml-widget";
86
113
  /**
87
114
  * Implements custom XML tags via CodeMirror-native Widgets and portaled React/Solid components.
88
115
  *
@@ -93,5 +120,5 @@ export type XmlTagsOptions = {
93
120
  * - Widget state can be update via effects.
94
121
  * - NOTE: Widget state may be updated BEFORE the widget is mounted.
95
122
  */
96
- export declare const xmlTags: ({ registry, setWidgets, bookmarks }?: XmlTagsOptions) => Extension;
123
+ export declare const xmlTags: ({ registry, setWidgets, bookmarks, paragraphToWidgetGapRem, }?: XmlTagsOptions) => Extension;
97
124
  //# sourceMappingURL=xml-tags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-tags.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/xml-tags.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,SAAS,EAAkD,MAAM,mBAAmB,CAAC;AACrH,OAAO,EAGL,UAAU,EAGV,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAW/C;;GAEG;AACH,eAAO,MAAM,sBAAsB,mDAA6B,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,kBAAkB,mDAA6B,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC5D;AAED,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,MAAM,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,UAAU,GAAG,IAAI,CAAC;AAEvG;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,oBAAoB;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,uCAAuC;IACvC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAE3B,sEAAsE;IACtE,SAAS,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE7D,eAAO,MAAM,eAAe,GAAI,UAAU,GAAG,EAAE,KAAG,MAAM,GAAG,IAG1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,kDAA4B,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,mDAAuB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,kBAAkB;QAA4B,MAAM;WAAS,GAAG;EAAK,CAAC;AASnF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AA0CD,MAAM,MAAM,cAAc,GAAG;IAC3B,oBAAoB;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAEjD,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,GAAI,sCAAqC,cAAmB,KAAG,SAWlF,CAAC"}
1
+ {"version":3,"file":"xml-tags.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/tags/xml-tags.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,2 @@
1
- export * from './markdown';
2
1
  export * from './theme';
3
- export * from './tokens';
4
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/styles/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/styles/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC"}
@@ -1,4 +1,19 @@
1
1
  import { type Extension } from '@codemirror/state';
2
+ export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
3
+ export declare const fontBody = "\"Inter Variable\", ui-sans-serif, system-ui, sans-serif";
4
+ export declare const fontMono = "\"JetBrains Mono Variable\", ui-monospace, \"Cascadia Code\", \"Source Code Pro\", monospace";
5
+ export declare const markdownTheme: {
6
+ code: string;
7
+ codeMark: string;
8
+ mark: string;
9
+ heading: (level: HeadingLevel) => {
10
+ className: string;
11
+ color: string;
12
+ lineHeight: string;
13
+ fontSize: string;
14
+ fontWeight: string;
15
+ };
16
+ };
2
17
  /**
3
18
  * Global base theme.
4
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/styles/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,SAAS,WA6NpB,CAAC;AAEH,eAAO,MAAM,YAAY,EAAE,SAMzB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,gBAAe,WAAgB,cAa3D,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/styles/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAqCjD,eAAO,MAAM,QAAQ,6DAA2D,CAAC;AACjF,eAAO,MAAM,QAAQ,iGAA2F,CAAC;AAEjH,eAAO,MAAM,aAAa;;;;qBAIP,YAAY;;;;;;;CAO9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,SAAS,WA2PpB,CAAC;AAEH,eAAO,MAAM,YAAY,EAAE,SAMzB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,gBAAe,WAAgB,cAY3D,CAAC"}
@@ -17,7 +17,7 @@ export declare const overlap: (a: Range, b: Range) => boolean;
17
17
  * while positive - with the next one.
18
18
  */
19
19
  export interface CursorConverter {
20
- toCursor(position: number, assoc?: -1 | 1 | undefined): string;
20
+ toCursor(position: number, assoc?: -1 | 1): string;
21
21
  fromCursor(cursor: string): number;
22
22
  }
23
23
  export declare class Cursor {
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/util/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAItC;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,KAAK,EAAE,GAAG,KAAK,KAAG,OAA2C,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAOD,qBAAa,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,SAAS,8DAA4C;IAErE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAI,OAAO,WAAW,EAAE,OAAO,KAAK,YAKpE;IAEF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAI,OAAO,WAAW,EAAE,QAAQ,MAAM;;;kBAOtE;CACH"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/util/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAGtC;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,KAAK,EAAE,GAAG,KAAK,KAAG,OAA2C,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACnD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAOD,qBAAa,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,SAAS,8DAA4C;IAErE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAI,OAAO,WAAW,EAAE,OAAO,KAAK,YAKpE;IAEF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAI,OAAO,WAAW,EAAE,QAAQ,MAAM;;;kBAOtE;CACH"}