dishui 0.0.91 → 0.0.101

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 (156) hide show
  1. package/dist/.release-verified.json +6 -0
  2. package/dist/ai.js +24 -0
  3. package/dist/components/Card/Metric2.js +11 -11
  4. package/dist/components/Card/Metric2.js.map +1 -1
  5. package/dist/components/Card/Ticket.d.ts +52 -0
  6. package/dist/components/Card/Ticket2.js +218 -0
  7. package/dist/components/Card/Ticket2.js.map +1 -0
  8. package/dist/components/Card/index.d.ts +32 -0
  9. package/dist/components/Card/index.js +211 -203
  10. package/dist/components/Card/index.js.map +1 -1
  11. package/dist/components/GroupButton/index.js +4 -4
  12. package/dist/components/GroupButton/index.js.map +1 -1
  13. package/dist/components/GroupedTable/index.js +10 -10
  14. package/dist/components/GroupedTable/index.js.map +1 -1
  15. package/dist/components/NavigationList/index.js +9 -9
  16. package/dist/components/NavigationList/index.js.map +1 -1
  17. package/dist/components/Section/index.js +11 -11
  18. package/dist/components/Section/index.js.map +1 -1
  19. package/dist/components/Skeleton/index.js +1 -1
  20. package/dist/components/Skeleton/index.js.map +1 -1
  21. package/dist/components/Table/index.js +6 -6
  22. package/dist/components/Table/index.js.map +1 -1
  23. package/dist/components/ai/AgentChat/index.d.ts +54 -0
  24. package/dist/components/ai/AgentChat/index.js +176 -0
  25. package/dist/components/ai/AgentChat/index.js.map +1 -0
  26. package/dist/components/ai/AgentRunCard/index.d.ts +38 -0
  27. package/dist/components/ai/AgentRunCard/index.js +100 -0
  28. package/dist/components/ai/AgentRunCard/index.js.map +1 -0
  29. package/dist/components/ai/AgentScreen/index.d.ts +50 -0
  30. package/dist/components/ai/AgentScreen/index.js +233 -0
  31. package/dist/components/ai/AgentScreen/index.js.map +1 -0
  32. package/dist/components/ai/ApprovalCard/index.d.ts +26 -0
  33. package/dist/components/ai/ApprovalCard/index.js +89 -0
  34. package/dist/components/ai/ApprovalCard/index.js.map +1 -0
  35. package/dist/components/ai/CodeView/index.d.ts +30 -0
  36. package/dist/components/ai/CodeView/index.js +149 -0
  37. package/dist/components/ai/CodeView/index.js.map +1 -0
  38. package/dist/components/ai/CommandSearch/index.d.ts +39 -0
  39. package/dist/components/ai/CommandSearch/index.js +217 -0
  40. package/dist/components/ai/CommandSearch/index.js.map +1 -0
  41. package/dist/components/ai/ContextCards/index.d.ts +42 -0
  42. package/dist/components/ai/ContextCards/index.js +106 -0
  43. package/dist/components/ai/ContextCards/index.js.map +1 -0
  44. package/dist/components/ai/DiffTable/index.d.ts +70 -0
  45. package/dist/components/ai/DiffTable/index.js +235 -0
  46. package/dist/components/ai/DiffTable/index.js.map +1 -0
  47. package/dist/components/ai/FilterTable/index.d.ts +35 -0
  48. package/dist/components/ai/FilterTable/index.js +86 -0
  49. package/dist/components/ai/FilterTable/index.js.map +1 -0
  50. package/dist/components/ai/FineTuneCard/index.d.ts +24 -0
  51. package/dist/components/ai/FineTuneCard/index.js +75 -0
  52. package/dist/components/ai/FineTuneCard/index.js.map +1 -0
  53. package/dist/components/ai/InsightCards/index.d.ts +23 -0
  54. package/dist/components/ai/InsightCards/index.js +64 -0
  55. package/dist/components/ai/InsightCards/index.js.map +1 -0
  56. package/dist/components/ai/IssueCard/index.d.ts +39 -0
  57. package/dist/components/ai/IssueCard/index.js +78 -0
  58. package/dist/components/ai/IssueCard/index.js.map +1 -0
  59. package/dist/components/ai/LoadingState/index.d.ts +22 -0
  60. package/dist/components/ai/LoadingState/index.js +80 -0
  61. package/dist/components/ai/LoadingState/index.js.map +1 -0
  62. package/dist/components/ai/PromptBar/index.d.ts +26 -0
  63. package/dist/components/ai/PromptBar/index.js +117 -0
  64. package/dist/components/ai/PromptBar/index.js.map +1 -0
  65. package/dist/components/ai/RecommendationCard/index.d.ts +44 -0
  66. package/dist/components/ai/RecommendationCard/index.js +142 -0
  67. package/dist/components/ai/RecommendationCard/index.js.map +1 -0
  68. package/dist/components/ai/RecordsTable/index.d.ts +65 -0
  69. package/dist/components/ai/RecordsTable/index.js +334 -0
  70. package/dist/components/ai/RecordsTable/index.js.map +1 -0
  71. package/dist/components/ai/SelectionActions/index.d.ts +19 -0
  72. package/dist/components/ai/SelectionActions/index.js +40 -0
  73. package/dist/components/ai/SelectionActions/index.js.map +1 -0
  74. package/dist/components/ai/StateFlow/index.d.ts +24 -0
  75. package/dist/components/ai/StateFlow/index.js +50 -0
  76. package/dist/components/ai/StateFlow/index.js.map +1 -0
  77. package/dist/components/ai/StreamingText/index.d.ts +44 -0
  78. package/dist/components/ai/StreamingText/index.js +211 -0
  79. package/dist/components/ai/StreamingText/index.js.map +1 -0
  80. package/dist/components/ai/TaskRows/index.d.ts +53 -0
  81. package/dist/components/ai/TaskRows/index.js +186 -0
  82. package/dist/components/ai/TaskRows/index.js.map +1 -0
  83. package/dist/components/ai/Thinking/index.d.ts +47 -0
  84. package/dist/components/ai/Thinking/index.js +197 -0
  85. package/dist/components/ai/Thinking/index.js.map +1 -0
  86. package/dist/components/ai/ToolChips/index.d.ts +21 -0
  87. package/dist/components/ai/ToolChips/index.js +63 -0
  88. package/dist/components/ai/ToolChips/index.js.map +1 -0
  89. package/dist/components/ai/index.d.ts +54 -0
  90. package/dist/components/ai/shared.d.ts +13 -0
  91. package/dist/components/ai/shared.js +25 -0
  92. package/dist/components/ai/shared.js.map +1 -0
  93. package/dist/components/pro/DataTable/rowDetailExtension.js +1 -1
  94. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  95. package/dist/components/pro/Flow/constants.js +3 -3
  96. package/dist/components/pro/Flow/constants.js.map +1 -1
  97. package/dist/components/pro/Flow/nodes/shapes.js +3 -3
  98. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  99. package/dist/components/pro/Flow/utils/themeColor.d.ts +2 -2
  100. package/dist/components/pro/Flow/utils/themeColor.js +2 -2
  101. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  102. package/dist/components/pro/Kanban/Kanban.d.ts +3 -0
  103. package/dist/components/pro/Kanban/Kanban.js +339 -0
  104. package/dist/components/pro/Kanban/Kanban.js.map +1 -0
  105. package/dist/components/pro/Kanban/Swimlanes.d.ts +3 -0
  106. package/dist/components/pro/Kanban/Swimlanes.js +60 -0
  107. package/dist/components/pro/Kanban/Swimlanes.js.map +1 -0
  108. package/dist/components/pro/Kanban/index.d.ts +5 -0
  109. package/dist/components/pro/Kanban/types.d.ts +103 -0
  110. package/dist/components/pro/Kanban/useKanbanDrag.d.ts +17 -0
  111. package/dist/components/pro/Kanban/useKanbanDrag.js +69 -0
  112. package/dist/components/pro/Kanban/useKanbanDrag.js.map +1 -0
  113. package/dist/components/pro/Kanban/utils.d.ts +13 -0
  114. package/dist/components/pro/Kanban/utils.js +48 -0
  115. package/dist/components/pro/Kanban/utils.js.map +1 -0
  116. package/dist/components/pro/RichTextEditor/AIRewrite.js +158 -127
  117. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  118. package/dist/components/pro/RichTextEditor/BlockHandle.d.ts +2 -0
  119. package/dist/components/pro/RichTextEditor/BlockHandle.js +156 -115
  120. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  121. package/dist/components/pro/RichTextEditor/RichTextEditor.js +136 -159
  122. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  123. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -41
  124. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  125. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +59 -53
  126. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  127. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +48 -44
  128. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  129. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +67 -63
  130. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  131. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.d.ts +1 -0
  132. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +182 -129
  133. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  134. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.d.ts +1 -0
  135. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +3 -3
  136. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  137. package/dist/components/pro/RichTextEditor/Toolbar/useAnchoredDropdown.d.ts +3 -0
  138. package/dist/components/pro/RichTextEditor/Toolbar/useAnchoredDropdown.js +31 -0
  139. package/dist/components/pro/RichTextEditor/Toolbar/useAnchoredDropdown.js.map +1 -0
  140. package/dist/components/pro/RichTextEditor/index.d.ts +1 -1
  141. package/dist/components/pro/RichTextEditor/types.d.ts +78 -11
  142. package/dist/components/pro/RichTextEditor/types.js +11 -0
  143. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  144. package/dist/dishui.css +1 -1
  145. package/dist/index-nostyled.d.ts +1 -1
  146. package/dist/index.d.ts +6 -3
  147. package/dist/index.js +134 -107
  148. package/dist/kanban.js +5 -0
  149. package/dist/layouts/Sidebar.d.ts +16 -0
  150. package/dist/layouts/Sidebar.js +85 -52
  151. package/dist/layouts/Sidebar.js.map +1 -1
  152. package/dist/utils/i18n.js +20 -0
  153. package/dist/utils/i18n.js.map +1 -1
  154. package/dist/utils/menu.js +1 -1
  155. package/dist/utils/menu.js.map +1 -1
  156. package/package.json +14 -3
