ritext 1.0.19 → 1.0.25

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 (133) hide show
  1. package/LICENSE +57 -0
  2. package/README.md +15 -41
  3. package/dist/chunk-EN4BPI7N.mjs +1213 -0
  4. package/dist/chunk-FJQ4FZRS.mjs +98 -0
  5. package/dist/chunk-M4ORWR74.mjs +31 -0
  6. package/dist/chunk-SJFT7WNM.mjs +38 -0
  7. package/dist/chunk-W367UGID.mjs +55 -0
  8. package/dist/{chunk-FWCSY2DS.mjs → chunk-WNQUEZJF.mjs} +22 -1
  9. package/dist/{chunk-D47XME55.mjs → chunk-WXCHG3NQ.mjs} +8 -2
  10. package/dist/chunk-WZKGD3DD.mjs +231 -0
  11. package/dist/extension/backgroundcolor.d.mts +16 -0
  12. package/dist/extension/backgroundcolor.d.ts +16 -0
  13. package/dist/extension/backgroundcolor.js +668 -0
  14. package/dist/extension/backgroundcolor.mjs +107 -0
  15. package/dist/extension/base.d.mts +6 -0
  16. package/dist/extension/base.d.ts +6 -0
  17. package/dist/extension/base.js +65 -0
  18. package/dist/extension/base.mjs +22 -0
  19. package/dist/extension/blockquote.d.mts +10 -0
  20. package/dist/extension/blockquote.d.ts +10 -0
  21. package/dist/extension/blockquote.js +239 -0
  22. package/dist/extension/blockquote.mjs +46 -0
  23. package/dist/extension/bold.d.mts +7 -2
  24. package/dist/extension/bold.d.ts +7 -2
  25. package/dist/extension/bold.js +22 -45
  26. package/dist/extension/bold.mjs +13 -35
  27. package/dist/extension/bulletlist.d.mts +10 -0
  28. package/dist/extension/bulletlist.d.ts +10 -0
  29. package/dist/extension/bulletlist.js +241 -0
  30. package/dist/extension/bulletlist.mjs +46 -0
  31. package/dist/extension/clearformat.d.mts +1 -1
  32. package/dist/extension/clearformat.d.ts +1 -1
  33. package/dist/extension/clearformat.js +11 -6
  34. package/dist/extension/clearformat.mjs +8 -35
  35. package/dist/extension/color.d.mts +17 -0
  36. package/dist/extension/color.d.ts +17 -0
  37. package/dist/extension/color.js +580 -0
  38. package/dist/extension/color.mjs +12 -0
  39. package/dist/extension/emoji.d.mts +15 -0
  40. package/dist/extension/emoji.d.ts +15 -0
  41. package/dist/extension/emoji.js +421 -0
  42. package/dist/extension/emoji.mjs +158 -0
  43. package/dist/extension/font-family.d.mts +8 -11
  44. package/dist/extension/font-family.d.ts +8 -11
  45. package/dist/extension/font-family.js +11 -12
  46. package/dist/extension/font-family.mjs +10 -11
  47. package/dist/extension/font-size.d.mts +8 -11
  48. package/dist/extension/font-size.d.ts +8 -11
  49. package/dist/extension/font-size.js +10 -12
  50. package/dist/extension/font-size.mjs +9 -11
  51. package/dist/extension/heading.d.mts +10 -10
  52. package/dist/extension/heading.d.ts +10 -10
  53. package/dist/extension/heading.js +68 -80
  54. package/dist/extension/heading.mjs +40 -206
  55. package/dist/extension/history.d.mts +4 -2
  56. package/dist/extension/history.d.ts +4 -2
  57. package/dist/extension/history.js +16 -9
  58. package/dist/extension/history.mjs +16 -64
  59. package/dist/extension/horizontalrule.d.mts +10 -0
  60. package/dist/extension/horizontalrule.d.ts +10 -0
  61. package/dist/extension/horizontalrule.js +242 -0
  62. package/dist/extension/horizontalrule.mjs +42 -0
  63. package/dist/extension/image.d.mts +26 -0
  64. package/dist/extension/image.d.ts +26 -0
  65. package/dist/extension/image.js +1611 -0
  66. package/dist/extension/image.mjs +1153 -0
  67. package/dist/extension/indentoutdent.d.mts +21 -0
  68. package/dist/extension/indentoutdent.d.ts +21 -0
  69. package/dist/extension/indentoutdent.js +380 -0
  70. package/dist/extension/indentoutdent.mjs +164 -0
  71. package/dist/extension/italic.d.mts +7 -2
  72. package/dist/extension/italic.d.ts +7 -2
  73. package/dist/extension/italic.js +22 -45
  74. package/dist/extension/italic.mjs +14 -40
  75. package/dist/extension/lineheight.d.mts +15 -0
  76. package/dist/extension/lineheight.d.ts +15 -0
  77. package/dist/extension/lineheight.js +342 -0
  78. package/dist/extension/lineheight.mjs +87 -0
  79. package/dist/extension/link.d.mts +15 -0
  80. package/dist/extension/link.d.ts +15 -0
  81. package/dist/extension/link.js +588 -0
  82. package/dist/extension/link.mjs +278 -0
  83. package/dist/extension/orderedlist.d.mts +10 -0
  84. package/dist/extension/orderedlist.d.ts +10 -0
  85. package/dist/extension/orderedlist.js +241 -0
  86. package/dist/extension/orderedlist.mjs +46 -0
  87. package/dist/extension/strike.d.mts +8 -3
  88. package/dist/extension/strike.d.ts +8 -3
  89. package/dist/extension/strike.js +22 -45
  90. package/dist/extension/strike.mjs +14 -40
  91. package/dist/extension/subandsuperscript.d.mts +7 -10
  92. package/dist/extension/subandsuperscript.d.ts +7 -10
  93. package/dist/extension/subandsuperscript.js +66 -77
  94. package/dist/extension/subandsuperscript.mjs +18 -48
  95. package/dist/extension/subscript.d.mts +4 -2
  96. package/dist/extension/subscript.d.ts +4 -2
  97. package/dist/extension/subscript.js +20 -45
  98. package/dist/extension/subscript.mjs +10 -10
  99. package/dist/extension/superscript.d.mts +4 -2
  100. package/dist/extension/superscript.d.ts +4 -2
  101. package/dist/extension/superscript.js +20 -45
  102. package/dist/extension/superscript.mjs +10 -10
  103. package/dist/extension/table.d.mts +12 -0
  104. package/dist/extension/table.d.ts +12 -0
  105. package/dist/extension/table.js +585 -0
  106. package/dist/extension/table.mjs +324 -0
  107. package/dist/extension/tasklist.d.mts +10 -0
  108. package/dist/extension/tasklist.d.ts +10 -0
  109. package/dist/extension/tasklist.js +246 -0
  110. package/dist/extension/tasklist.mjs +52 -0
  111. package/dist/extension/textalign.d.mts +15 -0
  112. package/dist/extension/textalign.d.ts +15 -0
  113. package/dist/extension/textalign.js +404 -0
  114. package/dist/extension/textalign.mjs +79 -0
  115. package/dist/extension/underline.d.mts +7 -2
  116. package/dist/extension/underline.d.ts +7 -2
  117. package/dist/extension/underline.js +22 -45
  118. package/dist/extension/underline.mjs +14 -39
  119. package/dist/index.css +683 -31
  120. package/dist/index.d.mts +3 -1
  121. package/dist/index.d.ts +3 -1
  122. package/dist/index.js +306 -24
  123. package/dist/index.mjs +141 -13
  124. package/dist/tiptap-ext.type-B3TtT7-J.d.mts +43 -0
  125. package/dist/tiptap-ext.type-B3TtT7-J.d.ts +43 -0
  126. package/package.json +41 -28
  127. package/dist/chunk-2YUUKIIT.mjs +0 -149
  128. package/dist/chunk-7QOFJIQ3.mjs +0 -90
  129. package/dist/chunk-GSHINFPO.mjs +0 -53
  130. package/dist/chunk-LMOTHRGQ.mjs +0 -37
  131. package/dist/chunk-MBF77NHS.mjs +0 -37
  132. package/dist/tiptap-ext.type-DrneAC5G.d.mts +0 -39
  133. package/dist/tiptap-ext.type-DrneAC5G.d.ts +0 -39
