@haklex/rich-headless 0.0.42 → 0.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -10,6 +10,21 @@ export declare class SpoilerNode extends ElementNode {
10
10
  updateDOM(): boolean;
11
11
  isInline(): boolean;
12
12
  }
13
+ export declare class RubyNode extends ElementNode {
14
+ __reading: string;
15
+ static getType(): string;
16
+ static clone(node: RubyNode): RubyNode;
17
+ constructor(key?: NodeKey);
18
+ static importJSON(json: SerializedElementNode & {
19
+ reading?: string;
20
+ }): RubyNode;
21
+ exportJSON(): SerializedElementNode & {
22
+ reading: string;
23
+ };
24
+ createDOM(): HTMLElement;
25
+ updateDOM(): boolean;
26
+ isInline(): boolean;
27
+ }
13
28
  export declare class DetailsNode extends ElementNode {
14
29
  __summary: string;
15
30
  __open: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -60,6 +60,42 @@ class SpoilerNode extends ElementNode {
60
60
  return true;
61
61
  }
62
62
  }
63
+ class RubyNode extends ElementNode {
64
+ constructor(key) {
65
+ super(key);
66
+ this.__reading = "";
67
+ }
68
+ static getType() {
69
+ return "ruby";
70
+ }
71
+ static clone(node) {
72
+ const n = new RubyNode(node.__key);
73
+ n.__reading = node.__reading;
74
+ return n;
75
+ }
76
+ static importJSON(json) {
77
+ const node = new RubyNode();
78
+ node.__reading = json.reading ?? "";
79
+ return node;
80
+ }
81
+ exportJSON() {
82
+ return {
83
+ ...super.exportJSON(),
84
+ type: "ruby",
85
+ reading: this.__reading,
86
+ version: 1
87
+ };
88
+ }
89
+ createDOM() {
90
+ return stubDOM();
91
+ }
92
+ updateDOM() {
93
+ return false;
94
+ }
95
+ isInline() {
96
+ return true;
97
+ }
98
+ }
63
99
  class DetailsNode extends ElementNode {
64
100
  constructor(key) {
65
101
  super(key);
@@ -355,6 +391,7 @@ class GridContainerNode extends DecoratorNode {
355
391
  }
356
392
  const customHeadlessNodes = [
357
393
  SpoilerNode,
394
+ RubyNode,
358
395
  DetailsNode,
359
396
  ImageNode,
360
397
  VideoNode,
@@ -396,6 +433,7 @@ export {
396
433
  LinkCardNode,
397
434
  MentionNode,
398
435
  MermaidNode,
436
+ RubyNode,
399
437
  SpoilerNode,
400
438
  TldrawNode,
401
439
  VideoNode,
@@ -3,6 +3,7 @@ export declare const SPOILER_TRANSFORMER: TextMatchTransformer;
3
3
  export declare const MENTION_TRANSFORMER: TextMatchTransformer;
4
4
  export declare const FOOTNOTE_TRANSFORMER: TextMatchTransformer;
5
5
  export declare const KATEX_INLINE_TRANSFORMER: TextMatchTransformer;
6
+ export declare const RUBY_TRANSFORMER: TextMatchTransformer;
6
7
  export declare const INSERT_TRANSFORMER: TextFormatTransformer;
7
8
  export declare const SUPERSCRIPT_TRANSFORMER: TextFormatTransformer;
8
9
  export declare const SUBSCRIPT_TRANSFORMER: TextFormatTransformer;
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAA;AAsC1B,eAAO,MAAM,mBAAmB,EAAE,oBASjC,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,oBAajC,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,oBAWlC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,oBAWtC,CAAA;AAID,eAAO,MAAM,kBAAkB,EAAE,qBAIhC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,qBAIrC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,qBAInC,CAAA;AAID,eAAO,MAAM,4BAA4B,EAAE,kBAY1C,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,kBAiBnC,CAAA;AAUD,eAAO,MAAM,qBAAqB,EAAE,kBAWnC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,oBAWrC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAWrC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAcrC,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAWzC,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAUzC,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAWvC,CAAA;AAED,eAAO,MAAM,gCAAgC,EAAE,kBAa9C,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,kBAM/C,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAuBrC,CAAA;AAID,eAAO,MAAM,8BAA8B,EAAE,kBAsB5C,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAOrC,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAUvC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,kBAStC,CAAA;AAID,eAAO,MAAM,uBAAuB,2CA6BnC,CAAA;AAED,sEAAsE;AACtE,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAA;AA6C1B,eAAO,MAAM,mBAAmB,EAAE,oBASjC,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,oBAajC,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,oBAWlC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,oBAWtC,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,oBAgB9B,CAAA;AAID,eAAO,MAAM,kBAAkB,EAAE,qBAIhC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,qBAIrC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,qBAInC,CAAA;AAID,eAAO,MAAM,4BAA4B,EAAE,kBAY1C,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,kBAiBnC,CAAA;AAUD,eAAO,MAAM,qBAAqB,EAAE,kBAWnC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,oBAWrC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAWrC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAcrC,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAWzC,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAUzC,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAWvC,CAAA;AAED,eAAO,MAAM,gCAAgC,EAAE,kBAa9C,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,kBAM/C,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAuBrC,CAAA;AAID,eAAO,MAAM,8BAA8B,EAAE,kBAsB5C,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAOrC,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAUvC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,kBAStC,CAAA;AAID,eAAO,MAAM,uBAAuB,2CA8BnC,CAAA;AAED,sEAAsE;AACtE,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
@@ -6,6 +6,9 @@ const NOOP = () => {
6
6
  function qA(v) {
7
7
  return v.replaceAll('"', '\\"');
8
8
  }
9
+ function escHtml(v) {
10
+ return v.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
11
+ }
9
12
  function escCell(v) {
10
13
  return v.replaceAll("|", "\\|").replaceAll("\n", "<br/>");
11
14
  }
@@ -65,6 +68,21 @@ const KATEX_INLINE_TRANSFORMER = {
65
68
  trigger: "$",
66
69
  type: "text-match"
67
70
  };
71
+ const RUBY_TRANSFORMER = {
72
+ dependencies: [],
73
+ export: (node) => {
74
+ if (node.getType() !== "ruby") return null;
75
+ const base = escHtml(node.getTextContent());
76
+ const reading = escHtml(node.__reading ?? "");
77
+ if (!reading) return base;
78
+ return `<ruby>${base}<rt>${reading}</rt></ruby>`;
79
+ },
80
+ importRegExp: /<ruby>\s*([\s\S]*?)\s*<rt>\s*([\s\S]*?)\s*<\/rt>\s*(?:<rp>[\s\S]*?<\/rp>\s*)*<\/ruby>/i,
81
+ regExp: /<ruby>\s*([\s\S]*?)\s*<rt>\s*([\s\S]*?)\s*<\/rt>\s*(?:<rp>[\s\S]*?<\/rp>\s*)*<\/ruby>$/i,
82
+ replace: NOOP,
83
+ trigger: ">",
84
+ type: "text-match"
85
+ };
68
86
  const INSERT_TRANSFORMER = {
69
87
  format: ["underline"],
70
88
  tag: "++",
@@ -309,6 +327,7 @@ const allHeadlessTransformers = [
309
327
  INSERT_TRANSFORMER,
310
328
  SUPERSCRIPT_TRANSFORMER,
311
329
  SUBSCRIPT_TRANSFORMER,
330
+ RUBY_TRANSFORMER,
312
331
  KATEX_INLINE_TRANSFORMER,
313
332
  // Block (specific first)
314
333
  FOOTNOTE_SECTION_TRANSFORMER,
@@ -353,6 +372,7 @@ export {
353
372
  LINK_CARD_BLOCK_TRANSFORMER,
354
373
  MENTION_TRANSFORMER,
355
374
  MERMAID_BLOCK_TRANSFORMER,
375
+ RUBY_TRANSFORMER,
356
376
  SPOILER_TRANSFORMER,
357
377
  SUBSCRIPT_TRANSFORMER,
358
378
  SUPERSCRIPT_TRANSFORMER,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haklex/rich-headless",
3
- "version": "0.0.42",
3
+ "version": "0.0.44",
4
4
  "description": "Headless Lexical node registry for server-side parsing (no React)",
5
5
  "license": "MIT",
6
6
  "type": "module",