@@ -2,21 +2,21 @@ import { useCallback as e, useEffect as t, useLayoutEffect as n, useRef as r, us
2
2
  import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
3
3
  import { NodeSelection as c, Selection as l } from "@tiptap/pm/state";
4
4
  //#region src/components/pro/RichTextEditor/BlockHandle.tsx
5
- var u = ({ editor: u }) => {
6
- let [d, f] = i(!1), [p, m] = i(0), [h, g] = i(!1), [_, v] = i("add"), [y, b] = i({
5
+ var u = ({ editor: u, persistent: d = !1 }) => {
6
+ let [f, p] = i(!1), [m, h] = i(0), [g, _] = i(!1), [v, y] = i("add"), [b, x] = i({
7
7
  left: 4,
8
8
  top: 0
9
- }), x = r(null), S = r(null), C = r(!1), [w, T] = i(-1), [E, D] = i(!1), [O, k] = i(null), A = r(null), j = r(null), M = r(null), N = r(!1), P = e(() => {
10
- M.current &&= (clearTimeout(M.current), null);
11
- }, []), F = e(() => {
12
- P(), M.current = setTimeout(() => {
13
- !N.current && !h && !E && !j.current?.contains(document.activeElement) && !A.current?.contains(document.activeElement) && f(!1);
9
+ }), S = r(null), C = r(null), w = r(!1), [T, E] = i(-1), [D, O] = i(!1), [k, A] = i(null), j = r(null), M = r(null), N = r(null), P = r(!1), F = e(() => {
10
+ N.current &&= (clearTimeout(N.current), null);
11
+ }, []), I = e(() => {
12
+ F(), N.current = setTimeout(() => {
13
+ !P.current && !g && !D && !M.current?.contains(document.activeElement) && !j.current?.contains(document.activeElement) && p(!1);
14
14
  }, 200);
15
15
  }, [
16
- P,
17
- h,
18
- E
19
- ]), I = e(() => {
16
+ F,
17
+ g,
18
+ D
19
+ ]), L = e(() => {
20
20
  if (u.isDestroyed) return [];
21
21
  let e = u.view.dom.closest(".rte-editor-wrapper");
22
22
  if (!e) return [];
@@ -33,76 +33,102 @@ var u = ({ editor: u }) => {
33
33
  });
34
34
  }
35
35
  }), r;
36
- }, [u]), L = e((e) => {
36
+ }, [u]), R = e((e) => {
37
37
  let t = u.view.dom.closest(".rte-editor-wrapper");
38
38
  if (!t) return -1;
39
39
  let n = e - t.getBoundingClientRect().top - t.clientTop + t.scrollTop;
40
- return I().findIndex((e) => n >= e.domTop && n <= e.domBottom);
41
- }, [u, I]), R = e((e) => {
40
+ return L().findIndex((e) => n >= e.domTop && n <= e.domBottom);
41
+ }, [u, L]), z = e((e) => {
42
+ let t = L(), n = R(e);
43
+ if (n < 0 || n >= t.length) return !1;
44
+ let r = t[n], i = u.state.doc.nodeAt(r.pos);
45
+ return i ? (S.current = {
46
+ pos: r.pos,
47
+ node: i
48
+ }, E(n), h(r.domTop), p(!0), !0) : !1;
49
+ }, [
50
+ u,
51
+ R,
52
+ L
53
+ ]), B = e((e) => {
42
54
  let t = u.view.dom.closest(".rte-editor-wrapper");
43
55
  if (!t) return null;
44
- let n = e - t.getBoundingClientRect().top - t.clientTop + t.scrollTop, r = I();
56
+ let n = e - t.getBoundingClientRect().top - t.clientTop + t.scrollTop, r = L();
45
57
  if (r.length === 0) return null;
46
- let i = 0, a = Infinity, o = r[0].domTop;
58
+ let i = S.current, a = i ? r.findIndex((e) => e.pos === i.pos) : -1, o = r.findIndex((e) => n >= e.domTop && n <= e.domBottom);
59
+ if (a > o && o >= 0) return {
60
+ slotIndex: o,
61
+ indicatorTop: r[o].domTop
62
+ };
63
+ let s = 0, c = Infinity, l = r[0].domTop;
47
64
  for (let e = 0; e <= r.length; e++) {
48
- let t = e < r.length ? r[e].domTop : r[r.length - 1].domBottom, s = Math.abs(n - t);
49
- s < a && (a = s, i = e, o = t);
65
+ let t = e < r.length ? r[e].domTop : r[r.length - 1].domBottom, i = Math.abs(n - t);
66
+ i < c && (c = i, s = e, l = t);
50
67
  }
51
68
  return {
52
- slotIndex: i,
53
- indicatorTop: o
69
+ slotIndex: s,
70
+ indicatorTop: l
54
71
  };
55
- }, [u, I]);
72
+ }, [u, L]);
56
73
  t(() => {
57
74
  let e = u.view.dom.closest(".rte-editor-wrapper");
58
75
  if (!e) return;
59
76
  let t = (t) => {
60
- if (E || S.current || h || N.current || !u.isEditable || u.view.composing || j.current?.contains(t.target) || A.current?.contains(t.target)) return;
61
- let n = L(t.clientY);
77
+ if (D || C.current || g || P.current || !u.isEditable || u.view.composing || M.current?.contains(t.target) || j.current?.contains(t.target)) return;
78
+ let n = R(t.clientY);
62
79
  if (n < 0) {
63
- F();
80
+ I();
64
81
  return;
65
82
  }
66
- let r = I();
67
- if (n >= r.length) return;
83
+ let r = L();
84
+ if (n >= r.length || !z(t.clientY)) return;
68
85
  let i = Math.max(0, -e.getBoundingClientRect().top);
69
- m(Math.max(r[n].domTop, e.scrollTop + i + 4)), T(n);
70
- let a = u.state.doc.nodeAt(r[n].pos);
71
- x.current = a ? {
72
- pos: r[n].pos,
73
- node: a
74
- } : null, P(), f(!0);
86
+ h(Math.max(r[n].domTop, e.scrollTop + i + 4)), F();
75
87
  }, n = () => {
76
- E || F();
88
+ D || I();
89
+ }, r = (e) => {
90
+ if (!u.isEditable || u.view.composing) return;
91
+ let t = e.touches[0];
92
+ t && z(t.clientY);
77
93
  };
78
- return e.addEventListener("mousemove", t), e.addEventListener("mouseleave", n), () => {
79
- e.removeEventListener("mousemove", t), e.removeEventListener("mouseleave", n), P();
94
+ e.addEventListener("mousemove", t), e.addEventListener("mouseleave", n), e.addEventListener("touchstart", r);
95
+ let i = d ? requestAnimationFrame(() => {
96
+ let e = L(), t = e[0] ? u.state.doc.nodeAt(e[0].pos) : null;
97
+ e[0] && t && (S.current = {
98
+ pos: e[0].pos,
99
+ node: t
100
+ }, E(0), h(e[0].domTop), p(!0));
101
+ }) : null;
102
+ return () => {
103
+ e.removeEventListener("mousemove", t), e.removeEventListener("mouseleave", n), e.removeEventListener("touchstart", r), i !== null && cancelAnimationFrame(i), F();
80
104
  };
81
105
  }, [
82
106
  u,
83
- P,
84
107
  F,
85
- E,
86
- h,
108
+ I,
109
+ D,
110
+ g,
111
+ R,
87
112
  L,
88
- I
113
+ z,
114
+ d
89
115
  ]), t(() => {
90
- if (!h) return;
116
+ if (!g) return;
91
117
  let e = (e) => {
92
- A.current && !A.current.contains(e.target) && !j.current?.contains(e.target) && (N.current = !1, g(!1));
118
+ j.current && !j.current.contains(e.target) && !M.current?.contains(e.target) && (P.current = !1, _(!1));
93
119
  };
94
120
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
95
- }, [h]);
96
- let z = e(() => {
97
- let e = x.current;
121
+ }, [g]);
122
+ let V = e(() => {
123
+ let e = S.current;
98
124
  return u.isDestroyed || !u.isEditable || u.view.composing || !e || u.state.doc.nodeAt(e.pos) !== e.node ? null : e;
99
- }, [u]), B = e((e) => {
100
- let t = z();
125
+ }, [u]), H = e((e) => {
126
+ let t = V();
101
127
  if (!t) return;
102
128
  let n = t.pos + t.node.nodeSize;
103
- u.chain().focus().insertContentAt(n, e).command(({ tr: e }) => (e.setSelection(l.near(e.doc.resolve(n + 1))), !0)).run(), g(!1);
104
- }, [u, z]), V = e((e) => {
105
- let t = z(), n = I();
129
+ u.chain().focus().insertContentAt(n, e).command(({ tr: e }) => (e.setSelection(l.near(e.doc.resolve(n + 1))), !0)).run(), _(!1);
130
+ }, [u, V]), U = e((e) => {
131
+ let t = V(), n = L();
106
132
  if (!t || e < 0 || e > n.length) return;
107
133
  let r = n.findIndex((e) => e.pos === t.pos);
108
134
  if (r < 0 || e === r || e === r + 1) return;
@@ -110,67 +136,72 @@ var u = ({ editor: u }) => {
110
136
  a.insert(o, t.node), a.setSelection(c.isSelectable(t.node) ? c.create(a.doc, o) : l.near(a.doc.resolve(o))), u.view.dispatch(a.scrollIntoView()), u.view.focus();
111
137
  }, [
112
138
  u,
113
- z,
114
- I
139
+ V,
140
+ L
115
141
  ]);
116
142
  t(() => {
117
143
  let e = () => {
118
- S.current?.(), x.current = null, N.current = !1, f(!1), g(!1), P();
144
+ C.current?.(), S.current = null, P.current = !1, p(d), _(!1), F();
119
145
  }, t = ({ transaction: t }) => {
120
146
  (t.docChanged || !u.isEditable) && e();
121
147
  }, n = (t) => {
122
- (!(t.target instanceof Node) || !A.current?.contains(t.target)) && e();
148
+ (!(t.target instanceof Node) || !j.current?.contains(t.target)) && e();
123
149
  };
124
150
  u.on("transaction", t);
125
151
  let r = u.view.dom;
126
152
  return r.addEventListener("compositionstart", e), window.addEventListener("scroll", n, !0), window.addEventListener("resize", e), window.addEventListener("blur", e), () => {
127
- u.off("transaction", t), r.removeEventListener("compositionstart", e), window.removeEventListener("scroll", n, !0), window.removeEventListener("resize", e), window.removeEventListener("blur", e), S.current?.(), P();
153
+ u.off("transaction", t), r.removeEventListener("compositionstart", e), window.removeEventListener("scroll", n, !0), window.removeEventListener("resize", e), window.removeEventListener("blur", e), C.current?.(), F();
128
154
  };
129
- }, [u, P]), n(() => {
130
- if (!h) return;
131
- let e = A.current, t = j.current, n = u.view.dom.closest(".rte-editor-wrapper");
155
+ }, [
156
+ u,
157
+ F,
158
+ d
159
+ ]), n(() => {
160
+ if (!g) return;
161
+ let e = j.current, t = M.current, n = u.view.dom.closest(".rte-editor-wrapper");
132
162
  if (!e || !t || !n) return;
133
163
  let r = n.getBoundingClientRect(), i = t.getBoundingClientRect(), a = Math.max(8, r.left + n.clientLeft), o = Math.min(window.innerWidth - 8, r.right), s = Math.max(8, r.top + n.clientTop), c = Math.min(window.innerHeight - 8, r.bottom) - i.bottom - 4, l = i.top - s - 4, d = c < e.scrollHeight && l > c;
134
- e.style.maxHeight = `${Math.max(0, Math.min(320, d ? l : c))}px`, e.style.minWidth = "0", e.style.width = `${Math.max(0, Math.min(220, o - a))}px`, b({
164
+ e.style.maxHeight = `${Math.max(0, Math.min(320, d ? l : c))}px`, e.style.minWidth = "0", e.style.width = `${Math.max(0, Math.min(220, o - a))}px`, x({
135
165
  left: Math.max(a, Math.min(i.left, o - e.offsetWidth)) - r.left - n.clientLeft + n.scrollLeft,
136
166
  top: (d ? i.top - e.offsetHeight - 4 : i.bottom + 4) - r.top - n.clientTop + n.scrollTop
137
167
  });
138
- let f = _ === "actions" ? "button:not(:disabled)" : "button";
168
+ let f = v === "actions" ? "button:not(:disabled)" : "button";
139
169
  e.querySelector(f)?.focus({ preventScroll: !0 });
140
170
  }, [
141
171
  u,
142
- h,
143
- _
172
+ g,
173
+ v
144
174
  ]);
145
- let H = e((e) => {
146
- if (e.preventDefault(), e.stopPropagation(), e.button !== 0 || !z()) return;
147
- S.current?.(), C.current = !1;
175
+ let W = e((e) => {
176
+ if (e.preventDefault(), e.stopPropagation(), e.button !== 0 || !z(e.clientY) || !V()) return;
177
+ C.current?.(), w.current = !1;
148
178
  let t = e.clientX, n = e.clientY, r = !1, i = (e) => {
149
179
  if (!r && Math.hypot(e.clientX - t, e.clientY - n) < 5) return;
150
- r = !0, C.current = !0, g(!1), D(!0);
151
- let i = R(e.clientY);
152
- i && k({ top: i.indicatorTop });
180
+ r = !0, w.current = !0, _(!1), O(!0);
181
+ let i = B(e.clientY);
182
+ i && A({ top: i.indicatorTop });
153
183
  }, a = () => {
154
- document.removeEventListener("mousemove", i), document.removeEventListener("mouseup", s), document.removeEventListener("keydown", o, !0), S.current = null, D(!1), k(null);
184
+ document.removeEventListener("mousemove", i), document.removeEventListener("mouseup", s), document.removeEventListener("keydown", o, !0), C.current = null, O(!1), A(null);
155
185
  }, o = (e) => {
156
- e.key === "Escape" && (e.preventDefault(), e.stopImmediatePropagation(), C.current = !0, a());
186
+ e.key === "Escape" && (e.preventDefault(), e.stopImmediatePropagation(), w.current = !0, a());
157
187
  }, s = (e) => {
158
188
  if (a(), !r) return;
159
189
  let t = u.view.dom.closest(".rte-editor-wrapper")?.getBoundingClientRect();
160
190
  if (!t || e.clientX < t.left || e.clientX > t.right || e.clientY < t.top || e.clientY > t.bottom) return;
161
- let n = R(e.clientY);
162
- n && V(n.slotIndex);
191
+ let n = B(e.clientY);
192
+ n && U(n.slotIndex);
163
193
  };
164
- S.current = a, document.addEventListener("mousemove", i), document.addEventListener("mouseup", s), document.addEventListener("keydown", o, !0);
194
+ C.current = a, document.addEventListener("mousemove", i), document.addEventListener("mouseup", s), document.addEventListener("keydown", o, !0);
165
195
  }, [
166
196
  u,
167
- z,
168
197
  V,
169
- R
170
- ]), U = { type: "paragraph" }, W = [
198
+ U,
199
+ B,
200
+ z
201
+ ]), G = { type: "paragraph" }, K = [
171
202
  {
172
203
  label: "Text",
173
- content: U
204
+ content: G
174
205
  },
175
206
  ...[
176
207
  1,
@@ -189,7 +220,7 @@ var u = ({ editor: u }) => {
189
220
  type: "bulletList",
190
221
  content: [{
191
222
  type: "listItem",
192
- content: [U]
223
+ content: [G]
193
224
  }]
194
225
  }
195
226
  },
@@ -199,7 +230,7 @@ var u = ({ editor: u }) => {
199
230
  type: "orderedList",
200
231
  content: [{
201
232
  type: "listItem",
202
- content: [U]
233
+ content: [G]
203
234
  }]
204
235
  }
205
236
  },
@@ -210,7 +241,7 @@ var u = ({ editor: u }) => {
210
241
  content: [{
211
242
  type: "taskItem",
212
243
  attrs: { checked: !1 },
213
- content: [U]
244
+ content: [G]
214
245
  }]
215
246
  }
216
247
  },
@@ -218,7 +249,7 @@ var u = ({ editor: u }) => {
218
249
  label: "Blockquote",
219
250
  content: {
220
251
  type: "blockquote",
221
- content: [U]
252
+ content: [G]
222
253
  }
223
254
  },
224
255
  {
@@ -237,48 +268,48 @@ var u = ({ editor: u }) => {
237
268
  type: "tableRow",
238
269
  content: Array.from({ length: 3 }, () => ({
239
270
  type: t === 0 ? "tableHeader" : "tableCell",
240
- content: [U]
271
+ content: [G]
241
272
  }))
242
273
  }))
243
274
  }
244
275
  }
245
- ], G = _ === "add" ? W.filter((e) => u.schema.nodes[e.content.type]) : [
276
+ ], q = v === "add" ? K.filter((e) => u.schema.nodes[e.content.type]) : [
246
277
  { label: "Duplicate" },
247
278
  { label: "Delete" },
248
279
  {
249
280
  label: "Move up",
250
- disabled: w <= 0
281
+ disabled: T <= 0
251
282
  },
252
283
  {
253
284
  label: "Move down",
254
- disabled: w >= u.state.doc.childCount - 1
285
+ disabled: T >= u.state.doc.childCount - 1
255
286
  }
256
- ], K = (e) => {
287
+ ], J = (e) => {
257
288
  if (e.disabled) return;
258
- let t = z();
289
+ let t = V();
259
290
  if (t) {
260
- if (e.content) B(e.content);
291
+ if (e.content) H(e.content);
261
292
  else if (e.label === "Duplicate") {
262
293
  let e = t.pos + t.node.nodeSize, n = u.state.tr.insert(e, t.node);
263
294
  n.setSelection(l.near(n.doc.resolve(e + 1))), u.view.dispatch(n.scrollIntoView()), u.view.focus();
264
295
  } else e.label === "Delete" ? u.chain().focus().deleteRange({
265
296
  from: t.pos,
266
297
  to: t.pos + t.node.nodeSize
267
- }).run() : e.label === "Move up" ? V(w - 1) : e.label === "Move down" && V(w + 2);
298
+ }).run() : e.label === "Move up" ? U(T - 1) : e.label === "Move down" && U(T + 2);
268
299
  }