@@ -0,0 +1,404 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
35
+ var __export = (target, all) => {
36
+ for (var name in all)
37
+ __defProp(target, name, { get: all[name], enumerable: true });
38
+ };
39
+ var __copyProps = (to, from, except, desc) => {
40
+ if (from && typeof from === "object" || typeof from === "function") {
41
+ for (let key of __getOwnPropNames(from))
42
+ if (!__hasOwnProp.call(to, key) && key !== except)
43
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
44
+ }
45
+ return to;
46
+ };
47
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
48
+
49
+ // src/extension/TextAlign.tsx
50
+ var TextAlign_exports = {};
51
+ __export(TextAlign_exports, {
52
+ TextAlign: () => TextAlign
53
+ });
54
+ module.exports = __toCommonJS(TextAlign_exports);
55
+ var import_extension_text_align = require("@tiptap/extension-text-align");
56
+
57
+ // src/lib/icons/index.tsx
58
+ var import_jsx_runtime = require("react/jsx-runtime");
59
+ var AlignLeft = (_a) => {
60
+ var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
61
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
62
+ "svg",
63
+ __spreadProps(__spreadValues({
64
+ xmlns: "http://www.w3.org/2000/svg",
65
+ width: size,
66
+ height: size,
67
+ viewBox: "0 0 24 24",
68
+ fill: "none",
69
+ stroke: "currentColor",
70
+ strokeWidth: "2",
71
+ strokeLinecap: "round",
72
+ strokeLinejoin: "round"
73
+ }, props), {
74
+ children: [
75
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M21 5H3" }),
76
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M15 12H3" }),
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M17 19H3" })
78
+ ]
79
+ })
80
+ );
81
+ };
82
+ var AlignCenter = (_a) => {
83
+ var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
84
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
85
+ "svg",
86
+ __spreadProps(__spreadValues({
87
+ xmlns: "http://www.w3.org/2000/svg",
88
+ width: size,
89
+ height: size,
90
+ viewBox: "0 0 24 24",
91
+ fill: "none",
92
+ stroke: "currentColor",
93
+ strokeWidth: "2",
94
+ strokeLinecap: "round",
95
+ strokeLinejoin: "round"
96
+ }, props), {
97
+ children: [
98
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M21 5H3" }),
99
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M17 12H7" }),
100
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M19 19H5" })
101
+ ]
102
+ })
103
+ );
104
+ };
105
+ var AlignRight = (_a) => {
106
+ var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
107
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
108
+ "svg",
109
+ __spreadProps(__spreadValues({
110
+ xmlns: "http://www.w3.org/2000/svg",
111
+ width: size,
112
+ height: size,
113
+ viewBox: "0 0 24 24",
114
+ fill: "none",
115
+ stroke: "currentColor",
116
+ strokeWidth: "2",
117
+ strokeLinecap: "round",
118
+ strokeLinejoin: "round"
119
+ }, props), {
120
+ children: [
121
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M21 5H3" }),
122
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M21 12H9" }),
123
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M21 19H7" })
124
+ ]
125
+ })
126
+ );
127
+ };
128
+ var AlignJustify = (_a) => {
129
+ var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
130
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
131
+ "svg",
132
+ __spreadProps(__spreadValues({
133
+ xmlns: "http://www.w3.org/2000/svg",
134
+ width: size,
135
+ height: size,
136
+ viewBox: "0 0 24 24",
137
+ fill: "none",
138
+ stroke: "currentColor",
139
+ strokeWidth: "2",
140
+ strokeLinecap: "round",
141
+ strokeLinejoin: "round"
142
+ }, props), {
143
+ children: [
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M3 5h18" }),
145
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M3 12h18" }),
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M3 19h18" })
147
+ ]
148
+ })
149
+ );
150
+ };
151
+ var ArrowIcon = (_a) => {
152
+ var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
153
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
154
+ "svg",
155
+ __spreadProps(__spreadValues({
156
+ xmlns: "http://www.w3.org/2000/svg",
157
+ viewBox: "0 0 48 48",
158
+ fill: "none",
159
+ stroke: "currentColor",
160
+ strokeWidth: 2,
161
+ strokeLinecap: "round",
162
+ strokeLinejoin: "round",
163
+ width: size,
164
+ height: size,
165
+ className
166
+ }, props), {
167
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { fill: "currentColor", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "4", d: "M36 19L24 31L12 19z" })
168
+ })
169
+ );
170
+ };
171
+
172
+ // src/lib/components/DropdownComponent.tsx
173
+ var import_react4 = require("react");
174
+ var import_tailwind_merge2 = require("tailwind-merge");
175
+
176
+ // src/lib/components/_com/Tooltip.tsx
177
+ var import_react = require("react");
178
+ var import_react2 = require("@floating-ui/react");
179
+ var import_react3 = require("motion/react");
180
+ var import_tailwind_merge = require("tailwind-merge");
181
+ var import_jsx_runtime2 = require("react/jsx-runtime");
182
+ var Tooltip = ({ placement = "top", children, content, className }) => {
183
+ const [open, setOpen] = (0, import_react.useState)(false);
184
+ const { x, y, refs, strategy, context, placement: resolvedPlacement } = (0, import_react2.useFloating)({
185
+ open,
186
+ onOpenChange: setOpen,
187
+ placement,
188
+ middleware: [(0, import_react2.offset)(8), (0, import_react2.flip)(), (0, import_react2.shift)({ padding: 8 })],
189
+ whileElementsMounted: import_react2.autoUpdate
190
+ });
191
+ const hover = (0, import_react2.useHover)(context);
192
+ const dismiss = (0, import_react2.useDismiss)(context);
193
+ const { getReferenceProps, getFloatingProps } = (0, import_react2.useInteractions)([hover, dismiss]);
194
+ const id = (0, import_react.useId)();
195
+ function mergeRefs(...refsToMerge) {
196
+ return (node) => {
197
+ for (const r of refsToMerge) {
198
+ if (!r) continue;
199
+ if (typeof r === "function") r(node);
200
+ else r.current = node;
201
+ }
202
+ };
203
+ }
204
+ const side = resolvedPlacement.split("-")[0];
205
+ const enterOffset = 6;
206
+ const getInitial = () => {
207
+ switch (side) {
208
+ case "top":
209
+ return { opacity: 0, y: enterOffset };
210
+ case "bottom":
211
+ return { opacity: 0, y: -enterOffset };
212
+ case "left":
213
+ return { opacity: 0, x: enterOffset };
214
+ case "right":
215
+ return { opacity: 0, x: -enterOffset };
216
+ default:
217
+ return { opacity: 0 };
218
+ }
219
+ };
220
+ const getExit = () => __spreadProps(__spreadValues({}, getInitial()), { opacity: 0 });
221
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react.Fragment, { children: [
222
+ (0, import_react.isValidElement)(children) ? (0, import_react.cloneElement)(children, __spreadProps(__spreadValues({}, getReferenceProps({
223
+ onFocus: () => setOpen(true),
224
+ onBlur: () => setOpen(false),
225
+ "aria-describedby": open ? id : void 0
226
+ /* eslint-disable @typescript-eslint/no-explicit-any */
227
+ })), {
228
+ /* eslint-disable @typescript-eslint/no-explicit-any */
229
+ ref: mergeRefs(children.props.ref, refs.setReference)
230
+ })) : children,
231
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react2.FloatingPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react3.AnimatePresence, { children: open && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
232
+ import_react3.motion.div,
233
+ __spreadProps(__spreadValues({
234
+ ref: refs.setFloating
235
+ }, getFloatingProps({
236
+ role: "tooltip",
237
+ id,
238
+ style: {
239
+ position: strategy,
240
+ top: y != null ? y : 0,
241
+ left: x != null ? x : 0,
242
+ pointerEvents: "none"
243
+ }
244
+ })), {
245
+ initial: getInitial(),
246
+ animate: { opacity: 1, x: 0, y: 0, scale: 1 },
247
+ exit: getExit(),
248
+ transition: { type: "spring", stiffness: 420, damping: 30, mass: 0.6 },
249
+ className: (0, import_tailwind_merge.twMerge)("bg-white border border-solid border-gray-200/50 py-1 px-3 rounded-lg text-sm shadow-lg shadow-gray-50 text-center", className),
250
+ children: content
251
+ }),
252
+ "tooltip"
253
+ ) }) })
254
+ ] });
255
+ };
256
+ var Tooltip_default = Tooltip;
257
+
258
+ // src/lib/components/DropdownComponent.tsx
259
+ var import_react5 = require("@floating-ui/react");
260
+ var import_react6 = require("motion/react");
261
+ var import_jsx_runtime3 = require("react/jsx-runtime");
262
+ var DropdownComponent = ({ children, className, showArrow = true, content, dropdownClassName, style, tooltip, tooltipClassName, tooltipPlacement, _tooltipContent, _internalContent, _dropdownClassName }) => {
263
+ const [open, setOpen] = (0, import_react4.useState)(false);
264
+ const { x, y, refs, strategy, context } = (0, import_react5.useFloating)({
265
+ open,
266
+ onOpenChange: setOpen,
267
+ placement: "bottom",
268
+ middleware: [(0, import_react5.offset)(4), (0, import_react5.flip)(), (0, import_react5.shift)({ padding: 8 })],
269
+ whileElementsMounted: import_react5.autoUpdate
270
+ });
271
+ const click = (0, import_react5.useClick)(context);
272
+ const dismiss = (0, import_react5.useDismiss)(context);
273
+ const { getReferenceProps, getFloatingProps } = (0, import_react5.useInteractions)([click, dismiss]);
274
+ const listId = (0, import_react4.useId)();
275
+ const tooltipContent = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { children: typeof tooltip === "string" ? tooltip : _tooltipContent });
276
+ const initialMotion = { opacity: 0, scale: 0.95 };
277
+ const animateMotion = { opacity: 1, scale: 1 };
278
+ const enhancedChildren = import_react4.Children.map(children, (child) => {
279
+ if (!(0, import_react4.isValidElement)(child)) return child;
280
+ const prevOnSelect = child.props.onSelect;
281
+ const combinedOnSelect = () => {
282
+ prevOnSelect == null ? void 0 : prevOnSelect();
283
+ setOpen(false);
284
+ };
285
+ return (0, import_react4.cloneElement)(child, {
286
+ onSelect: prevOnSelect ? combinedOnSelect : void 0,
287
+ open,
288
+ onClose: () => setOpen(false)
289
+ });
290
+ });
291
+ const btn = /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
292
+ "button",
293
+ __spreadProps(__spreadValues({}, getReferenceProps({
294
+ ref: refs.setReference,
295
+ type: "button",
296
+ "aria-controls": open ? listId : void 0
297
+ })), {
298
+ className: (0, import_tailwind_merge2.twMerge)(
299
+ "p-1.5 rounded-md hover:bg-gray-100 items-center flex gap-x-0.5",
300
+ className
301
+ ),
302
+ style,
303
+ children: [
304
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: content != null ? content : _internalContent }),
305
+ showArrow && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ArrowIcon, { size: 14, className: "text-gray-500 block" })
306
+ ]
307
+ })
308
+ );
309
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react4.Fragment, { children: [
310
+ tooltip === false ? btn : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
311
+ Tooltip_default,
312
+ {
313
+ content: tooltipContent,
314
+ className: tooltipClassName,
315
+ placement: tooltipPlacement,
316
+ children: btn
317
+ }
318
+ ),
319
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.FloatingPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react6.AnimatePresence, { children: open && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
320
+ import_react6.motion.div,
321
+ __spreadProps(__spreadValues({}, getFloatingProps({
322
+ ref: refs.setFloating,
323
+ style: {
324
+ position: strategy,
325
+ top: y != null ? y : 0,
326
+ left: x != null ? x : 0
327
+ },
328
+ role: "listbox",
329
+ id: listId
330
+ })), {
331
+ initial: initialMotion,
332
+ animate: animateMotion,
333
+ exit: initialMotion,
334
+ className: (0, import_tailwind_merge2.twMerge)("bg-white border border-solid border-gray-200 p-2 space-y-1 rounded-lg shadow-sm shadow-gray-200/40 z-99999999 max-h-125 overflow-auto", _dropdownClassName, dropdownClassName),
335
+ children: enhancedChildren
336
+ })
337
+ ) }) })
338
+ ] });
339
+ };
340
+ var DropdownComponent_default = DropdownComponent;
341
+
342
+ // src/lib/components/AlignmentComponent.tsx
343
+ var import_jsx_runtime4 = require("react/jsx-runtime");
344
+ var AlignmentComponent = ({ onSelect, onPick, items }) => {
345
+ const iconMap = {
346
+ "left": /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlignLeft, {}),
347
+ "center": /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlignCenter, {}),
348
+ "right": /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlignRight, {}),
349
+ "justify": /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlignJustify, {})
350
+ };
351
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex gap-x-1.5", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { onClick: () => onPick(item), className: "flex-1 p-1.5 rounded-md hover:bg-gray-100 text-center", children: iconMap[item] }, item)) });
352
+ };
353
+ var AlignmentComponent_default = AlignmentComponent;
354
+
355
+ // src/extension/TextAlign.tsx
356
+ var import_jsx_runtime5 = require("react/jsx-runtime");
357
+ var TextAlign = import_extension_text_align.TextAlign.extend({
358
+ addOptions() {
359
+ var _a;
360
+ const parent = (_a = this.parent) == null ? void 0 : _a.call(this);
361
+ return __spreadProps(__spreadValues({}, parent), {
362
+ types: ["heading", "paragraph", "list_item", "title", "image"],
363
+ alignments: ["left", "center", "right", "justify"],
364
+ defaultAlignment: "left",
365
+ showInBubbleMenu: true,
366
+ bubbleMenuPosition: 8,
367
+ component: ({ options, editor, dropdownContainerClassName }) => {
368
+ const items = options.alignments;
369
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
370
+ DropdownComponent_default,
371
+ {
372
+ className: options.className,
373
+ showArrow: options.showArrow,
374
+ content: options.content,
375
+ dropdownClassName: options.dropdownClassName,
376
+ style: options.style,
377
+ tooltip: options.tooltip,
378
+ tooltipClassName: options.tooltipClassName,
379
+ tooltipPlacement: options.tooltipPlacement,
380
+ _tooltipContent: "Text Align",
381
+ _internalContent: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(AlignJustify, {}),
382
+ _dropdownClassName: "w-40 " + dropdownContainerClassName,
383
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
384
+ AlignmentComponent_default,
385
+ {
386
+ items,
387
+ onPick: (e) => {
388
+ console.log(e);
389
+ editor.chain().focus().setTextAlign(e).run();
390
+ },
391
+ onSelect: () => {
392
+ }
393
+ }
394
+ )
395
+ }
396
+ );
397
+ }
398
+ });
399
+ }
400
+ });
401
+ // Annotate the CommonJS export names for ESM import in node:
402
+ 0 && (module.exports = {
403
+ TextAlign
404
+ });
@@ -0,0 +1,79 @@
1
+ import {
2
+ DropdownComponent_default
3
+ } from "../chunk-FJQ4FZRS.mjs";
4
+ import {
5
+ AlignCenter,
6
+ AlignJustify,
7
+ AlignLeft,
8
+ AlignRight
9
+ } from "../chunk-EN4BPI7N.mjs";
10
+ import {
11
+ __spreadProps,
12
+ __spreadValues
13
+ } from "../chunk-WNQUEZJF.mjs";
14
+
15
+ // src/extension/TextAlign.tsx
16
+ import { TextAlign as TiptapTextAlign } from "@tiptap/extension-text-align";
17
+
18
+ // src/lib/components/AlignmentComponent.tsx
19
+ import { jsx } from "react/jsx-runtime";
20
+ var AlignmentComponent = ({ onSelect, onPick, items }) => {
21
+ const iconMap = {
22
+ "left": /* @__PURE__ */ jsx(AlignLeft, {}),
23
+ "center": /* @__PURE__ */ jsx(AlignCenter, {}),
24
+ "right": /* @__PURE__ */ jsx(AlignRight, {}),
25
+ "justify": /* @__PURE__ */ jsx(AlignJustify, {})
26
+ };
27
+ return /* @__PURE__ */ jsx("div", { className: "flex gap-x-1.5", children: items.map((item) => /* @__PURE__ */ jsx("button", { onClick: () => onPick(item), className: "flex-1 p-1.5 rounded-md hover:bg-gray-100 text-center", children: iconMap[item] }, item)) });
28
+ };
29
+ var AlignmentComponent_default = AlignmentComponent;
30
+
31
+ // src/extension/TextAlign.tsx
32
+ import { jsx as jsx2 } from "react/jsx-runtime";
33
+ var TextAlign = TiptapTextAlign.extend({
34
+ addOptions() {
35
+ var _a;
36
+ const parent = (_a = this.parent) == null ? void 0 : _a.call(this);
37
+ return __spreadProps(__spreadValues({}, parent), {
38
+ types: ["heading", "paragraph", "list_item", "title", "image"],
39
+ alignments: ["left", "center", "right", "justify"],
40
+ defaultAlignment: "left",
41
+ showInBubbleMenu: true,
42
+ bubbleMenuPosition: 8,
43
+ component: ({ options, editor, dropdownContainerClassName }) => {
44
+ const items = options.alignments;
45
+ return /* @__PURE__ */ jsx2(
46
+ DropdownComponent_default,
47
+ {
48
+ className: options.className,
49
+ showArrow: options.showArrow,
50
+ content: options.content,
51
+ dropdownClassName: options.dropdownClassName,
52
+ style: options.style,
53
+ tooltip: options.tooltip,
54
+ tooltipClassName: options.tooltipClassName,
55
+ tooltipPlacement: options.tooltipPlacement,
56
+ _tooltipContent: "Text Align",
57
+ _internalContent: /* @__PURE__ */ jsx2(AlignJustify, {}),
58
+ _dropdownClassName: "w-40 " + dropdownContainerClassName,
59
+ children: /* @__PURE__ */ jsx2(
60
+ AlignmentComponent_default,
61
+ {
62
+ items,
63
+ onPick: (e) => {
64
+ console.log(e);
65
+ editor.chain().focus().setTextAlign(e).run();
66
+ },
67
+ onSelect: () => {
68
+ }
69
+ }
70
+ )
71
+ }
72
+ );
73
+ }
74
+ });
75
+ }
76
+ });
77
+ export {
78
+ TextAlign
79
+ };
@@ -1,8 +1,13 @@
1
+ import { UnderlineOptions } from '@tiptap/extension-underline';
1
2
  import { Mark } from '@tiptap/react';
