@eightyfourthousand/lib-editing 2026.6.5 → 2026.7.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 (76) hide show
  1. package/lib/components/editor/PaginationProvider.js +7 -39
  2. package/lib/components/editor/PaginationProvider.js.map +1 -1
  3. package/lib/components/editor/TranslationBuilder.js +0 -1
  4. package/lib/components/editor/TranslationBuilder.js.map +1 -1
  5. package/lib/components/editor/TranslationEditor.js +2 -1
  6. package/lib/components/editor/TranslationEditor.js.map +1 -1
  7. package/lib/components/editor/extensions/Abbreviation/Abbreviation.js +6 -0
  8. package/lib/components/editor/extensions/Abbreviation/Abbreviation.js.map +1 -1
  9. package/lib/components/editor/extensions/Bold.js +5 -15
  10. package/lib/components/editor/extensions/Bold.js.map +1 -1
  11. package/lib/components/editor/extensions/Foreign/Foreign.js +5 -3
  12. package/lib/components/editor/extensions/Foreign/Foreign.js.map +1 -1
  13. package/lib/components/editor/extensions/GlobalConfig.js +3 -0
  14. package/lib/components/editor/extensions/GlobalConfig.js.map +1 -1
  15. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.ssr.js +9 -2
  16. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.ssr.js.map +1 -1
  17. package/lib/components/editor/extensions/Indent.js +2 -7
  18. package/lib/components/editor/extensions/Indent.js.map +1 -1
  19. package/lib/components/editor/extensions/InternalLink/InternalLink.ssr.js +12 -0
  20. package/lib/components/editor/extensions/InternalLink/InternalLink.ssr.js.map +1 -1
  21. package/lib/components/editor/extensions/Italic.js +5 -15
  22. package/lib/components/editor/extensions/Italic.js.map +1 -1
  23. package/lib/components/editor/extensions/LeadingSpace.js +2 -7
  24. package/lib/components/editor/extensions/LeadingSpace.js.map +1 -1
  25. package/lib/components/editor/extensions/Link/Link.ssr.js +11 -1
  26. package/lib/components/editor/extensions/Link/Link.ssr.js.map +1 -1
  27. package/lib/components/editor/extensions/List.js +11 -20
  28. package/lib/components/editor/extensions/List.js.map +1 -1
  29. package/lib/components/editor/extensions/Mantra/Mantra.js +5 -5
  30. package/lib/components/editor/extensions/Mantra/Mantra.js.map +1 -1
  31. package/lib/components/editor/extensions/Mention/Mention.d.ts +19 -2
  32. package/lib/components/editor/extensions/Mention/Mention.js +29 -2
  33. package/lib/components/editor/extensions/Mention/Mention.js.map +1 -1
  34. package/lib/components/editor/extensions/Mention/Mention.ssr.d.ts +1 -0
  35. package/lib/components/editor/extensions/Mention/Mention.ssr.js +15 -8
  36. package/lib/components/editor/extensions/Mention/Mention.ssr.js.map +1 -1
  37. package/lib/components/editor/extensions/Mention/MentionAdvancedOverlay.d.ts +12 -0
  38. package/lib/components/editor/extensions/Mention/MentionAdvancedOverlay.js +39 -0
  39. package/lib/components/editor/extensions/Mention/MentionAdvancedOverlay.js.map +1 -0
  40. package/lib/components/editor/extensions/Mention/MentionHoverContent.d.ts +7 -0
  41. package/lib/components/editor/extensions/Mention/MentionHoverContent.js +88 -45
  42. package/lib/components/editor/extensions/Mention/MentionHoverContent.js.map +1 -1
  43. package/lib/components/editor/extensions/Mention/MentionList.d.ts +15 -0
  44. package/lib/components/editor/extensions/Mention/MentionList.js +70 -0
  45. package/lib/components/editor/extensions/Mention/MentionList.js.map +1 -0
  46. package/lib/components/editor/extensions/Mention/MentionSearch.d.ts +18 -0
  47. package/lib/components/editor/extensions/Mention/MentionSearch.js +34 -0
  48. package/lib/components/editor/extensions/Mention/MentionSearch.js.map +1 -0
  49. package/lib/components/editor/extensions/Mention/MentionSuggestion.d.ts +10 -0
  50. package/lib/components/editor/extensions/Mention/MentionSuggestion.js +78 -0
  51. package/lib/components/editor/extensions/Mention/MentionSuggestion.js.map +1 -0
  52. package/lib/components/editor/extensions/Mention/useMentionSearch.d.ts +34 -0
  53. package/lib/components/editor/extensions/Mention/useMentionSearch.js +89 -0
  54. package/lib/components/editor/extensions/Mention/useMentionSearch.js.map +1 -0
  55. package/lib/components/editor/extensions/ParagraphIndent.js +4 -9
  56. package/lib/components/editor/extensions/ParagraphIndent.js.map +1 -1
  57. package/lib/components/editor/extensions/Passage/PassageNode.ssr.js +5 -2
  58. package/lib/components/editor/extensions/Passage/PassageNode.ssr.js.map +1 -1
  59. package/lib/components/editor/extensions/SmallCaps.js +5 -14
  60. package/lib/components/editor/extensions/SmallCaps.js.map +1 -1
  61. package/lib/components/editor/extensions/Subscript.js +5 -15
  62. package/lib/components/editor/extensions/Subscript.js.map +1 -1
  63. package/lib/components/editor/extensions/Superscript.js +5 -15
  64. package/lib/components/editor/extensions/Superscript.js.map +1 -1
  65. package/lib/components/editor/extensions/Underline.js +5 -15
  66. package/lib/components/editor/extensions/Underline.js.map +1 -1
  67. package/lib/components/editor/hooks/useBlockEditor.js +1 -0
  68. package/lib/components/editor/hooks/useBlockEditor.js.map +1 -1
  69. package/lib/components/editor/hooks/useTranslationExtensions.d.ts +1 -1
  70. package/lib/components/shared/glossary/GlossaryPaginationProvider.js +5 -8
  71. package/lib/components/shared/glossary/GlossaryPaginationProvider.js.map +1 -1
  72. package/lib/exporters/mention.js +1 -0
  73. package/lib/exporters/mention.js.map +1 -1
  74. package/lib/transformers/mention.js +2 -1
  75. package/lib/transformers/mention.js.map +1 -1
  76. package/package.json +7 -7