269
300
  };
270
- return !d && !h && !E ? null : /* @__PURE__ */ s(a, { children: [
301
+ return !f && !g && !D ? null : /* @__PURE__ */ s(a, { children: [
271
302
  /* @__PURE__ */ s("div", {
272
- ref: j,
273
- className: "rte-block-handle",
274
- style: { top: p },
275
- onFocus: P,
276
- onBlur: F,
303
+ ref: M,
304
+ className: `rte-block-handle ${d ? "rte-block-handle--persistent" : ""}`,
305
+ style: { top: m },
306
+ onFocus: F,
307
+ onBlur: I,
277
308
  onMouseEnter: () => {
278
- N.current = !0, P();
309
+ P.current = !0, F();
279
310
  },
280
311
  onMouseLeave: () => {
281
- N.current = !1, E || F();
312
+ P.current = !1, D || I();
282
313
  },
283
314
  onMouseDown: (e) => {
284
315
  e.stopPropagation(), e.preventDefault();
@@ -289,12 +320,19 @@ var u = ({ editor: u }) => {
289
320
  onMouseDown: (e) => {
290
321
  e.stopPropagation(), e.preventDefault();
291
322
  },
323
+ onTouchStart: (e) => {
324
+ e.stopPropagation(), w.current = !0, V() && (y("add"), _(!g || v !== "add"));
325
+ },
292
326
  onClick: (e) => {
293
- e.stopPropagation(), z() && (v("add"), g(!h || _ !== "add"));
327
+ if (e.stopPropagation(), w.current) {
328
+ w.current = !1;
329
+ return;
330
+ }
331
+ V() && (y("add"), _(!g || v !== "add"));
294
332
  },
295
333
  "aria-label": "Add block",
296
334
  "aria-haspopup": "menu",
297
- "aria-expanded": h && _ === "add",
335
+ "aria-expanded": g && v === "add",
298
336
  title: "Add block",
299
337
  children: /* @__PURE__ */ s("svg", {
300
338
  width: "14",
@@ -317,18 +355,21 @@ var u = ({ editor: u }) => {
317
355
  })
318
356
  }), /* @__PURE__ */ o("button", {
319
357
  type: "button",
320
- className: `rte-block-handle__btn rte-block-handle__btn--drag ${E ? "rte-block-handle__btn--dragging" : ""}`,
358
+ className: `rte-block-handle__btn rte-block-handle__btn--drag ${D ? "rte-block-handle__btn--dragging" : ""}`,
321
359
  title: "Drag to reorder or click for block actions",
322
360
  "aria-label": "Block actions",
323
361
  "aria-haspopup": "menu",
324
- "aria-expanded": h && _ === "actions",
325
- onMouseDown: H,
362
+ "aria-expanded": g && v === "actions",
363
+ onMouseDown: W,
364
+ onTouchStart: (e) => {
365
+ e.stopPropagation(), w.current = !0, y("actions"), _(!g || v !== "actions");
366
+ },
326
367
  onClick: (e) => {
327
- if (e.stopPropagation(), C.current) {
328
- C.current = !1;
368
+ if (e.stopPropagation(), w.current) {
369
+ w.current = !1;
329
370
  return;
330
371
  }
331
- z() && (v("actions"), g(!h || _ !== "actions"));
372
+ V() && (y("actions"), _(!g || v !== "actions"));
332
373
  },
333
374
  children: /* @__PURE__ */ s("svg", {
334
375
  width: "14",
@@ -372,20 +413,20 @@ var u = ({ editor: u }) => {
372
413
  })
373
414
  })]
374
415
  }),
375
- h && /* @__PURE__ */ o("div", {
376
- ref: A,
416
+ g && /* @__PURE__ */ o("div", {
417
+ ref: j,
377
418
  className: "rte-block-handle__menu",
378
419
  role: "menu",
379
- "aria-label": _ === "add" ? "Add block" : "Block actions",
420
+ "aria-label": v === "add" ? "Add block" : "Block actions",
380
421
  style: {
381
- ...y,
422
+ ...b,
382
423
  overflowY: "auto"
383
424
  },
384
425
  onMouseEnter: () => {
385
- N.current = !0, P();
426
+ P.current = !0, F();
386
427
  },
387
428
  onMouseLeave: () => {
388
- N.current = !1;
429
+ P.current = !1;
389
430
  },
390
431
  onMouseDown: (e) => {
391
432
  e.stopPropagation(), e.preventDefault();
@@ -393,7 +434,7 @@ var u = ({ editor: u }) => {
393
434
  onKeyDown: (e) => {
394
435
  if (e.nativeEvent.isComposing || e.keyCode === 229) return;
395
436
  if (e.key === "Escape" || e.key === "Tab") {
396
- e.key === "Escape" && e.preventDefault(), e.stopPropagation(), N.current = !1, g(!1), j.current?.querySelector(_ === "add" ? ".rte-block-handle__btn--add" : ".rte-block-handle__btn--drag")?.focus({ preventScroll: !0 });
437
+ e.key === "Escape" && e.preventDefault(), e.stopPropagation(), P.current = !1, _(!1), M.current?.querySelector(v === "add" ? ".rte-block-handle__btn--add" : ".rte-block-handle__btn--drag")?.focus({ preventScroll: !0 });
397
438
  return;
398
439
  }
399
440
  if (![
@@ -408,7 +449,7 @@ var u = ({ editor: u }) => {
408
449
  let i = t[r];
409
450
  i && i.offsetTop < e.currentTarget.scrollTop ? e.currentTarget.scrollTop = i.offsetTop : i && i.offsetTop + i.offsetHeight > e.currentTarget.scrollTop + e.currentTarget.clientHeight && (e.currentTarget.scrollTop = i.offsetTop + i.offsetHeight - e.currentTarget.clientHeight);
410
451
  },
411
- children: G.map((e) => /* @__PURE__ */ o("button", {
452
+ children: q.map((e) => /* @__PURE__ */ o("button", {
412
453
  type: "button",
413
454
  role: "menuitem",
414
455
  disabled: e.disabled,
@@ -419,14 +460,14 @@ var u = ({ editor: u }) => {
419
460
  className: "rte-block-handle__menu-item",
420
461
  onMouseDown: (e) => e.stopPropagation(),
421
462
  onClick: (t) => {
422
- t.stopPropagation(), K(e), g(!1), N.current = !1;
463
+ t.stopPropagation(), J(e), _(!1), P.current = !1;
423
464
  },
424
465
  children: e.label
425
466
  }, e.label))
426
467
  }),
427
- E && O && /* @__PURE__ */ o("div", {
468
+ D && k && /* @__PURE__ */ o("div", {
428
469
  className: "rte-block-handle__drop-indicator",
429
- style: { top: O.top }
470
+ style: { top: k.top }
430
471
  })
431
472
  ] });
432
473
  };