2
- import { E as ExtButtonOptions } from '../tiptap-ext.type-DrneAC5G.mjs';
3
+ import { E as ExtButtonOptions } from '../tiptap-ext.type-B3TtT7-J.mjs';
3
4
  import 'react';
4
5
  import '@floating-ui/react';
5
6
 
6
- declare const Underline: Mark<ExtButtonOptions>;
7
+ type ExtUnderlineOptions = ExtButtonOptions<UnderlineOptions & {
8
+ showInBubbleMenu?: boolean;
9
+ bubbleMenuPosition?: number;
10
+ }>;
11
+ declare const Underline: Mark<ExtUnderlineOptions>;
7
12
 
8
13
  export { Underline };
@@ -1,8 +1,13 @@
1
+ import { UnderlineOptions } from '@tiptap/extension-underline';
1
2
  import { Mark } from '@tiptap/react';
2
- import { E as ExtButtonOptions } from '../tiptap-ext.type-DrneAC5G.js';
3
+ import { E as ExtButtonOptions } from '../tiptap-ext.type-B3TtT7-J.js';
3
4
  import 'react';
4
5
  import '@floating-ui/react';
5
6
 
6
- declare const Underline: Mark<ExtButtonOptions>;
7
+ type ExtUnderlineOptions = ExtButtonOptions<UnderlineOptions & {
8
+ showInBubbleMenu?: boolean;
9
+ bubbleMenuPosition?: number;
10
+ }>;
11
+ declare const Underline: Mark<ExtUnderlineOptions>;
7
12
 
