@ai-group/chat-sdk 3.7.0 → 3.7.1-alpha10

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 (235) hide show
  1. package/README.md +22 -0
  2. package/dist/cjs/components/FileGallery/index.js +59 -40
  3. package/dist/cjs/components/FileGallery/index.js.map +2 -2
  4. package/dist/cjs/components/FileGallery/styles.d.ts +7 -0
  5. package/dist/cjs/components/FileGallery/styles.js +78 -0
  6. package/dist/cjs/components/FileGallery/styles.js.map +2 -2
  7. package/dist/cjs/components/Sources/components/CarouselCard.d.ts +12 -0
  8. package/dist/cjs/components/Sources/components/CarouselCard.js +130 -0
  9. package/dist/cjs/components/Sources/components/CarouselCard.js.map +7 -0
  10. package/dist/cjs/components/Sources/index.d.ts +5 -0
  11. package/dist/cjs/components/Sources/index.js +162 -0
  12. package/dist/cjs/components/Sources/index.js.map +7 -0
  13. package/dist/cjs/components/Sources/styles.d.ts +59 -0
  14. package/dist/cjs/components/Sources/styles.js +179 -0
  15. package/dist/cjs/components/Sources/styles.js.map +7 -0
  16. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.d.ts +19 -1
  17. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js +232 -22
  18. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js.map +2 -2
  19. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.d.ts +3 -0
  20. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.js +83 -0
  21. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.js.map +2 -2
  22. package/dist/cjs/components/XAdkChatbot/index.d.ts +2 -2
  23. package/dist/cjs/components/XAdkChatbot/index.js +75 -8
  24. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  25. package/dist/cjs/components/XAdkChatbot/styles.js +1 -1
  26. package/dist/cjs/components/XAdkChatbot/styles.js.map +1 -1
  27. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.d.ts +7 -2
  28. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +30 -12
  29. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
  30. package/dist/cjs/components/XAdkProvider/compound/Sender.d.ts +3 -1
  31. package/dist/cjs/components/XAdkProvider/compound/Sender.js +81 -4
  32. package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +3 -3
  33. package/dist/cjs/components/XAdkProvider/compound/styles.d.ts +1 -0
  34. package/dist/cjs/components/XAdkProvider/compound/styles.js +16 -0
  35. package/dist/cjs/components/XAdkProvider/compound/styles.js.map +2 -2
  36. package/dist/cjs/components/XAdkProvider/context/ChatSenderStateContext.d.ts +4 -0
  37. package/dist/cjs/components/XAdkProvider/context/ChatSenderStateContext.js.map +2 -2
  38. package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.d.ts +9 -0
  39. package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.js +34 -0
  40. package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.js.map +7 -0
  41. package/dist/cjs/components/XAdkProvider/context/index.d.ts +5 -4
  42. package/dist/cjs/components/XAdkProvider/context/index.js +3 -1
  43. package/dist/cjs/components/XAdkProvider/context/index.js.map +2 -2
  44. package/dist/cjs/components/XAdkProvider/index.js +11 -10
  45. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  46. package/dist/cjs/components/XAdkSender/InlineTagInput.d.ts +31 -0
  47. package/dist/cjs/components/XAdkSender/InlineTagInput.js +759 -0
  48. package/dist/cjs/components/XAdkSender/InlineTagInput.js.map +7 -0
  49. package/dist/cjs/components/XAdkSender/InputTags.d.ts +8 -0
  50. package/dist/cjs/components/XAdkSender/InputTags.js +51 -0
  51. package/dist/cjs/components/XAdkSender/InputTags.js.map +7 -0
  52. package/dist/cjs/components/XAdkSender/QuickList.d.ts +16 -0
  53. package/dist/cjs/components/XAdkSender/QuickList.js +105 -0
  54. package/dist/cjs/components/XAdkSender/QuickList.js.map +7 -0
  55. package/dist/cjs/components/XAdkSender/index.d.ts +1 -6
  56. package/dist/cjs/components/XAdkSender/index.js +422 -150
  57. package/dist/cjs/components/XAdkSender/index.js.map +3 -3
  58. package/dist/cjs/components/XAdkSender/styles.d.ts +19 -0
  59. package/dist/cjs/components/XAdkSender/styles.js +225 -5
  60. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  61. package/dist/cjs/components/XAiConversations/styles.js +11 -1
  62. package/dist/cjs/components/XAiConversations/styles.js.map +2 -2
  63. package/dist/cjs/hooks/useADKChat.js +5 -1
  64. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  65. package/dist/cjs/index.d.ts +8 -3
  66. package/dist/cjs/index.js +44 -10
  67. package/dist/cjs/index.js.map +3 -3
  68. package/dist/cjs/presets/base.d.ts +6 -0
  69. package/dist/cjs/presets/base.js +50 -0
  70. package/dist/cjs/presets/base.js.map +7 -0
  71. package/dist/cjs/presets/define.d.ts +11 -0
  72. package/dist/cjs/presets/define.js +58 -0
  73. package/dist/cjs/presets/define.js.map +7 -0
  74. package/dist/cjs/presets/index.d.ts +3 -0
  75. package/dist/cjs/presets/index.js +28 -0
  76. package/dist/cjs/presets/index.js.map +7 -0
  77. package/dist/cjs/presets/runtime.d.ts +22 -0
  78. package/dist/cjs/presets/runtime.js +75 -0
  79. package/dist/cjs/presets/runtime.js.map +7 -0
  80. package/dist/cjs/presets/xgroup/index.d.ts +5 -0
  81. package/dist/cjs/presets/xgroup/index.js +10 -0
  82. package/dist/cjs/presets/xgroup/index.js.map +2 -2
  83. package/dist/cjs/presets/xgroup/knowledgeReference.d.ts +17 -0
  84. package/dist/cjs/presets/xgroup/knowledgeReference.js +162 -0
  85. package/dist/cjs/presets/xgroup/knowledgeReference.js.map +7 -0
  86. package/dist/cjs/presets/xgroup/preset.d.ts +1 -13
  87. package/dist/cjs/presets/xgroup/preset.js +16 -37
  88. package/dist/cjs/presets/xgroup/preset.js.map +2 -2
  89. package/dist/cjs/presets/xgroup/strategies.d.ts +5 -4
  90. package/dist/cjs/presets/xgroup/strategies.js +11 -15
  91. package/dist/cjs/presets/xgroup/strategies.js.map +3 -3
  92. package/dist/cjs/presets/xgroup/webReference.d.ts +10 -0
  93. package/dist/cjs/presets/xgroup/webReference.js +85 -0
  94. package/dist/cjs/presets/xgroup/webReference.js.map +7 -0
  95. package/dist/cjs/types/ChatStrategies.d.ts +11 -2
  96. package/dist/cjs/types/ChatStrategies.js.map +1 -1
  97. package/dist/cjs/types/FileGallery.d.ts +3 -0
  98. package/dist/cjs/types/FileGallery.js.map +1 -1
  99. package/dist/cjs/types/Sources.d.ts +30 -0
  100. package/dist/cjs/types/Sources.js +18 -0
  101. package/dist/cjs/types/Sources.js.map +7 -0
  102. package/dist/cjs/types/XAdkChatbot.d.ts +33 -0
  103. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  104. package/dist/cjs/types/XAdkSender.d.ts +154 -8
  105. package/dist/cjs/types/XAdkSender.js.map +1 -1
  106. package/dist/cjs/types/index.d.ts +1 -0
  107. package/dist/cjs/types/index.js +3 -1
  108. package/dist/cjs/types/index.js.map +2 -2
  109. package/dist/cjs/utils/index.d.ts +1 -0
  110. package/dist/cjs/utils/index.js +3 -1
  111. package/dist/cjs/utils/index.js.map +2 -2
  112. package/dist/cjs/utils/markdownResource.d.ts +14 -0
  113. package/dist/cjs/utils/markdownResource.js +131 -0
  114. package/dist/cjs/utils/markdownResource.js.map +7 -0
  115. package/dist/esm/components/FileGallery/index.js +22 -16
  116. package/dist/esm/components/FileGallery/index.js.map +1 -1
  117. package/dist/esm/components/FileGallery/styles.d.ts +7 -0
  118. package/dist/esm/components/FileGallery/styles.js +24 -17
  119. package/dist/esm/components/FileGallery/styles.js.map +1 -1
  120. package/dist/esm/components/Sources/components/CarouselCard.d.ts +12 -0
  121. package/dist/esm/components/Sources/components/CarouselCard.js +107 -0
  122. package/dist/esm/components/Sources/components/CarouselCard.js.map +1 -0
  123. package/dist/esm/components/Sources/index.d.ts +5 -0
  124. package/dist/esm/components/Sources/index.js +127 -0
  125. package/dist/esm/components/Sources/index.js.map +1 -0
  126. package/dist/esm/components/Sources/styles.d.ts +59 -0
  127. package/dist/esm/components/Sources/styles.js +34 -0
  128. package/dist/esm/components/Sources/styles.js.map +1 -0
  129. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.d.ts +19 -1
  130. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js +190 -11
  131. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js.map +1 -1
  132. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.d.ts +3 -0
  133. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.js +5 -2
  134. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.js.map +1 -1
  135. package/dist/esm/components/XAdkChatbot/index.d.ts +2 -2
  136. package/dist/esm/components/XAdkChatbot/index.js +55 -10
  137. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  138. package/dist/esm/components/XAdkChatbot/styles.js +1 -1
  139. package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
  140. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.d.ts +7 -2
  141. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +40 -17
  142. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
  143. package/dist/esm/components/XAdkProvider/compound/Sender.d.ts +3 -1
  144. package/dist/esm/components/XAdkProvider/compound/Sender.js +70 -6
  145. package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -1
  146. package/dist/esm/components/XAdkProvider/compound/styles.d.ts +1 -0
  147. package/dist/esm/components/XAdkProvider/compound/styles.js +3 -2
  148. package/dist/esm/components/XAdkProvider/compound/styles.js.map +1 -1
  149. package/dist/esm/components/XAdkProvider/context/ChatSenderStateContext.d.ts +4 -0
  150. package/dist/esm/components/XAdkProvider/context/ChatSenderStateContext.js.map +1 -1
  151. package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.d.ts +9 -0
  152. package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.js +9 -0
  153. package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.js.map +1 -0
  154. package/dist/esm/components/XAdkProvider/context/index.d.ts +5 -4
  155. package/dist/esm/components/XAdkProvider/context/index.js +1 -0
  156. package/dist/esm/components/XAdkProvider/context/index.js.map +1 -1
  157. package/dist/esm/components/XAdkProvider/index.js +7 -3
  158. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  159. package/dist/esm/components/XAdkSender/InlineTagInput.d.ts +31 -0
  160. package/dist/esm/components/XAdkSender/InlineTagInput.js +734 -0
  161. package/dist/esm/components/XAdkSender/InlineTagInput.js.map +1 -0
  162. package/dist/esm/components/XAdkSender/InputTags.d.ts +8 -0
  163. package/dist/esm/components/XAdkSender/InputTags.js +37 -0
  164. package/dist/esm/components/XAdkSender/InputTags.js.map +1 -0
  165. package/dist/esm/components/XAdkSender/QuickList.d.ts +16 -0
  166. package/dist/esm/components/XAdkSender/QuickList.js +96 -0
  167. package/dist/esm/components/XAdkSender/QuickList.js.map +1 -0
  168. package/dist/esm/components/XAdkSender/index.d.ts +1 -6
  169. package/dist/esm/components/XAdkSender/index.js +476 -143
  170. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  171. package/dist/esm/components/XAdkSender/styles.d.ts +19 -0
  172. package/dist/esm/components/XAdkSender/styles.js +34 -12
  173. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  174. package/dist/esm/components/XAiConversations/styles.js +3 -3
  175. package/dist/esm/components/XAiConversations/styles.js.map +1 -1
  176. package/dist/esm/hooks/useADKChat.js +8 -2
  177. package/dist/esm/hooks/useADKChat.js.map +1 -1
  178. package/dist/esm/index.d.ts +8 -3
  179. package/dist/esm/index.js +7 -4
  180. package/dist/esm/index.js.map +1 -1
  181. package/dist/esm/presets/base.d.ts +6 -0
  182. package/dist/esm/presets/base.js +28 -0
  183. package/dist/esm/presets/base.js.map +1 -0
  184. package/dist/esm/presets/define.d.ts +11 -0
  185. package/dist/esm/presets/define.js +33 -0
  186. package/dist/esm/presets/define.js.map +1 -0
  187. package/dist/esm/presets/index.d.ts +3 -0
  188. package/dist/esm/presets/index.js +4 -0
  189. package/dist/esm/presets/index.js.map +1 -0
  190. package/dist/esm/presets/runtime.d.ts +22 -0
  191. package/dist/esm/presets/runtime.js +45 -0
  192. package/dist/esm/presets/runtime.js.map +1 -0
  193. package/dist/esm/presets/xgroup/index.d.ts +5 -0
  194. package/dist/esm/presets/xgroup/index.js +6 -0
  195. package/dist/esm/presets/xgroup/index.js.map +1 -1
  196. package/dist/esm/presets/xgroup/knowledgeReference.d.ts +17 -0
  197. package/dist/esm/presets/xgroup/knowledgeReference.js +95 -0
  198. package/dist/esm/presets/xgroup/knowledgeReference.js.map +1 -0
  199. package/dist/esm/presets/xgroup/preset.d.ts +1 -13
  200. package/dist/esm/presets/xgroup/preset.js +9 -29
  201. package/dist/esm/presets/xgroup/preset.js.map +1 -1
  202. package/dist/esm/presets/xgroup/strategies.d.ts +5 -4
  203. package/dist/esm/presets/xgroup/strategies.js +8 -20
  204. package/dist/esm/presets/xgroup/strategies.js.map +1 -1
  205. package/dist/esm/presets/xgroup/webReference.d.ts +10 -0
  206. package/dist/esm/presets/xgroup/webReference.js +46 -0
  207. package/dist/esm/presets/xgroup/webReference.js.map +1 -0
  208. package/dist/esm/types/ChatStrategies.d.ts +11 -2
  209. package/dist/esm/types/ChatStrategies.js.map +1 -1
  210. package/dist/esm/types/FileGallery.d.ts +3 -0
  211. package/dist/esm/types/FileGallery.js.map +1 -1
  212. package/dist/esm/types/Sources.d.ts +30 -0
  213. package/dist/esm/types/Sources.js +2 -0
  214. package/dist/esm/types/Sources.js.map +1 -0
  215. package/dist/esm/types/XAdkChatbot.d.ts +33 -0
  216. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  217. package/dist/esm/types/XAdkSender.d.ts +154 -8
  218. package/dist/esm/types/XAdkSender.js.map +1 -1
  219. package/dist/esm/types/index.d.ts +1 -0
  220. package/dist/esm/types/index.js +1 -0
  221. package/dist/esm/types/index.js.map +1 -1
  222. package/dist/esm/utils/index.d.ts +1 -0
  223. package/dist/esm/utils/index.js +1 -0
  224. package/dist/esm/utils/index.js.map +1 -1
  225. package/dist/esm/utils/markdownResource.d.ts +14 -0
  226. package/dist/esm/utils/markdownResource.js +101 -0
  227. package/dist/esm/utils/markdownResource.js.map +1 -0
  228. package/dist/umd/chat-sdk.min.js +1 -1
  229. package/package.json +6 -1
  230. package/dist/cjs/components/XAdkSender/Switch.d.ts +0 -16
  231. package/dist/cjs/components/XAdkSender/Switch.js +0 -95
  232. package/dist/cjs/components/XAdkSender/Switch.js.map +0 -7
  233. package/dist/esm/components/XAdkSender/Switch.d.ts +0 -16
  234. package/dist/esm/components/XAdkSender/Switch.js +0 -53
  235. package/dist/esm/components/XAdkSender/Switch.js.map +0 -1