@@ -1,5 +1,4 @@
1
1
  import { BulletList, ListItem as TipTapListItem } from '@tiptap/extension-list';
2
- import { mergeAttributes } from '@tiptap/core';
3
2
  const ITEM_STYLE_TO_CLASS = {
4
3
  none: 'list-none',
5
4
  dots: 'list-[disc]',
@@ -30,13 +29,10 @@ export const List = BulletList.extend({
30
29
  spacing: {
31
30
  default: 'horizontal',
32
31
  parseHTML: (element) => element.getAttribute('data-spacing'),
33
- renderHTML(attributes) {
34
- return mergeAttributes(attributes, {
35
- 'data-spacing': attributes.spacing,
36
- class: LIST_SPACING_TO_CLASS[attributes.spacing || 'horizontal'] ||
37
- 'ml-4',
38
- });
39
- },
32
+ renderHTML: (attributes) => ({
33
+ 'data-spacing': attributes.spacing,
34
+ class: LIST_SPACING_TO_CLASS[attributes.spacing || 'horizontal'] || 'ml-4',
35
+ }),
40
36
  },
41
37
  nesting: {
42
38
  default: undefined,
@@ -44,22 +40,17 @@ export const List = BulletList.extend({
44
40
  const nesting = element.getAttribute('data-nesting');
45
41
  return nesting ? parseInt(nesting, 10) : 0;
46
42
  },
47
- renderHTML(attributes) {
48
- return mergeAttributes(attributes, {
49
- 'data-nesting': `${attributes.nesting}`,
50
- });
51
- },
43
+ renderHTML: (attributes) => attributes.nesting != null
44
+ ? { 'data-nesting': `${attributes.nesting}` }
45
+ : {},
52
46
  },
53
47
  itemStyle: {
54
48
  default: 'none',
55
49
  parseHTML: (element) => element.getAttribute('data-item-style'),
56
- renderHTML(attributes) {
57
- return mergeAttributes(attributes, {
58
- 'data-item-style': attributes.itemStyle,
59
- class: ITEM_STYLE_TO_CLASS[attributes.itemStyle || 'none'] ||
60
- 'list-none',
61
- });
62
- },
50
+ renderHTML: (attributes) => ({
51
+ 'data-item-style': attributes.itemStyle,
52
+ class: ITEM_STYLE_TO_CLASS[attributes.itemStyle || 'none'] || 'list-none',
53
+ }),
63
54
  },
64
55
  };
65
56
  },
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,mBAAmB,GAA8B;IACrD,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,oBAAoB;CAC9B,CAAC;AAEF,MAAM,qBAAqB,GAA8B;IACvD,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,8BAA8B;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;IACpC,UAAU;QACR,OAAO;YACL,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,KAAK;YACrB,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IACD,aAAa;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,OAAO,EAAE;gBACP,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC;gBAC5D,UAAU,CAAC,UAAU;oBACnB,OAAO,eAAe,CAAC,UAAU,EAAE;wBACjC,cAAc,EAAE,UAAU,CAAC,OAAO;wBAClC,KAAK,EACH,qBAAqB,CAAC,UAAU,CAAC,OAAO,IAAI,YAAY,CAAC;4BACzD,MAAM;qBACT,CAAC,CAAC;gBACL,CAAC;aACF;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;oBACrB,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;oBACrD,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBACD,UAAU,CAAC,UAAU;oBACnB,OAAO,eAAe,CAAC,UAAU,EAAE;wBACjC,cAAc,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE;qBACxC,CAAC,CAAC;gBACL,CAAC;aACF;YACD,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;gBAC/D,UAAU,CAAC,UAAU;oBACnB,OAAO,eAAe,CAAC,UAAU,EAAE;wBACjC,iBAAiB,EAAE,UAAU,CAAC,SAAS;wBACvC,KAAK,EACH,mBAAmB,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC;4BACnD,WAAW;qBACd,CAAC,CAAC;gBACL,CAAC;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,mBAAmB,GAA8B;IACrD,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,oBAAoB;CAC9B,CAAC;AAEF,MAAM,qBAAqB,GAA8B;IACvD,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,8BAA8B;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;IACpC,UAAU;QACR,OAAO;YACL,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,KAAK;YACrB,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IACD,aAAa;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,OAAO,EAAE;gBACP,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC;gBAC5D,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC3B,cAAc,EAAE,UAAU,CAAC,OAAO;oBAClC,KAAK,EACH,qBAAqB,CAAC,UAAU,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,MAAM;iBACtE,CAAC;aACH;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;oBACrB,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;oBACrD,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBACD,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CACzB,UAAU,CAAC,OAAO,IAAI,IAAI;oBACxB,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE;oBAC7C,CAAC,CAAC,EAAE;aACT;YACD,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;gBAC/D,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC3B,iBAAiB,EAAE,UAAU,CAAC,SAAS;oBACvC,KAAK,EACH,mBAAmB,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,WAAW;iBACrE,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -6,12 +6,15 @@ export const MantraMark = Mark.create({
6
6
  return {
7
7
  uuid: {
8
8
  default: undefined,
9
+ renderHTML: (attributes) => attributes.uuid ? { uuid: attributes.uuid } : {},
9
10
  },
10
11
  type: {
11
12
  default: 'mantra',
13
+ renderHTML: (attributes) => attributes.type ? { type: attributes.type } : {},
12
14
  },
13
15
  lang: {
14
16
  default: 'Sa-Ltn',
17
+ renderHTML: (attributes) => attributes.lang ? { lang: attributes.lang } : {},
15
18
  },
16
19
  };
17
20
  },
@@ -27,13 +30,10 @@ export const MantraMark = Mark.create({
27
30
  },
28
31
  ];
29
32
  },
30
- renderHTML({ HTMLAttributes, mark }) {
31
- const lang = mark.attrs.lang;
33
+ renderHTML({ HTMLAttributes }) {
32
34
  return [
33
35
  'span',
34
- mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {
35
- lang,
36
- }),
36
+ mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),
37
37
  0,
38
38
  ];
39
39
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Mantra.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mantra/Mantra.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAgBpC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAgB;IACnD,IAAI,EAAE,QAAQ;IACd,aAAa;QACX,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,SAAS;aACnB;YACD,IAAI,EAAE;gBACJ,OAAO,EAAE,QAAQ;aAClB;YACD,IAAI,EAAE;gBACJ,OAAO,EAAE,QAAQ;aAClB;SACF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO;YACL,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO;YACL;gBACE,GAAG,EAAE,qBAAqB;aAC3B;SACF,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,OAAO;YACL,MAAM;YACN,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE;gBAC3D,IAAI;aACL,CAAC;YACF,CAAC;SACF,CAAC;IACJ,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO;YACL,SAAS,EACP,CAAC,IAA0B,EAAE,EAAE,CAC/B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACf,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;YACH,YAAY,EACV,CAAC,IAA0B,EAAE,EAAE,CAC/B,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;gBACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBACpC,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;YACH,WAAW,EACT,GAAG,EAAE,CACL,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACf,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"Mantra.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mantra/Mantra.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAgBpC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAgB;IACnD,IAAI,EAAE,QAAQ;IACd,aAAa;QACX,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CACzB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;aACnD;YACD,IAAI,EAAE;gBACJ,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CACzB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;aACnD;YACD,IAAI,EAAE;gBACJ,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CACzB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;aACnD;SACF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO;YACL,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO;YACL;gBACE,GAAG,EAAE,qBAAqB;aAC3B;SACF,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO;YACL,MAAM;YACN,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;YAC5D,CAAC;SACF,CAAC;IACJ,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO;YACL,SAAS,EACP,CAAC,IAA0B,EAAE,EAAE,CAC/B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACf,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;YACH,YAAY,EACV,CAAC,IAA0B,EAAE,EAAE,CAC/B,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;gBACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBACpC,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;YACH,WAAW,EACT,GAAG,EAAE,CACL,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACf,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,8 +1,25 @@
1
+ /** Payload handed to the advanced mention picker overlay. */
2
+ export interface MentionAdvancedPayload {
3
+ /** Document position where the mention should be inserted. */
4
+ pos: number;
5
+ /** The text typed after `@`, used to seed the advanced search. */
6
+ query: string;
7
+ }
8
+ export interface MentionStorage {
9
+ /**
10
+ * Registered by the stable MentionAdvancedOverlay; invoked by the `@`
11
+ * suggestion list's "Advanced" button to open the dedicated picker.
12
+ */
13
+ openAdvanced?: (payload: MentionAdvancedPayload) => void;
14
+ }
1
15
  declare module '@tiptap/core' {
2
16
  interface Commands<ReturnType> {
3
17
  mention: {
4
- setMention: (entity: string, linkType: string) => ReturnType;
18
+ setMention: (entity: string, linkType: string, displayText?: string, isSameWork?: boolean) => ReturnType;
5
19
  };
6
20
  }
21
+ interface Storage {
22
+ mention: MentionStorage;
23
+ }
7
24
  }
8
- export declare const Mention: import("@tiptap/core").Node<import("./Mention.ssr").MentionSSROptions, any>;
25
+ export declare const Mention: import("@tiptap/core").Node<unknown, MentionStorage>;
@@ -1,8 +1,26 @@
1
1
  import { v4 as uuidv4 } from 'uuid';
2
+ import Suggestion from '@tiptap/suggestion';
2
3
  import { registerEditorElement } from '../../util';
3
4
  import { PANEL_FOR_SECTION, TAB_FOR_SECTION } from '../../../shared/types';
4
5
  import { MentionSSR } from './Mention.ssr';
6
+ import { mentionSuggestion } from './MentionSuggestion';
5
7
  export const Mention = MentionSSR.extend({
8
+ addStorage() {
9
+ return {
10
+ openAdvanced: undefined,
11
+ };
12
+ },
13
+ // `@`-triggered authoring lives only on the client extension so the SSR
14
+ // node (MentionSSR) stays free of editor-only plugins.
15
+ addProseMirrorPlugins() {
16
+ return [
17
+ ...(this.parent?.() ?? []),
18
+ Suggestion({
19
+ editor: this.editor,
20
+ ...mentionSuggestion,
21
+ }),
22
+ ];
23
+ },
6
24
  addNodeView() {
7
25
  return (props) => {
8
26
  const isEditable = props.editor.isEditable;
@@ -11,10 +29,14 @@ export const Mention = MentionSSR.extend({
11
29
  const items = props.node.attrs.items || [];
12
30
  items.forEach((item) => {
13
31
  const anchor = document.createElement('a');
14
- anchor.classList.add('mention-link', 'px-1');
32
+ anchor.classList.add('mention-link');
15
33
  if (item.toh) {
16
34
  anchor.setAttribute('data-toh', item.toh);
17
35
  }
36
+ // `lang` drives the `[lang]` typography rules (e.g. italic work titles).
37
+ if (item.lang) {
38
+ anchor.setAttribute('lang', item.lang);
39
+ }
18
40
  // Display priority: text (custom override) > displayText (dynamic) > entity UUID (fallback)
19
41
  const displayText = item.text || item.displayText;
20
42
  anchor.textContent =
@@ -93,7 +115,10 @@ export const Mention = MentionSSR.extend({
93
115
  },
94
116
  addCommands() {
95
117
  return {
96
- setMention: (entity, linkType) => ({ commands }) => {
118
+ setMention: (entity, linkType, displayText, isSameWork) => ({ commands }) => {
119
+ // `displayText` is a transient label for immediate in-session display
120
+ // — it is never persisted, so the canonical value resolves on load.
121
+ // A persisted override lives in `text` (set via the hover card).
97
122
  return commands.insertContent({
98
123
  type: this.name,
99
124
  attrs: {
@@ -102,6 +127,8 @@ export const Mention = MentionSSR.extend({
102
127
  uuid: uuidv4(),
103
128
  entity,
104
129
  linkType,
130
+ ...(isSameWork ? { isSameWork: true } : {}),
131
+ ...(displayText ? { displayText } : {}),
105
132
  },
106
133
  ],
107
134
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Mention.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mention/Mention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mention.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mention/Mention.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export interface MentionItem {
12
12
  subtype?: string;
13
13
  linkToh?: string;
14
14
  toh?: string;
15
+ lang?: string;
15
16
  }
16
17
  export declare const MentionSSR: Node<MentionSSROptions, any>;
17
18
  export default MentionSSR;
@@ -1,5 +1,5 @@
1
1
  import { Node, mergeAttributes } from '@tiptap/core';
2
- import { cn, safeHref } from '@eightyfourthousand/lib-utils';
2
+ import { safeHref } from '@eightyfourthousand/lib-utils';
3
3
  const isMentionItem = (value) => {
4
4
  return !!value && typeof value === 'object';
5
5
  };
@@ -23,6 +23,10 @@ export const MentionSSR = Node.create({
23
23
  return {
24
24
  items: {
25
25
  default: [],
26
+ // `renderHTML` builds the mention's children from `node.attrs.items`;
27
+ // `rendered: false` stops the static SSR renderer from also serializing
28
+ // the raw array as `items="[object Object]"`. parseHTML is unaffected.
29
+ rendered: false,
26
30
  parseHTML: (element) => {
27
31
  const itemsAttr = element.getAttribute('data-items');
28
32
  if (!itemsAttr)
@@ -47,20 +51,23 @@ export const MentionSSR = Node.create({
47
51
  : [];
48
52
  const children = items.map((item) => {
49
53
  const label = item.text || item.displayText || '';
50
- const tohAttr = item.toh
51
- ? { 'data-toh': item.toh }
52
- : {};
54
+ // Shared presentational attrs applied to every rendered variant. `lang`
55
+ // drives the `[lang]` typography rules (e.g. italic work titles).
56
+ const extraAttrs = {
57
+ ...(item.toh ? { 'data-toh': item.toh } : {}),
58
+ ...(item.lang ? { lang: item.lang } : {}),
59
+ };
53
60
  if (!label || !item.entity || !item.linkType) {
54
61
  return [
55
62
  'span',
56
- { class: cn('mention-link px-1'), ...tohAttr },
63
+ { class: 'mention-link', ...extraAttrs },
57
64
  label,
58
65
  ];
59
66
  }
60
67
  const href = safeHref(`/entity/${item.linkType}/${item.entity}`);
61
68
  const attrs = {
62
- class: 'mention-link px-1',
63
- ...tohAttr,
69
+ class: 'mention-link',
70
+ ...extraAttrs,
64
71
  };
65
72
  if (item.uuid)
66
73
  attrs['uuid'] = item.uuid;
@@ -84,7 +91,7 @@ export const MentionSSR = Node.create({
84
91
  else {
85
92
  return [
86
93
  'span',
87
- { class: 'mention-link px-1', ...tohAttr },
94
+ { class: 'mention-link', ...extraAttrs },
88
95
  label,
89
96
  ];
90
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Mention.ssr.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mention/Mention.ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAkB7D,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE;IAC7D,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAoB;IACvD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,wEAAwE;IACxE,2EAA2E;IAC3E,KAAK,EAAE,EAAE;IAET,UAAU;QACR,OAAO;YACL,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO;YACL,KAAK,EAAE;gBACL,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;oBACrB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBACrD,IAAI,CAAC,SAAS;wBAAE,OAAO,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC/B,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC;aACF;SACF,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,2BAA2B,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,KAAK,GAAkB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAC7C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3B,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;YAClD,MAAM,OAAO,GAA2B,IAAI,CAAC,GAAG;gBAC9C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;gBAC1B,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7C,OAAO;oBACL,MAAM;oBACN,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,GAAG,OAAO,EAAE;oBAC9C,KAAK;iBACK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,KAAK,GAA2B;gBACpC,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,OAAO;aACX,CAAC;YACF,IAAI,IAAI,CAAC,IAAI;gBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACzC,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAExD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;gBACpB,KAAK,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;gBACjC,IAAI,IAAI,CAAC,OAAO;oBAAE,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;gBACvD,IAAI,IAAI,CAAC,OAAO;oBAAE,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1D,CAAC;iBAAM,IAAI,IAAI,EAAE,CAAC;gBAChB,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBACrB,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBAC3B,KAAK,CAAC,KAAK,CAAC,GAAG,qBAAqB,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,MAAM;oBACN,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,OAAO,EAAE;oBAC1C,KAAK;iBACK,CAAC;YACf,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAY,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE;gBAC3D,KAAK,EAAE,mBAAmB;gBAC1B,WAAW,EAAE,SAAS;aACvB,CAAC;YACF,GAAG,QAAQ;SACZ,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"Mention.ssr.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mention/Mention.ssr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Editor } from '@tiptap/core';
2
+ /**
3
+ * A single, stable React layer (mounted as a sibling of EditorContent) that
4
+ * hosts the advanced mention picker. The inline `@` dropdown cannot host a
5
+ * focusable work/toh field — focusing it closes the suggestion — so its
6
+ * "Advanced" button hands off to this dialog, which owns its own focus and is
7
+ * free to search any work. It inserts the chosen mention back at the position
8
+ * the `@` trigger occupied.
9
+ */
10
+ export declare const MentionAdvancedOverlay: ({ editor }: {
11
+ editor: Editor;
12
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
4
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from '@eightyfourthousand/design-system';
5
+ import { MentionSearch } from './MentionSearch';
6
+ const EDITOR_UPDATE_DELAY_MS = 50;
7
+ /**
8
+ * A single, stable React layer (mounted as a sibling of EditorContent) that
9
+ * hosts the advanced mention picker. The inline `@` dropdown cannot host a
10
+ * focusable work/toh field — focusing it closes the suggestion — so its
11
+ * "Advanced" button hands off to this dialog, which owns its own focus and is
12
+ * free to search any work. It inserts the chosen mention back at the position
13
+ * the `@` trigger occupied.
14
+ */
15
+ export const MentionAdvancedOverlay = ({ editor }) => {
16
+ const [payload, setPayload] = useState(null);
17
+ // Register the openAdvanced callback the suggestion list calls.
18
+ useEffect(() => {
19
+ const storage = editor.storage.mention;
20
+ storage.openAdvanced = (next) => setPayload(next);
21
+ return () => {
22
+ storage.openAdvanced = undefined;
23
+ };
24
+ }, [editor]);
25
+ const close = () => setPayload(null);
26
+ return (_jsx(Dialog, { open: !!payload, onOpenChange: (open) => !open && close(), children: _jsxs(DialogContent, { className: "max-w-md", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Insert mention" }), _jsx(DialogDescription, { children: "Search any work for a passage, folio, glossary term, bibliography entry, or another work." })] }), payload && (_jsx(MentionSearch, { initialQuery: payload.query, onSelect: ({ entity, linkType, label, isSameWork }) => {
27
+ const { pos } = payload;
28
+ close();
29
+ setTimeout(() => {
30
+ editor
31
+ .chain()
32
+ .focus()
33
+ .setTextSelection(pos)
34
+ .setMention(entity, linkType, label, isSameWork)
35
+ .run();
36
+ }, EDITOR_UPDATE_DELAY_MS);
37
+ } }))] }) }));
38
+ };
39
+ //# sourceMappingURL=MentionAdvancedOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionAdvancedOverlay.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mention/MentionAdvancedOverlay.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EAAE,MAAM,EAAsB,EAAE,EAAE;IACvE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgC,IAAI,CAAC,CAAC;IAE5E,gEAAgE;IAChE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QACvC,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,YAC/D,MAAC,aAAa,IAAC,SAAS,EAAC,UAAU,aACjC,MAAC,YAAY,eACX,KAAC,WAAW,iCAA6B,EACzC,KAAC,iBAAiB,4GAGE,IACP,EACd,OAAO,IAAI,CACV,KAAC,aAAa,IACZ,YAAY,EAAE,OAAO,CAAC,KAAK,EAC3B,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;wBACpD,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;wBACxB,KAAK,EAAE,CAAC;wBACR,UAAU,CAAC,GAAG,EAAE;4BACd,MAAM;iCACH,KAAK,EAAE;iCACP,KAAK,EAAE;iCACP,gBAAgB,CAAC,GAAG,CAAC;iCACrB,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC;iCAC/C,GAAG,EAAE,CAAC;wBACX,CAAC,EAAE,sBAAsB,CAAC,CAAC;oBAC7B,CAAC,GACD,CACH,IACa,GACT,CACV,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,11 @@
1
1
  import { Editor } from '@tiptap/core';
2
+ /**
3
+ * Hover card for an existing mention. Editing is limited to a few actions:
4
+ * overriding the display text (the persisted `text` property), tagging a
5
+ * `work` mention's language (the `lang` property, which drives title
6
+ * typography), and deleting. Re-pointing a mention at a different entity is not
7
+ * supported — delete and re-insert instead.
8
+ */
2
9
  export declare const MentionHoverContent: ({ uuid, entityType, entity, editor, close, setHoverCardEditing, }: {
3
10
  uuid: string;
4
11
  entityType: string;
@@ -1,9 +1,24 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Button } from '@eightyfourthousand/design-system';
3
- import { ChevronRightIcon, PencilIcon, Trash2Icon } from 'lucide-react';
3
+ import { CheckIcon, ChevronLeftIcon, ChevronRightIcon, LanguagesIcon, Trash2Icon, TypeIcon, XIcon, } from 'lucide-react';
4
4
  import { useCallback, useState } from 'react';
5
- import { InternalLinkInput } from '../InternalLink/InternalLinkInput';
6
- const EDITOR_UPDATE_DELAY_MS = 100;
5
+ import { HoverInputField } from '../HoverInputField';
6
+ /**
7
+ * Language options offered when tagging a `work` mention. The `lang` attribute
8
+ * drives the `[lang]` typography rules (italic titles, Tibetan font), so the
9
+ * full translation-language set is available.
10
+ */
11
+ const LANG_OPTIONS = [
12
+ { name: 'English', lang: 'en' },
13
+ { name: 'Sanskrit', lang: 'Sa-Ltn' },
14
+ { name: 'Wylie', lang: 'Bo-Ltn' },
15
+ { name: 'Tibetan', lang: 'bo' },
16
+ { name: 'Chinese', lang: 'zh' },
17
+ { name: 'Japanese', lang: 'ja' },
18
+ { name: 'Mongolian', lang: 'Mt-Ltn' },
19
+ { name: 'Pali', lang: 'Pi-Ltn' },
20
+ { name: 'Pinyin', lang: 'Zh-Ltn' },
21
+ ];
7
22
  /**
8
23
  * Find a mention node in the document that contains an item with the given UUID.
9
24
  */
@@ -24,22 +39,61 @@ function findMentionNodeByItemUuid(editor, itemUuid) {
24
39
  });
25
40
  return result;
26
41
  }
42
+ /**
43
+ * Locate the mention node containing the item and apply an edit to it. The
44
+ * node is re-found by uuid at dispatch time, so positions are always fresh —
45
+ * no need to defer past the hover card closing.
46
+ */
47
+ function withMentionNode(editor, itemUuid, fn) {
48
+ if (editor.isDestroyed) {
49
+ return;
50
+ }
51
+ const found = findMentionNodeByItemUuid(editor, itemUuid);
52
+ if (!found?.node) {
53
+ console.warn('Mention node not found in the document.');
54
+ return;
55
+ }
56
+ fn(found.pos, found.node);
57
+ }
58
+ /**
59
+ * Hover card for an existing mention. Editing is limited to a few actions:
60
+ * overriding the display text (the persisted `text` property), tagging a
61
+ * `work` mention's language (the `lang` property, which drives title
62
+ * typography), and deleting. Re-pointing a mention at a different entity is not
63
+ * supported — delete and re-insert instead.
64
+ */
27
65
  export const MentionHoverContent = ({ uuid, entityType, entity, editor, close, setHoverCardEditing, }) => {
28
- const [isEditing, setIsEditingLocal] = useState(false);
29
- const setIsEditing = useCallback((editing) => {
30
- setIsEditingLocal(editing);
31
- setHoverCardEditing(editing);
66
+ const [mode, setModeLocal] = useState('view');
67
+ // Snapshot the item once when the card opens — the custom override (`text`)
68
+ // pre-fills the rename field, and text/displayText drive the label shown.
69
+ const [item] = useState(() => {
70
+ const found = findMentionNodeByItemUuid(editor, uuid);
71
+ const items = found?.node?.attrs.items || [];
72
+ return items.find((i) => i.uuid === uuid);
73
+ });
74
+ const currentText = item?.text ?? '';
75
+ // Prefer the display text; fall back to the entity UUID only when unresolved.
76
+ const displayLabel = item?.text || item?.displayText || entity;
77
+ // Language tagging is only meaningful for work titles.
78
+ const isWork = entityType === 'work';
79
+ const setMode = useCallback((next) => {
80
+ setModeLocal(next);
81
+ setHoverCardEditing(next !== 'view');
32
82
  }, [setHoverCardEditing]);
83
+ const mutateItem = useCallback((updater) => {
84
+ setMode('view');
85
+ close();
86
+ withMentionNode(editor, uuid, (pos, node) => {
87
+ const items = (node.attrs.items || []).map((item) => (item.uuid === uuid ? updater(item) : item));
88
+ const { tr } = editor.state;
89
+ tr.setNodeMarkup(pos, undefined, { ...node.attrs, items });
90
+ editor.view.dispatch(tr);
91
+ });
92
+ }, [editor, uuid, close, setMode]);
33
93
  const deleteMention = useCallback(() => {
34
- setIsEditing(false);
94
+ setMode('view');
35
95
  close();
36
- setTimeout(() => {
37
- const found = findMentionNodeByItemUuid(editor, uuid);
38
- if (!found || !found.node) {
39
- console.warn('Mention node not found in the document.');
40
- return;
41
- }
42
- const { pos, node } = found;
96
+ withMentionNode(editor, uuid, (pos, node) => {
43
97
  const items = (node.attrs.items || []).filter((item) => item.uuid !== uuid);
44
98
  const { tr } = editor.state;
45
99
  if (items.length === 0) {
@@ -51,34 +105,23 @@ export const MentionHoverContent = ({ uuid, entityType, entity, editor, close, s
51
105
  tr.setNodeMarkup(pos, undefined, { ...node.attrs, items });
52
106
  }
53
107
  editor.view.dispatch(tr);
54
- }, EDITOR_UPDATE_DELAY_MS);
55
- }, [editor, uuid, close, setIsEditing]);
56
- const updateMention = useCallback((newType, newEntity) => {
57
- setIsEditing(false);
58
- close();
59
- setTimeout(() => {
60
- const found = findMentionNodeByItemUuid(editor, uuid);
61
- if (!found || !found.node) {
62
- console.warn('Mention node not found in the document.');
63
- return;
64
- }
65
- const { pos, node } = found;
66
- const items = (node.attrs.items || []).map((item) => item.uuid === uuid
67
- ? { ...item, entity: newEntity, linkType: newType }
68
- : item);
69
- const { tr } = editor.state;
70
- tr.setNodeMarkup(pos, undefined, { ...node.attrs, items });
71
- editor.view.dispatch(tr);
72
- }, EDITOR_UPDATE_DELAY_MS);
73
- }, [editor, uuid, close, setIsEditing]);
74
- return (_jsx("div", { className: "flex justify-between gap-2 p-2 w-fit max-w-80", children: isEditing ? (_jsx(InternalLinkInput, { type: entityType, uuid: entity, onSubmit: (type, entityVal) => {
75
- if (type && entityVal) {
76
- updateMention(type, entityVal);
77
- }
78
- else {
79
- deleteMention();
80
- }
81
- setIsEditing(false);
82
- } })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-primary text-sm my-auto", children: entityType }), _jsx(ChevronRightIcon, { className: "my-auto size-4" }), _jsx("span", { className: "truncate text-muted-foreground text-sm my-auto", children: entity }), _jsx("span", { className: "flex-grow" }), _jsx(Button, { variant: "ghost", size: "icon", className: "size-6 [&_svg]:size-4", onClick: () => setIsEditing(true), children: _jsx(PencilIcon, { className: "text-primary my-auto" }) }), _jsx(Button, { variant: "ghost", size: "icon", className: "size-6 [&_svg]:size-4", onClick: deleteMention, children: _jsx(Trash2Icon, { className: "text-destructive my-auto" }) })] })) }));
108
+ });
109
+ }, [editor, uuid, close, setMode]);
110
+ // Set or clear the custom override label. Passing no value clears `text`,
111
+ // returning the mention to its dynamically resolved label.
112
+ const renameMention = useCallback((value) => {
113
+ mutateItem((item) => ({ ...item, text: value || undefined }));
114
+ }, [mutateItem]);
115
+ // Set or clear the mention's language tag. Passing no value clears `lang`.
116
+ const setLang = useCallback((lang) => {
117
+ mutateItem((item) => ({ ...item, lang: lang || undefined }));
118
+ }, [mutateItem]);
119
+ if (mode === 'rename') {
120
+ return (_jsx("div", { className: "flex justify-between gap-2 p-2 w-fit max-w-80", children: _jsx(HoverInputField, { type: "mention", attr: "text", valueRef: currentText, placeholder: "Custom label (leave empty to reset)\u2026", onSubmit: (value) => renameMention(value) }) }));
121
+ }
122
+ if (mode === 'lang') {
123
+ return (_jsxs("div", { className: "flex flex-col gap-0.5 p-1 w-40", children: [_jsxs("div", { className: "flex items-center gap-1 px-1 pb-1", children: [_jsx(Button, { variant: "ghost", size: "icon", className: "size-6 [&_svg]:size-4", title: "Back", onClick: () => setMode('view'), children: _jsx(ChevronLeftIcon, { className: "text-primary" }) }), _jsx("span", { className: "text-primary text-sm my-auto", children: "Language" })] }), LANG_OPTIONS.map((option) => (_jsxs("div", { className: "flex items-center text-sm rounded-md hover:bg-muted text-foreground px-2 py-1.5 cursor-pointer", onClick: () => setLang(option.lang), children: [_jsx("span", { children: option.name }), _jsx("div", { className: "flex-1" }), item?.lang === option.lang && (_jsx(CheckIcon, { className: "size-3.5 ms-4" }))] }, option.lang))), item?.lang && (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-px bg-border my-1" }), _jsxs("div", { className: "flex items-center text-sm rounded-md hover:bg-muted text-foreground px-2 py-1.5 cursor-pointer", onClick: () => setLang(undefined), children: [_jsx("span", { children: "Clear" }), _jsx("div", { className: "flex-1" }), _jsx(XIcon, { className: "size-3.5 ms-4" })] })] }))] }));
124
+ }
125
+ return (_jsxs("div", { className: "flex justify-between gap-2 p-2 w-fit max-w-80", children: [_jsx("span", { className: "text-primary text-sm my-auto", children: entityType }), _jsx(ChevronRightIcon, { className: "my-auto size-4" }), _jsx("span", { className: "truncate text-muted-foreground text-sm my-auto", children: displayLabel }), _jsx("span", { className: "flex-grow" }), isWork && (_jsx(Button, { variant: "ghost", size: "icon", className: "size-6 [&_svg]:size-4", title: "Set language", onClick: () => setMode('lang'), children: _jsx(LanguagesIcon, { className: "text-primary my-auto" }) })), _jsx(Button, { variant: "ghost", size: "icon", className: "size-6 [&_svg]:size-4", title: "Edit display text", onClick: () => setMode('rename'), children: _jsx(TypeIcon, { className: "text-primary my-auto" }) }), _jsx(Button, { variant: "ghost", size: "icon", className: "size-6 [&_svg]:size-4", title: "Remove mention", onClick: deleteMention, children: _jsx(Trash2Icon, { className: "text-destructive my-auto" }) })] }));
83
126
  };
84
127
  //# sourceMappingURL=MentionHoverContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MentionHoverContent.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mention/MentionHoverContent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MentionHoverContent.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Mention/MentionHoverContent.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { SuggestionKeyDownProps, SuggestionProps } from '@tiptap/suggestion';
2
+ import { MentionSearchResult } from './useMentionSearch';
3
+ export interface MentionListHandle {
4
+ onKeyDown: (props: SuggestionKeyDownProps) => boolean;
5
+ }
6
+ /**
7
+ * The `@` mention dropdown. The suggestion plugin supplies the typed `query`;
8
+ * this component owns the debounced search, keyboard navigation, and selection.
9
+ * Results are grouped by entity type (Notion-style) and scoped to the current
10
+ * work; keyboard navigation runs across the flattened, grouped order. The
11
+ * "Advanced" button hands off to a dedicated dialog that can search any work
12
+ * (a focusable field cannot live in this suggestion popup without closing it).
13
+ */
14
+ declare const MentionList: import("react").ForwardRefExoticComponent<SuggestionProps<MentionSearchResult, any> & import("react").RefAttributes<MentionListHandle>>;
15
+ export default MentionList;