8
13
  export { Underline };
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __defProps = Object.defineProperties;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
5
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
7
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __getProtoOf = Object.getPrototypeOf;
10
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
11
9
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
10
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -46,14 +44,6 @@ var __copyProps = (to, from, except, desc) => {
46
44
  }
47
45
  return to;
48
46
  };
49
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
- // If the importer is in node compatibility mode or this is not an ESM
51
- // file that has been converted to a CommonJS file using a Babel-
52
- // compatible transform (i.e. "__esModule" has not been set), then set
53
- // "default" to the CommonJS "module.exports" for node compatibility.
54
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
- mod
56
- ));
57
47
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
48
 
59
49
  // src/extension/Underline.tsx
@@ -62,9 +52,9 @@ __export(Underline_exports, {
62
52
  Underline: () => Underline
63
53
  });
64
54
  module.exports = __toCommonJS(Underline_exports);
65
- var import_extension_underline = __toESM(require("@tiptap/extension-underline"));
55
+ var import_extension_underline = require("@tiptap/extension-underline");
66
56
 
67
- // src/lib/icon/UnderIcon.tsx
57
+ // src/lib/icons/index.tsx
68
58
  var import_jsx_runtime = require("react/jsx-runtime");
69
59
  var UnderIcon = (_a) => {
70
60
  var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
@@ -89,9 +79,9 @@ var UnderIcon = (_a) => {
89
79
  })