@@ -0,0 +1,759 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/components/XAdkSender/InlineTagInput.tsx
20
+ var InlineTagInput_exports = {};
21
+ __export(InlineTagInput_exports, {
22
+ default: () => InlineTagInput_default
23
+ });
24
+ module.exports = __toCommonJS(InlineTagInput_exports);
25
+ var import_react = require("react");
26
+ var import_client = require("react-dom/client");
27
+ var import_styles = require("./styles");
28
+ var import_markdownResource = require("../../utils/markdownResource");
29
+ var import_jsx_runtime = require("react/jsx-runtime");
30
+ var MENTION_ATTR = "data-xadk-inline-mention-id";
31
+ var CARET_TEXT = "​";
32
+ var createTextNode = (text) => document.createTextNode(text);
33
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? import_react.useEffect : import_react.useLayoutEffect;
34
+ var normalizeText = (text) => text.replace(/\u200B/g, "").replace(/\u00a0/g, " ");
35
+ var getPlainLength = (text) => normalizeText(text).length;
36
+ var toRawOffset = (text, plainOffset) => {
37
+ let current = 0;
38
+ for (let i = 0; i < text.length; i++) {
39
+ if (current >= plainOffset)
40
+ return i;
41
+ if (text[i] !== CARET_TEXT)
42
+ current += 1;
43
+ }
44
+ return text.length;
45
+ };
46
+ var InlineTagInput = (0, import_react.forwardRef)(
47
+ ({
48
+ value,
49
+ mentions,
50
+ defaultInputParts,
51
+ placeholder,
52
+ disabled,
53
+ onChange,
54
+ onMentionsChange,
55
+ onKeyDown,
56
+ onKeyUp,
57
+ renderMention
58
+ }, ref) => {
59
+ const styles = (0, import_styles.useStyles)();
60
+ const editorRef = (0, import_react.useRef)(null);
61
+ const latestMentionsRef = (0, import_react.useRef)(mentions);
62
+ const tagRootMapRef = (0, import_react.useRef)(/* @__PURE__ */ new WeakMap());
63
+ const composingRef = (0, import_react.useRef)(false);
64
+ const lastInsertedCaretRef = (0, import_react.useRef)(null);
65
+ const savedRangeRef = (0, import_react.useRef)(null);
66
+ const defaultInputPartsAppliedRef = (0, import_react.useRef)(false);
67
+ const skipEmptyCleanupOnceRef = (0, import_react.useRef)(false);
68
+ const structuralCleanupFrameRef = (0, import_react.useRef)(null);
69
+ const [hasContent, setHasContent] = (0, import_react.useState)(
70
+ () => Boolean(value || mentions.length)
71
+ );
72
+ const lastEmittedStateRef = (0, import_react.useRef)({
73
+ value,
74
+ mentionIds: mentions.map((mention) => mention.id).join("|")
75
+ });
76
+ (0, import_react.useEffect)(() => {
77
+ latestMentionsRef.current = mentions;
78
+ }, [mentions]);
79
+ const getOrderedMentions = (0, import_react.useCallback)(() => {
80
+ const editor = editorRef.current;
81
+ if (!editor)
82
+ return [];
83
+ const mentionMap = new Map(
84
+ latestMentionsRef.current.map((mention) => [mention.id, mention])
85
+ );
86
+ return Array.from(editor.querySelectorAll(`[${MENTION_ATTR}]`)).map(
87
+ (node) => mentionMap.get(
88
+ node.dataset.xadkInlineMentionId || ""
89
+ )
90
+ ).filter(Boolean);
91
+ }, []);
92
+ const getPlainText = (0, import_react.useCallback)(() => {
93
+ const editor = editorRef.current;
94
+ if (!editor)
95
+ return "";
96
+ let text = "";
97
+ editor.childNodes.forEach((node) => {
98
+ if (node.nodeType === Node.TEXT_NODE) {
99
+ text += node.textContent || "";
100
+ }
101
+ });
102
+ return normalizeText(text);
103
+ }, []);
104
+ const getParts = (0, import_react.useCallback)(() => {
105
+ const editor = editorRef.current;
106
+ if (!editor)
107
+ return [];
108
+ const mentionMap = new Map(
109
+ latestMentionsRef.current.map((mention) => [mention.id, mention])
110
+ );
111
+ const parts = [];
112
+ editor.childNodes.forEach((node) => {
113
+ if (node.nodeType === Node.TEXT_NODE) {
114
+ const text = normalizeText(node.textContent || "");
115
+ if (text)
116
+ parts.push({ type: "text", text });
117
+ return;
118
+ }
119
+ if (node instanceof HTMLElement && node.hasAttribute(MENTION_ATTR)) {
120
+ const mentionId = node.dataset.xadkInlineMentionId || "";
121
+ const mention = mentionMap.get(mentionId);
122
+ if (mention)
123
+ parts.push({ type: "mention", mention });
124
+ }
125
+ });
126
+ return parts;
127
+ }, []);
128
+ const emitChange = (0, import_react.useCallback)(() => {
129
+ const nextValue = getPlainText();
130
+ const nextMentions = getOrderedMentions();
131
+ setHasContent(Boolean(nextValue || nextMentions.length));
132
+ lastEmittedStateRef.current = {
133
+ value: nextValue,
134
+ mentionIds: nextMentions.map((mention) => mention.id).join("|")
135
+ };
136
+ onChange(nextValue);
137
+ onMentionsChange(nextMentions);
138
+ }, [getOrderedMentions, getPlainText, onChange, onMentionsChange]);
139
+ const removeTextRange = (0, import_react.useCallback)(
140
+ (node, start, end) => {
141
+ const text = node.textContent || "";
142
+ node.textContent = `${text.slice(0, start)}${text.slice(end)}`;
143
+ if (!node.textContent)
144
+ node.remove();
145
+ },
146
+ []
147
+ );
148
+ const removeMentionNode = (0, import_react.useCallback)(
149
+ (node) => {
150
+ var _a, _b, _c;
151
+ const previous = node.previousSibling;
152
+ const next = node.nextSibling;
153
+ (_a = tagRootMapRef.current.get(node)) == null ? void 0 : _a.unmount();
154
+ node.remove();
155
+ if ((next == null ? void 0 : next.nodeType) === Node.TEXT_NODE) {
156
+ const text = next.textContent || "";
157
+ const caretLength = ((_b = text.match(/^\u200B+/)) == null ? void 0 : _b[0].length) || 0;
158
+ if (caretLength > 0) {
159
+ removeTextRange(next, 0, caretLength);
160
+ return;
161
+ }
162
+ }
163
+ if ((previous == null ? void 0 : previous.nodeType) === Node.TEXT_NODE) {
164
+ const text = previous.textContent || "";
165
+ const spaceLength = ((_c = text.match(/\s+$/)) == null ? void 0 : _c[0].length) || 0;
166
+ if (spaceLength > 0) {
167
+ removeTextRange(
168
+ previous,
169
+ text.length - spaceLength,
170
+ text.length
171
+ );
172
+ }
173
+ }
174
+ },
175
+ [removeTextRange]
176
+ );
177
+ const removeMentionById = (0, import_react.useCallback)(
178
+ (id) => {
179
+ const editor = editorRef.current;
180
+ const node = Array.from(
181
+ (editor == null ? void 0 : editor.querySelectorAll(`[${MENTION_ATTR}]`)) || []
182
+ ).find(
183
+ (item) => item.dataset.xadkInlineMentionId === id
184
+ );
185
+ if (node) {
186
+ removeMentionNode(node);
187
+ }
188
+ emitChange();
189
+ editor == null ? void 0 : editor.focus();
190
+ },
191
+ [emitChange, removeMentionNode]
192
+ );
193
+ const buildMentionNode = (0, import_react.useCallback)(
194
+ (mention) => {
195
+ const span = document.createElement("span");
196
+ span.setAttribute("contenteditable", "false");
197
+ span.setAttribute(MENTION_ATTR, mention.id);
198
+ span.dataset.xadkInlineMentionId = mention.id;
199
+ span.dataset.xadkInlineMentionType = mention.type;
200
+ span.className = styles.inlineTag;
201
+ if (renderMention) {
202
+ const root = (0, import_client.createRoot)(span);
203
+ tagRootMapRef.current.set(span, root);
204
+ root.render(
205
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: renderMention(mention, {
206
+ onRemove: () => removeMentionById(mention.id)
207
+ }) })
208
+ );
209
+ } else {
210
+ const label = document.createElement("span");
211
+ label.className = "xadk-inline-tag-label";
212
+ label.textContent = mention.displayName || mention.label;
213
+ const close = document.createElement("span");
214
+ close.className = "xadk-inline-tag-close";
215
+ close.innerHTML = "×";
216
+ close.onclick = (event) => {
217
+ event.preventDefault();
218
+ event.stopPropagation();
219
+ removeMentionById(mention.id);
220
+ };
221
+ span.append(label, close);
222
+ }
223
+ return span;
224
+ },
225
+ [removeMentionById, renderMention, styles.inlineTag]
226
+ );
227
+ const renderPartsToEditor = (0, import_react.useCallback)(
228
+ (parts) => {
229
+ const editor = editorRef.current;
230
+ if (!editor)
231
+ return;
232
+ editor.querySelectorAll(`[${MENTION_ATTR}]`).forEach((node) => {
233
+ var _a;
234
+ (_a = tagRootMapRef.current.get(node)) == null ? void 0 : _a.unmount();
235
+ });
236
+ editor.innerHTML = "";
237
+ parts.forEach((part) => {
238
+ if (part.type === "text") {
239
+ if (part.text)
240
+ editor.appendChild(createTextNode(part.text));
241
+ return;
242
+ }
243
+ const mention = part.type === "mention" ? part.mention : part.tag;
244
+ editor.append(buildMentionNode(mention), createTextNode(CARET_TEXT));
245
+ });
246
+ },
247
+ [buildMentionNode]
248
+ );
249
+ const setCursorAtTextEnd = (0, import_react.useCallback)((node) => {
250
+ var _a;
251
+ const range = document.createRange();
252
+ const selection = window.getSelection();
253
+ range.setStart(node, ((_a = node.textContent) == null ? void 0 : _a.length) || 0);
254
+ range.collapse(true);
255
+ selection == null ? void 0 : selection.removeAllRanges();
256
+ selection == null ? void 0 : selection.addRange(range);
257
+ savedRangeRef.current = range.cloneRange();
258
+ }, []);
259
+ const saveSelectionRange = (0, import_react.useCallback)(() => {
260
+ const editor = editorRef.current;
261
+ const selection = window.getSelection();
262
+ if (!editor || !selection || selection.rangeCount === 0)
263
+ return;
264
+ const range = selection.getRangeAt(0);
265
+ if (!editor.contains(range.startContainer) || !editor.contains(range.endContainer)) {
266
+ return;
267
+ }
268
+ savedRangeRef.current = range.cloneRange();
269
+ }, []);
270
+ const restoreCursorAfterInsert = (0, import_react.useCallback)(
271
+ (node) => {
272
+ const editor = editorRef.current;
273
+ if (!editor || !editor.contains(node))
274
+ return;
275
+ editor.focus();
276
+ setCursorAtTextEnd(node);
277
+ },
278
+ [setCursorAtTextEnd]
279
+ );
280
+ const isMentionNode = (node) => node instanceof HTMLElement && node.hasAttribute(MENTION_ATTR);
281
+ const isOnlyCaretText = (text) => normalizeText(text) === "";
282
+ const getMentionBeforeRange = (range) => {
283
+ const container = range.startContainer;
284
+ if (container.nodeType === Node.TEXT_NODE) {
285
+ const text = container.textContent || "";
286
+ const beforeCursor = text.slice(0, range.startOffset);
287
+ if (isOnlyCaretText(beforeCursor) && isMentionNode(container.previousSibling)) {
288
+ return container.previousSibling;
289
+ }
290
+ }
291
+ if (container instanceof HTMLElement) {
292
+ const previous = container.childNodes[range.startOffset - 1];
293
+ if (isMentionNode(previous))
294
+ return previous;
295
+ if ((previous == null ? void 0 : previous.nodeType) === Node.TEXT_NODE && isOnlyCaretText(previous.textContent || "") && isMentionNode(previous.previousSibling)) {
296
+ return previous.previousSibling;
297
+ }
298
+ }
299
+ return null;
300
+ };
301
+ const getMentionAfterRange = (range) => {
302
+ const container = range.startContainer;
303
+ if (container.nodeType === Node.TEXT_NODE) {
304
+ const text = container.textContent || "";
305
+ const afterCursor = text.slice(range.startOffset);
306
+ if (isOnlyCaretText(afterCursor) && isMentionNode(container.nextSibling)) {
307
+ return container.nextSibling;
308
+ }
309
+ }
310
+ if (container instanceof HTMLElement) {
311
+ const next = container.childNodes[range.startOffset];
312
+ if (isMentionNode(next))
313
+ return next;
314
+ if ((next == null ? void 0 : next.nodeType) === Node.TEXT_NODE && isOnlyCaretText(next.textContent || "") && isMentionNode(next.nextSibling)) {
315
+ return next.nextSibling;
316
+ }
317
+ }
318
+ return null;
319
+ };
320
+ const moveCursorAroundMention = (0, import_react.useCallback)(
321
+ (mention, direction) => {
322
+ var _a, _b;
323
+ const editor = editorRef.current;
324
+ const selection = window.getSelection();
325
+ if (!editor || !selection || !editor.contains(mention))
326
+ return;
327
+ const range = document.createRange();
328
+ if (direction === "before") {
329
+ const previous = mention.previousSibling;
330
+ if ((previous == null ? void 0 : previous.nodeType) === Node.TEXT_NODE) {
331
+ range.setStart(previous, ((_a = previous.textContent) == null ? void 0 : _a.length) || 0);
332
+ } else {
333
+ range.setStartBefore(mention);
334
+ }
335
+ } else {
336
+ const next = mention.nextSibling;
337
+ if ((next == null ? void 0 : next.nodeType) === Node.TEXT_NODE) {
338
+ const leadingCaretLength = ((_b = (next.textContent || "").match(/^\u200B+/)) == null ? void 0 : _b[0].length) || 0;
339
+ range.setStart(next, leadingCaretLength);
340
+ } else {
341
+ range.setStartAfter(mention);
342
+ }
343
+ }
344
+ range.collapse(true);
345
+ selection.removeAllRanges();
346
+ selection.addRange(range);
347
+ savedRangeRef.current = range.cloneRange();
348
+ },
349
+ []
350
+ );
351
+ const getOffsetInEditor = (0, import_react.useCallback)(() => {
352
+ const editor = editorRef.current;
353
+ const selection = window.getSelection();
354
+ if (!editor || !selection || selection.rangeCount === 0)
355
+ return 0;
356
+ const range = selection.getRangeAt(0);
357
+ let offset = 0;
358
+ let found = false;
359
+ const visit = (node) => {
360
+ if (found)
361
+ return;
362
+ if (node === range.startContainer) {
363
+ if (node.nodeType === Node.TEXT_NODE) {
364
+ offset += getPlainLength(
365
+ (node.textContent || "").slice(0, range.startOffset)
366
+ );
367
+ }
368
+ found = true;
369
+ return;
370
+ }
371
+ if (node instanceof HTMLElement && node.hasAttribute(MENTION_ATTR))
372
+ return;
373
+ if (node.nodeType === Node.TEXT_NODE) {
374
+ offset += getPlainLength(node.textContent || "");
375
+ return;
376
+ }
377
+ node.childNodes.forEach(visit);
378
+ };
379
+ editor.childNodes.forEach(visit);
380
+ return offset;
381
+ }, []);
382
+ const getNodeIndex = (node) => {
383
+ let index = 0;
384
+ let current = node;
385
+ while (current.previousSibling) {
386
+ index += 1;
387
+ current = current.previousSibling;
388
+ }
389
+ return index;
390
+ };
391
+ const replaceTextRange = (0, import_react.useCallback)((start, end) => {
392
+ const editor = editorRef.current;
393
+ if (!editor)
394
+ return null;
395
+ let offset = 0;
396
+ let insertRange = null;
397
+ const nodes = Array.from(editor.childNodes);
398
+ nodes.forEach((node) => {
399
+ if (node.nodeType !== Node.TEXT_NODE)
400
+ return;
401
+ const text = node.textContent || "";
402
+ const nodeStart = offset;
403
+ const plainLength = getPlainLength(text);
404
+ const nodeEnd = offset + plainLength;
405
+ offset = nodeEnd;
406
+ if (nodeEnd <= start || nodeStart >= end)
407
+ return;
408
+ const rawStart = toRawOffset(text, Math.max(0, start - nodeStart));
409
+ const rawEnd = toRawOffset(text, Math.max(0, end - nodeStart));
410
+ const keepLeft = text.slice(0, rawStart);
411
+ const keepRight = text.slice(rawEnd);
412
+ const parent = node.parentNode;
413
+ const nodeIndex = getNodeIndex(node);
414
+ node.textContent = `${keepLeft}${keepRight}`;
415
+ if (!insertRange) {
416
+ insertRange = document.createRange();
417
+ if (node.textContent) {
418
+ insertRange.setStart(node, rawStart);
419
+ } else if (parent) {
420
+ insertRange.setStart(parent, nodeIndex);
421
+ }
422
+ insertRange.collapse(true);
423
+ }
424
+ if (!node.textContent)
425
+ node.remove();
426
+ });
427
+ return insertRange;
428
+ }, []);
429
+ const cleanupCaretTextNodes = (0, import_react.useCallback)(() => {
430
+ const editor = editorRef.current;
431
+ if (!editor)
432
+ return;
433
+ Array.from(editor.childNodes).forEach((node) => {
434
+ if (node.nodeType !== Node.TEXT_NODE)
435
+ return;
436
+ const text = node.textContent || "";
437
+ if (!text) {
438
+ node.remove();
439
+ return;
440
+ }
441
+ if (text && normalizeText(text) === "") {
442
+ node.textContent = CARET_TEXT;
443
+ }
444
+ });
445
+ }, []);
446
+ const cleanupEmptyStructuralNodes = (0, import_react.useCallback)(() => {
447
+ const editor = editorRef.current;
448
+ const selection = window.getSelection();
449
+ if (!editor)
450
+ return;
451
+ Array.from(editor.children).forEach((node) => {
452
+ if (node.hasAttribute(MENTION_ATTR))
453
+ return;
454
+ if (node.querySelector(`[${MENTION_ATTR}]`))
455
+ return;
456
+ if (normalizeText(node.textContent || ""))
457
+ return;
458
+ const range = (selection == null ? void 0 : selection.rangeCount) ? selection.getRangeAt(0) : null;
459
+ const nodeIndex = getNodeIndex(node);
460
+ const containsCursor = Boolean(
461
+ range && range.collapsed && (range.startContainer === node || node.contains(range.startContainer) || range.startContainer === editor && (range.startOffset === nodeIndex || range.startOffset === nodeIndex + 1))
462
+ );
463
+ if (containsCursor && selection) {
464
+ const caretNode = createTextNode(CARET_TEXT);
465
+ node.replaceWith(caretNode);
466
+ const nextRange = document.createRange();
467
+ nextRange.setStart(caretNode, CARET_TEXT.length);
468
+ nextRange.collapse(true);
469
+ selection.removeAllRanges();
470
+ selection.addRange(nextRange);
471
+ savedRangeRef.current = nextRange.cloneRange();
472
+ return;
473
+ }
474
+ node.remove();
475
+ });
476
+ }, []);
477
+ (0, import_react.useEffect)(() => {
478
+ const editor = editorRef.current;
479
+ if (!editor)
480
+ return;
481
+ const handleNativeDelete = (event) => {
482
+ if (!(event instanceof InputEvent))
483
+ return;
484
+ if (!event.inputType.startsWith("delete"))
485
+ return;
486
+ if (structuralCleanupFrameRef.current !== null) {
487
+ window.cancelAnimationFrame(structuralCleanupFrameRef.current);
488
+ }
489
+ structuralCleanupFrameRef.current = window.requestAnimationFrame(() => {
490
+ structuralCleanupFrameRef.current = null;
491
+ cleanupEmptyStructuralNodes();
492
+ cleanupCaretTextNodes();
493
+ });
494
+ };
495
+ editor.addEventListener("input", handleNativeDelete);
496
+ return () => editor.removeEventListener("input", handleNativeDelete);
497
+ }, [cleanupCaretTextNodes, cleanupEmptyStructuralNodes]);
498
+ const insertMention = (0, import_react.useCallback)(
499
+ (mention, replace) => {
500
+ const editor = editorRef.current;
501
+ if (!editor)
502
+ return;
503
+ const selectionBeforeFocus = window.getSelection();
504
+ const activeRangeBeforeFocus = (selectionBeforeFocus == null ? void 0 : selectionBeforeFocus.rangeCount) && editor.contains(selectionBeforeFocus.getRangeAt(0).startContainer) ? selectionBeforeFocus.getRangeAt(0).cloneRange() : null;
505
+ const savedRangeBeforeFocus = savedRangeRef.current && editor.contains(savedRangeRef.current.startContainer) ? savedRangeRef.current.cloneRange() : null;
506
+ const rangeBeforeFocus = activeRangeBeforeFocus || savedRangeBeforeFocus;
507
+ editor.focus();
508
+ latestMentionsRef.current = [
509
+ ...latestMentionsRef.current.filter((item) => item.id !== mention.id),
510
+ mention
511
+ ];
512
+ let insertRange = null;
513
+ if (replace) {
514
+ insertRange = replaceTextRange(replace.start, replace.end);
515
+ cleanupCaretTextNodes();
516
+ }
517
+ const isSemanticallyEmpty = !getPlainText() && !editor.querySelector(`[${MENTION_ATTR}]`);
518
+ if (isSemanticallyEmpty) {
519
+ editor.innerHTML = "";
520
+ savedRangeRef.current = null;
521
+ insertRange = null;
522
+ }
523
+ const mentionNode = buildMentionNode(mention);
524
+ const caretNode = createTextNode(CARET_TEXT);
525
+ const range = insertRange || rangeBeforeFocus;
526
+ if (range && editor.contains(range.startContainer)) {
527
+ const fragment = document.createDocumentFragment();
528
+ fragment.append(mentionNode, caretNode);
529
+ range.insertNode(fragment);
530
+ } else {
531
+ editor.append(mentionNode, caretNode);
532
+ }
533
+ cleanupCaretTextNodes();
534
+ lastInsertedCaretRef.current = caretNode;
535
+ setCursorAtTextEnd(caretNode);
536
+ emitChange();
537
+ window.requestAnimationFrame(() => {
538
+ if (lastInsertedCaretRef.current === caretNode) {
539
+ restoreCursorAfterInsert(caretNode);
540
+ }
541
+ });
542
+ },
543
+ [
544
+ buildMentionNode,
545
+ cleanupCaretTextNodes,
546
+ emitChange,
547
+ getPlainText,
548
+ replaceTextRange,
549
+ restoreCursorAfterInsert,
550
+ setCursorAtTextEnd
551
+ ]
552
+ );
553
+ (0, import_react.useEffect)(() => {
554
+ document.addEventListener("selectionchange", saveSelectionRange);
555
+ return () => {
556
+ document.removeEventListener("selectionchange", saveSelectionRange);
557
+ };
558
+ }, [saveSelectionRange]);
559
+ (0, import_react.useEffect)(
560
+ () => () => {
561
+ if (structuralCleanupFrameRef.current !== null) {
562
+ window.cancelAnimationFrame(structuralCleanupFrameRef.current);
563
+ }
564
+ },
565
+ []
566
+ );
567
+ (0, import_react.useImperativeHandle)(
568
+ ref,
569
+ () => ({
570
+ focus: () => {
571
+ var _a;
572
+ return (_a = editorRef.current) == null ? void 0 : _a.focus();
573
+ },
574
+ getText: getPlainText,
575
+ getParts,
576
+ getCursorOffset: getOffsetInEditor,
577
+ insertMention,
578
+ insertTag: insertMention
579
+ }),
580
+ [getOffsetInEditor, getParts, getPlainText, insertMention]
581
+ );
582
+ useIsomorphicLayoutEffect(() => {
583
+ const editor = editorRef.current;
584
+ if (!editor)
585
+ return;
586
+ if (!defaultInputPartsAppliedRef.current && (defaultInputParts == null ? void 0 : defaultInputParts.length) && !value && mentions.length === 0) {
587
+ defaultInputPartsAppliedRef.current = true;
588
+ skipEmptyCleanupOnceRef.current = true;
589
+ renderPartsToEditor(defaultInputParts);
590
+ emitChange();
591
+ return;
592
+ }
593
+ const incomingMentionIds = mentions.map((mention) => mention.id).join("|");
594
+ const lastEmittedState = lastEmittedStateRef.current;
595
+ const isInternalControlledEcho = value === lastEmittedState.value && incomingMentionIds === lastEmittedState.mentionIds;
596
+ if (isInternalControlledEcho && editor.childNodes.length > 0)
597
+ return;
598
+ renderPartsToEditor([
599
+ ...value ? [{ type: "text", text: value }] : [],
600
+ ...mentions.map((mention) => ({ type: "mention", mention }))
601
+ ]);
602
+ setHasContent(Boolean(value || mentions.length));
603
+ const lastTextNode = Array.from(editor.childNodes).reverse().find((node) => node.nodeType === Node.TEXT_NODE);
604
+ if (document.activeElement === editor && lastTextNode) {
605
+ setCursorAtTextEnd(lastTextNode);
606
+ }
607
+ }, [
608
+ defaultInputParts,
609
+ emitChange,
610
+ renderPartsToEditor,
611
+ setCursorAtTextEnd,
612
+ mentions,
613
+ value
614
+ ]);
615
+ useIsomorphicLayoutEffect(() => {
616
+ const editor = editorRef.current;
617
+ if (!editor)
618
+ return;
619
+ if (skipEmptyCleanupOnceRef.current) {
620
+ skipEmptyCleanupOnceRef.current = false;
621
+ return;
622
+ }
623
+ if (!value && mentions.length === 0 && editor.childNodes.length > 0) {
624
+ editor.querySelectorAll(`[${MENTION_ATTR}]`).forEach((node) => {
625
+ var _a;
626
+ (_a = tagRootMapRef.current.get(node)) == null ? void 0 : _a.unmount();
627
+ });
628
+ editor.innerHTML = "";
629
+ }
630
+ }, [mentions.length, value]);
631
+ const handleInput = () => {
632
+ if (!composingRef.current) {
633
+ cleanupEmptyStructuralNodes();
634
+ cleanupCaretTextNodes();
635
+ emitChange();
636
+ if (structuralCleanupFrameRef.current !== null) {
637
+ window.cancelAnimationFrame(structuralCleanupFrameRef.current);
638
+ }
639
+ structuralCleanupFrameRef.current = window.requestAnimationFrame(() => {
640
+ structuralCleanupFrameRef.current = null;
641
+ cleanupEmptyStructuralNodes();
642
+ cleanupCaretTextNodes();
643
+ });
644
+ }
645
+ };
646
+ const handlePaste = (event) => {
647
+ event.preventDefault();
648
+ const editor = editorRef.current;
649
+ if (!editor)
650
+ return;
651
+ const text = event.clipboardData.getData("text/plain");
652
+ if (!text)
653
+ return;
654
+ const parts = (0, import_markdownResource.parseMarkdownResourceLinksAsParts)(text);
655
+ const selection = window.getSelection();
656
+ const range = (selection == null ? void 0 : selection.rangeCount) && editor.contains(selection.getRangeAt(0).startContainer) ? selection.getRangeAt(0) : null;
657
+ const fragment = document.createDocumentFragment();
658
+ let lastTextNode = null;
659
+ for (const part of parts) {
660
+ if (part.type === "text") {
661
+ lastTextNode = createTextNode(part.text);
662
+ fragment.append(lastTextNode);
663
+ continue;
664
+ }
665
+ latestMentionsRef.current = [
666
+ ...latestMentionsRef.current,
667
+ part.mention
668
+ ];
669
+ fragment.append(buildMentionNode(part.mention));
670
+ lastTextNode = createTextNode(CARET_TEXT);
671
+ fragment.append(lastTextNode);
672
+ }
673
+ if (range) {
674
+ range.deleteContents();
675
+ range.insertNode(fragment);
676
+ } else {
677
+ editor.append(fragment);
678
+ }
679
+ cleanupCaretTextNodes();
680
+ if (lastTextNode)
681
+ setCursorAtTextEnd(lastTextNode);
682
+ emitChange();
683
+ };
684
+ const handleKeyDown = (event) => {
685
+ if (event.key === "ArrowLeft" || event.key === "ArrowRight") {
686
+ const selection = window.getSelection();
687
+ if (selection == null ? void 0 : selection.rangeCount) {
688
+ const range = selection.getRangeAt(0);
689
+ if (range.collapsed) {
690
+ const targetMention = event.key === "ArrowLeft" ? getMentionBeforeRange(range) : getMentionAfterRange(range);
691
+ if (targetMention) {
692
+ event.preventDefault();
693
+ moveCursorAroundMention(
694
+ targetMention,
695
+ event.key === "ArrowLeft" ? "before" : "after"
696
+ );
697
+ return;
698
+ }
699
+ }
700
+ }
701
+ }
702
+ if (event.key === "Backspace" || event.key === "Delete") {
703
+ const selection = window.getSelection();
704
+ if (selection == null ? void 0 : selection.rangeCount) {
705
+ const range = selection.getRangeAt(0);
706
+ if (range.collapsed) {
707
+ const targetMention = event.key === "Backspace" ? getMentionBeforeRange(range) : getMentionAfterRange(range);
708
+ if (targetMention) {
709
+ event.preventDefault();
710
+ removeMentionById(
711
+ targetMention.dataset.xadkInlineMentionId || ""
712
+ );
713
+ return;
714
+ }
715
+ }
716
+ }
717
+ }
718
+ onKeyDown == null ? void 0 : onKeyDown(event);
719
+ };
720
+ const showPlaceholder = !hasContent;
721
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.inlineInputWrapper, children: [
722
+ showPlaceholder && placeholder && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.inlinePlaceholder, children: placeholder }),
723
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
724
+ "div",
725
+ {
726
+ ref: editorRef,
727
+ className: styles.inlineInput,
728
+ contentEditable: !disabled,
729
+ suppressContentEditableWarning: true,
730
+ role: "textbox",
731
+ "aria-multiline": "true",
732
+ onInput: handleInput,
733
+ onPaste: handlePaste,
734
+ onKeyDown: handleKeyDown,
735
+ onKeyUp: (event) => {
736
+ cleanupEmptyStructuralNodes();
737
+ cleanupCaretTextNodes();
738
+ saveSelectionRange();
739
+ onKeyUp == null ? void 0 : onKeyUp(event);
740
+ },
741
+ onMouseUp: saveSelectionRange,
742
+ onFocus: saveSelectionRange,
743
+ onCompositionStart: () => {
744
+ composingRef.current = true;
745
+ setHasContent(true);
746
+ },
747
+ onCompositionEnd: () => {
748
+ composingRef.current = false;
749
+ emitChange();
750
+ },
751
+ "data-cursor-offset": getOffsetInEditor()
752
+ }
753
+ )
754
+ ] });
755
+ }
756
+ );
757
+ InlineTagInput.displayName = "InlineTagInput";
758
+ var InlineTagInput_default = InlineTagInput;
759
+ //# sourceMappingURL=InlineTagInput.js.map