90
80
  );
91
81
  };
92
- var UnderIcon_default = UnderIcon;
93
82
 
94
83
  // src/lib/components/ButtonComponent.tsx
84
+ var import_react5 = require("react");
95
85
  var import_tailwind_merge2 = require("tailwind-merge");
96
86
 
97
87
  // src/lib/components/_com/Tooltip.tsx
@@ -187,53 +177,40 @@ var useEditor = () => {
187
177
  };
188
178
 
189
179
  // src/lib/components/ButtonComponent.tsx
190
- var import_react5 = require("@tiptap/react");
180
+ var import_react6 = require("@tiptap/react");
191
181
  var import_jsx_runtime4 = require("react/jsx-runtime");
192
182
  var ButtonComponent = ({ className, activeClassName, icon, style, tooltip = true, tooltipClassName, tooltipPlacement, _extName, _internalIcon, _tooltipContent, _onToggle, _interShortcut, _buttonClassName }) => {
193
183
  const { editor } = useEditor();
194
- const editorState = (0, import_react5.useEditorState)({
184
+ const editorState = (0, import_react6.useEditorState)({
195
185
  editor,
196
186
  selector: ({ editor: editor2 }) => ({ isActive: (editor2 == null ? void 0 : editor2.isActive(_extName)) || false })
197
187
  });
188
+ const shortcutText = (0, import_react5.useMemo)(() => {
189
+ if (!_interShortcut) return "";
190
+ return (0, import_react6.isMacOS)() ? _interShortcut.mac : _interShortcut.win;
191
+ }, [_interShortcut]);
198
192
  const tooltipContent = /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("p", { children: [
199
193
  typeof tooltip === "string" ? tooltip : _tooltipContent,
200
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("br", {}),
201
- _interShortcut
194
+ shortcutText ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
195
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("br", {}),
196
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "opacity-70", children: shortcutText })
197
+ ] }) : null
202
198
  ] });
203
- const btn = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
204
- "button",
205
- {
206
- onClick: _onToggle,
207
- className: (0, import_tailwind_merge2.twMerge)(
208
- "py-1.5 px-2.5 rounded-md",
209
- _buttonClassName,
210
- (editorState == null ? void 0 : editorState.isActive) ? "bg-gray-200/60" : "hover:bg-gray-100",
211
- className,
212
- (editorState == null ? void 0 : editorState.isActive) ? activeClassName : "hover:bg-gray-100"
213
- ),
214
- style,
215
- children: icon != null ? icon : _internalIcon
216
- }
217
- );
199
+ const btn = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { onClick: _onToggle, className: (0, import_tailwind_merge2.twMerge)("py-1.5 px-2.5 rounded-md", _buttonClassName, (editorState == null ? void 0 : editorState.isActive) ? "bg-gray-200/60" : "hover:bg-gray-100", className, (editorState == null ? void 0 : editorState.isActive) ? activeClassName : "hover:bg-gray-100"), style, children: icon != null ? icon : _internalIcon });
218
200
  if (tooltip === false) return btn;
219
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
220
- Tooltip_default,
221
- {
222
- content: tooltipContent,
223
- className: tooltipClassName,
224
- placement: tooltipPlacement,
225
- children: btn
226
- }
227
- );
201
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Tooltip_default, { content: tooltipContent, className: tooltipClassName, placement: tooltipPlacement, children: btn });
228
202
  };
229
203
  var ButtonComponent_default = ButtonComponent;
230
204
 
231
205
  // src/extension/Underline.tsx
232
206
  var import_jsx_runtime5 = require("react/jsx-runtime");
233
- var Underline = import_extension_underline.default.extend({
207
+ var Underline = import_extension_underline.Underline.extend({
234
208
  addOptions() {
235
209
  var _a;
236
- return __spreadProps(__spreadValues({}, (_a = this.parent) == null ? void 0 : _a.call(this)), {
210
+ const parent = (_a = this.parent) == null ? void 0 : _a.call(this);
211
+ return __spreadProps(__spreadValues({}, parent != null ? parent : {}), {
212
+ showInBubbleMenu: true,
213
+ bubbleMenuPosition: 4,
237
214
  component: ({ options, editor, buttonClassName }) => {
238
215
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
239
216
  ButtonComponent_default,
@@ -245,10 +222,10 @@ var Underline = import_extension_underline.default.extend({
245
222
  tooltip: options.tooltip,
246
223
  tooltipClassName: options.tooltipClassName,
247
224
  tooltipPlacement: options.tooltipPlacement,
248
- _internalIcon: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(UnderIcon_default, {}),
225
+ _internalIcon: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(UnderIcon, {}),
249
226
  _extName: "underline",
250
227
  _onToggle: () => editor.chain().focus().toggleUnderline().run(),
251
- _interShortcut: "\u2318 + U",
228
+ _interShortcut: { win: "Ctrl + U", mac: "\u2318 + U" },
252
229
  _tooltipContent: "Underline",
253
230
  _buttonClassName: buttonClassName
254
231
  }