ritext 1.0.23 → 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 (132) hide show
  1. package/README.md +1 -30
  2. package/dist/chunk-EN4BPI7N.mjs +1213 -0
  3. package/dist/chunk-FJQ4FZRS.mjs +98 -0
  4. package/dist/chunk-M4ORWR74.mjs +31 -0
  5. package/dist/chunk-SJFT7WNM.mjs +38 -0
  6. package/dist/chunk-W367UGID.mjs +55 -0
  7. package/dist/{chunk-FWCSY2DS.mjs → chunk-WNQUEZJF.mjs} +22 -1
  8. package/dist/{chunk-D47XME55.mjs → chunk-WXCHG3NQ.mjs} +8 -2
  9. package/dist/chunk-WZKGD3DD.mjs +231 -0
  10. package/dist/extension/backgroundcolor.d.mts +16 -0
  11. package/dist/extension/backgroundcolor.d.ts +16 -0
  12. package/dist/extension/backgroundcolor.js +668 -0
  13. package/dist/extension/backgroundcolor.mjs +107 -0
  14. package/dist/extension/base.d.mts +6 -0
  15. package/dist/extension/base.d.ts +6 -0
  16. package/dist/extension/base.js +65 -0
  17. package/dist/extension/base.mjs +22 -0
  18. package/dist/extension/blockquote.d.mts +10 -0
  19. package/dist/extension/blockquote.d.ts +10 -0
  20. package/dist/extension/blockquote.js +239 -0
  21. package/dist/extension/blockquote.mjs +46 -0
  22. package/dist/extension/bold.d.mts +7 -2
  23. package/dist/extension/bold.d.ts +7 -2
  24. package/dist/extension/bold.js +22 -45
  25. package/dist/extension/bold.mjs +13 -35
  26. package/dist/extension/bulletlist.d.mts +10 -0
  27. package/dist/extension/bulletlist.d.ts +10 -0
  28. package/dist/extension/bulletlist.js +241 -0
  29. package/dist/extension/bulletlist.mjs +46 -0
  30. package/dist/extension/clearformat.d.mts +1 -1
  31. package/dist/extension/clearformat.d.ts +1 -1
  32. package/dist/extension/clearformat.js +11 -6
  33. package/dist/extension/clearformat.mjs +8 -35
  34. package/dist/extension/color.d.mts +17 -0
  35. package/dist/extension/color.d.ts +17 -0
  36. package/dist/extension/color.js +580 -0
  37. package/dist/extension/color.mjs +12 -0
  38. package/dist/extension/emoji.d.mts +15 -0
  39. package/dist/extension/emoji.d.ts +15 -0
  40. package/dist/extension/emoji.js +421 -0
  41. package/dist/extension/emoji.mjs +158 -0
  42. package/dist/extension/font-family.d.mts +8 -11
  43. package/dist/extension/font-family.d.ts +8 -11
  44. package/dist/extension/font-family.js +11 -12
  45. package/dist/extension/font-family.mjs +10 -11
  46. package/dist/extension/font-size.d.mts +8 -11
  47. package/dist/extension/font-size.d.ts +8 -11
  48. package/dist/extension/font-size.js +10 -12
  49. package/dist/extension/font-size.mjs +9 -11
  50. package/dist/extension/heading.d.mts +10 -10
  51. package/dist/extension/heading.d.ts +10 -10
  52. package/dist/extension/heading.js +68 -80
  53. package/dist/extension/heading.mjs +40 -206
  54. package/dist/extension/history.d.mts +4 -2
  55. package/dist/extension/history.d.ts +4 -2
  56. package/dist/extension/history.js +16 -9
  57. package/dist/extension/history.mjs +16 -64
  58. package/dist/extension/horizontalrule.d.mts +10 -0
  59. package/dist/extension/horizontalrule.d.ts +10 -0
  60. package/dist/extension/horizontalrule.js +242 -0
  61. package/dist/extension/horizontalrule.mjs +42 -0
  62. package/dist/extension/image.d.mts +26 -0
  63. package/dist/extension/image.d.ts +26 -0
  64. package/dist/extension/image.js +1611 -0
  65. package/dist/extension/image.mjs +1153 -0
  66. package/dist/extension/indentoutdent.d.mts +21 -0
  67. package/dist/extension/indentoutdent.d.ts +21 -0
  68. package/dist/extension/indentoutdent.js +380 -0
  69. package/dist/extension/indentoutdent.mjs +164 -0
  70. package/dist/extension/italic.d.mts +7 -2
  71. package/dist/extension/italic.d.ts +7 -2
  72. package/dist/extension/italic.js +22 -45
  73. package/dist/extension/italic.mjs +14 -40
  74. package/dist/extension/lineheight.d.mts +15 -0
  75. package/dist/extension/lineheight.d.ts +15 -0
  76. package/dist/extension/lineheight.js +342 -0
  77. package/dist/extension/lineheight.mjs +87 -0
  78. package/dist/extension/link.d.mts +15 -0
  79. package/dist/extension/link.d.ts +15 -0
  80. package/dist/extension/link.js +588 -0
  81. package/dist/extension/link.mjs +278 -0
  82. package/dist/extension/orderedlist.d.mts +10 -0
  83. package/dist/extension/orderedlist.d.ts +10 -0
  84. package/dist/extension/orderedlist.js +241 -0
  85. package/dist/extension/orderedlist.mjs +46 -0
  86. package/dist/extension/strike.d.mts +8 -3
  87. package/dist/extension/strike.d.ts +8 -3
  88. package/dist/extension/strike.js +22 -45
  89. package/dist/extension/strike.mjs +14 -40
  90. package/dist/extension/subandsuperscript.d.mts +7 -10
  91. package/dist/extension/subandsuperscript.d.ts +7 -10
  92. package/dist/extension/subandsuperscript.js +66 -77
  93. package/dist/extension/subandsuperscript.mjs +18 -48
  94. package/dist/extension/subscript.d.mts +4 -2
  95. package/dist/extension/subscript.d.ts +4 -2
  96. package/dist/extension/subscript.js +20 -45
  97. package/dist/extension/subscript.mjs +10 -10
  98. package/dist/extension/superscript.d.mts +4 -2
  99. package/dist/extension/superscript.d.ts +4 -2
  100. package/dist/extension/superscript.js +20 -45
  101. package/dist/extension/superscript.mjs +10 -10
  102. package/dist/extension/table.d.mts +12 -0
  103. package/dist/extension/table.d.ts +12 -0
  104. package/dist/extension/table.js +585 -0
  105. package/dist/extension/table.mjs +324 -0
  106. package/dist/extension/tasklist.d.mts +10 -0
  107. package/dist/extension/tasklist.d.ts +10 -0
  108. package/dist/extension/tasklist.js +246 -0
  109. package/dist/extension/tasklist.mjs +52 -0
  110. package/dist/extension/textalign.d.mts +15 -0
  111. package/dist/extension/textalign.d.ts +15 -0
  112. package/dist/extension/textalign.js +404 -0
  113. package/dist/extension/textalign.mjs +79 -0
  114. package/dist/extension/underline.d.mts +7 -2
  115. package/dist/extension/underline.d.ts +7 -2
  116. package/dist/extension/underline.js +22 -45
  117. package/dist/extension/underline.mjs +14 -39
  118. package/dist/index.css +683 -31
  119. package/dist/index.d.mts +3 -1
  120. package/dist/index.d.ts +3 -1
  121. package/dist/index.js +306 -24
  122. package/dist/index.mjs +141 -13
  123. package/dist/tiptap-ext.type-B3TtT7-J.d.mts +43 -0
  124. package/dist/tiptap-ext.type-B3TtT7-J.d.ts +43 -0
  125. package/package.json +41 -28
  126. package/dist/chunk-2YUUKIIT.mjs +0 -149
  127. package/dist/chunk-7QOFJIQ3.mjs +0 -90
  128. package/dist/chunk-GSHINFPO.mjs +0 -53
  129. package/dist/chunk-LMOTHRGQ.mjs +0 -37
  130. package/dist/chunk-MBF77NHS.mjs +0 -37
  131. package/dist/tiptap-ext.type-DrneAC5G.d.mts +0 -39
  132. package/dist/tiptap-ext.type-DrneAC5G.d.ts +0 -39
@@ -0,0 +1,668 @@
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/BackgroundColor.tsx
50
+ var BackgroundColor_exports = {};
51
+ __export(BackgroundColor_exports, {
52
+ BackgroundColor: () => BackgroundColor
53
+ });
54
+ module.exports = __toCommonJS(BackgroundColor_exports);
55
+ var import_react11 = require("react");
56
+ var import_extension_text_style2 = require("@tiptap/extension-text-style");
57
+
58
+ // src/lib/components/DropdownComponent.tsx
59
+ var import_react4 = require("react");
60
+ var import_tailwind_merge2 = require("tailwind-merge");
61
+
62
+ // src/lib/components/_com/Tooltip.tsx
63
+ var import_react = require("react");
64
+ var import_react2 = require("@floating-ui/react");
65
+ var import_react3 = require("motion/react");
66
+ var import_tailwind_merge = require("tailwind-merge");
67
+ var import_jsx_runtime = require("react/jsx-runtime");
68
+ var Tooltip = ({ placement = "top", children, content, className }) => {
69
+ const [open, setOpen] = (0, import_react.useState)(false);
70
+ const { x, y, refs, strategy, context, placement: resolvedPlacement } = (0, import_react2.useFloating)({
71
+ open,
72
+ onOpenChange: setOpen,
73
+ placement,
74
+ middleware: [(0, import_react2.offset)(8), (0, import_react2.flip)(), (0, import_react2.shift)({ padding: 8 })],
75
+ whileElementsMounted: import_react2.autoUpdate
76
+ });
77
+ const hover = (0, import_react2.useHover)(context);
78
+ const dismiss = (0, import_react2.useDismiss)(context);
79
+ const { getReferenceProps, getFloatingProps } = (0, import_react2.useInteractions)([hover, dismiss]);
80
+ const id = (0, import_react.useId)();
81
+ function mergeRefs(...refsToMerge) {
82
+ return (node) => {
83
+ for (const r of refsToMerge) {
84
+ if (!r) continue;
85
+ if (typeof r === "function") r(node);
86
+ else r.current = node;
87
+ }
88
+ };
89
+ }
90
+ const side = resolvedPlacement.split("-")[0];
91
+ const enterOffset = 6;
92
+ const getInitial = () => {
93
+ switch (side) {
94
+ case "top":
95
+ return { opacity: 0, y: enterOffset };
96
+ case "bottom":
97
+ return { opacity: 0, y: -enterOffset };
98
+ case "left":
99
+ return { opacity: 0, x: enterOffset };
100
+ case "right":
101
+ return { opacity: 0, x: -enterOffset };
102
+ default:
103
+ return { opacity: 0 };
104
+ }
105
+ };
106
+ const getExit = () => __spreadProps(__spreadValues({}, getInitial()), { opacity: 0 });
107
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Fragment, { children: [
108
+ (0, import_react.isValidElement)(children) ? (0, import_react.cloneElement)(children, __spreadProps(__spreadValues({}, getReferenceProps({
109
+ onFocus: () => setOpen(true),
110
+ onBlur: () => setOpen(false),
111
+ "aria-describedby": open ? id : void 0
112
+ /* eslint-disable @typescript-eslint/no-explicit-any */
113
+ })), {
114
+ /* eslint-disable @typescript-eslint/no-explicit-any */
115
+ ref: mergeRefs(children.props.ref, refs.setReference)
116
+ })) : children,
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react2.FloatingPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react3.AnimatePresence, { children: open && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
118
+ import_react3.motion.div,
119
+ __spreadProps(__spreadValues({
120
+ ref: refs.setFloating
121
+ }, getFloatingProps({
122
+ role: "tooltip",
123
+ id,
124
+ style: {
125
+ position: strategy,
126
+ top: y != null ? y : 0,
127
+ left: x != null ? x : 0,
128
+ pointerEvents: "none"
129
+ }
130
+ })), {
131
+ initial: getInitial(),
132
+ animate: { opacity: 1, x: 0, y: 0, scale: 1 },
133
+ exit: getExit(),
134
+ transition: { type: "spring", stiffness: 420, damping: 30, mass: 0.6 },
135
+ 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),
136
+ children: content
137
+ }),
138
+ "tooltip"
139
+ ) }) })
140
+ ] });
141
+ };
142
+ var Tooltip_default = Tooltip;
143
+
144
+ // src/lib/components/DropdownComponent.tsx
145
+ var import_react5 = require("@floating-ui/react");
146
+
147
+ // src/lib/icons/index.tsx
148
+ var import_jsx_runtime2 = require("react/jsx-runtime");
149
+ var ArrowIcon = (_a) => {
150
+ var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
151
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
152
+ "svg",
153
+ __spreadProps(__spreadValues({
154
+ xmlns: "http://www.w3.org/2000/svg",
155
+ viewBox: "0 0 48 48",
156
+ fill: "none",
157
+ stroke: "currentColor",
158
+ strokeWidth: 2,
159
+ strokeLinecap: "round",
160
+ strokeLinejoin: "round",
161
+ width: size,
162
+ height: size,
163
+ className
164
+ }, props), {
165
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { fill: "currentColor", stroke: "currentColor", strokeLinejoin: "round", strokeWidth: "4", d: "M36 19L24 31L12 19z" })
166
+ })
167
+ );
168
+ };
169
+ var ColorIcon = ({ fill }) => {
170
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
171
+ "svg",
172
+ {
173
+ height: "18px",
174
+ version: "1.1",
175
+ viewBox: "0 0 240 240",
176
+ width: "18px",
177
+ xmlns: "http://www.w3.org/2000/svg",
178
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { fill: "none", fillRule: "evenodd", stroke: "none", strokeWidth: 1, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { transform: "translate(0.000000, 0.500000)", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("g", { transform: "translate(39.000000, 17.353553)", children: [
179
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
180
+ "path",
181
+ {
182
+ d: "M11,201.146447 L167,201.146447 C173.075132,201.146447 178,206.071314 178,212.146447 C178,218.221579 173.075132,223.146447 167,223.146447 L11,223.146447 C4.92486775,223.146447 7.43989126e-16,218.221579 0,212.146447 C-7.43989126e-16,206.071314 4.92486775,201.146447 11,201.146447 Z",
183
+ fill: typeof fill === "string" ? fill : "#000",
184
+ fillRule: "evenodd"
185
+ }
186
+ ),
187
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
188
+ "path",
189
+ {
190
+ d: "M72.3425855,16.8295583 C75.799482,7.50883712 86.1577877,2.75526801 95.4785089,6.21216449 C100.284516,7.99463061 104.096358,11.7387855 105.968745,16.4968188 L106.112518,16.8745422 L159.385152,161.694068 C161.291848,166.877345 158.635655,172.624903 153.452378,174.531599 C148.358469,176.405421 142.719567,173.872338 140.716873,168.864661 L140.614848,168.598825 L89.211,28.86 L37.3759214,168.623816 C35.4885354,173.712715 29.8981043,176.351047 24.7909589,174.617647 L24.5226307,174.522368 C19.4337312,172.634982 16.7953993,167.044551 18.5287999,161.937406 L18.6240786,161.669077 L72.3425855,16.8295583 Z",
191
+ fill: "currentColor",
192
+ fillRule: "nonzero"
193
+ }
194
+ ),
195
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
196
+ "path",
197
+ {
198
+ d: "M121,103.146447 C126.522847,103.146447 131,107.623599 131,113.146447 C131,118.575687 126.673329,122.994378 121.279905,123.142605 L121,123.146447 L55,123.146447 C49.4771525,123.146447 45,118.669294 45,113.146447 C45,107.717207 49.3266708,103.298515 54.7200952,103.150288 L55,103.146447 L121,103.146447 Z",
199
+ fill: "currentColor",
200
+ fillRule: "nonzero"
201
+ }
202
+ )
203
+ ] }) }) })
204
+ }
205
+ );
206
+ };
207
+ var BackgroundIcon = ({ fill }) => {
208
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
209
+ "svg",
210
+ {
211
+ height: "18px",
212
+ version: "1.1",
213
+ viewBox: "0 0 256 256",
214
+ width: "18px",
215
+ xmlns: "http://www.w3.org/2000/svg",
216
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { fill: "none", fillRule: "evenodd", stroke: "none", strokeWidth: 1, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("g", { id: "icon/\u80CC\u666F\u989C\u8272", children: [
217
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("g", { transform: "translate(119.502295, 137.878331) rotate(-135.000000) translate(-119.502295, -137.878331) translate(48.002295, 31.757731)", children: [
218
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
219
+ "path",
220
+ {
221
+ d: "M100.946943,60.8084699 L43.7469427,60.8084699 C37.2852111,60.8084699 32.0469427,66.0467383 32.0469427,72.5084699 L32.0469427,118.70847 C32.0469427,125.170201 37.2852111,130.40847 43.7469427,130.40847 L100.946943,130.40847 C107.408674,130.40847 112.646943,125.170201 112.646943,118.70847 L112.646943,72.5084699 C112.646943,66.0467383 107.408674,60.8084699 100.946943,60.8084699 Z M93.646,79.808 L93.646,111.408 L51.046,111.408 L51.046,79.808 L93.646,79.808 Z",
222
+ fillRule: "nonzero"
223
+ }
224
+ ),
225
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
226
+ "path",
227
+ {
228
+ d: "M87.9366521,16.90916 L87.9194966,68.2000001 C87.9183543,69.4147389 86.9334998,70.399264 85.7187607,70.4 L56.9423078,70.4 C55.7272813,70.4 54.7423078,69.4150264 54.7423078,68.2 L54.7423078,39.4621057 C54.7423078,37.2523513 55.5736632,35.1234748 57.0711706,33.4985176 L76.4832996,12.4342613 C78.9534987,9.75382857 83.1289108,9.5834005 85.8093436,12.0535996 C87.1658473,13.303709 87.9372691,15.0644715 87.9366521,16.90916 Z",
229
+ fillRule: "evenodd"
230
+ }
231
+ ),
232
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
233
+ "path",
234
+ {
235
+ d: "M131.3,111.241199 L11.7,111.241199 C5.23826843,111.241199 0,116.479467 0,122.941199 L0,200.541199 C0,207.002931 5.23826843,212.241199 11.7,212.241199 L131.3,212.241199 C137.761732,212.241199 143,207.002931 143,200.541199 L143,122.941199 C143,116.479467 137.761732,111.241199 131.3,111.241199 Z M124,130.241 L124,193.241 L19,193.241 L19,130.241 L124,130.241 Z",
236
+ fillRule: "nonzero"
237
+ }
238
+ )
239
+ ] }) }),
240
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
241
+ "path",
242
+ {
243
+ d: "M51,218 L205,218 C211.075132,218 216,222.924868 216,229 C216,235.075132 211.075132,240 205,240 L51,240 C44.9248678,240 40,235.075132 40,229 C40,222.924868 44.9248678,218 51,218 Z",
244
+ fill: typeof fill === "string" ? fill : "none",
245
+ id: "\u77E9\u5F62"
246
+ }
247
+ )
248
+ ] }) })
249
+ }
250
+ );
251
+ };
252
+ var Palette = (_a) => {
253
+ var _b = _a, { size = 17, className } = _b, props = __objRest(_b, ["size", "className"]);
254
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
255
+ "svg",
256
+ __spreadProps(__spreadValues({
257
+ xmlns: "http://www.w3.org/2000/svg",
258
+ width: size,
259
+ height: size,
260
+ viewBox: "0 0 24 24",
261
+ fill: "none",
262
+ stroke: "currentColor",
263
+ strokeWidth: "2",
264
+ strokeLinecap: "round",
265
+ strokeLinejoin: "round"
266
+ }, props), {
267
+ children: [
268
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z" }),
269
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "13.5", cy: "6.5", r: ".5", fill: "currentColor" }),
270
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "17.5", cy: "10.5", r: ".5", fill: "currentColor" }),
271
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor" }),
272
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor" })
273
+ ]
274
+ })
275
+ );
276
+ };
277
+
278
+ // src/lib/components/DropdownComponent.tsx
279
+ var import_react6 = require("motion/react");
280
+ var import_jsx_runtime3 = require("react/jsx-runtime");
281
+ var DropdownComponent = ({ children, className, showArrow = true, content, dropdownClassName, style, tooltip, tooltipClassName, tooltipPlacement, _tooltipContent, _internalContent, _dropdownClassName }) => {
282
+ const [open, setOpen] = (0, import_react4.useState)(false);
283
+ const { x, y, refs, strategy, context } = (0, import_react5.useFloating)({
284
+ open,
285
+ onOpenChange: setOpen,
286
+ placement: "bottom",
287
+ middleware: [(0, import_react5.offset)(4), (0, import_react5.flip)(), (0, import_react5.shift)({ padding: 8 })],
288
+ whileElementsMounted: import_react5.autoUpdate
289
+ });
290
+ const click = (0, import_react5.useClick)(context);
291
+ const dismiss = (0, import_react5.useDismiss)(context);
292
+ const { getReferenceProps, getFloatingProps } = (0, import_react5.useInteractions)([click, dismiss]);
293
+ const listId = (0, import_react4.useId)();
294
+ const tooltipContent = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { children: typeof tooltip === "string" ? tooltip : _tooltipContent });
295
+ const initialMotion = { opacity: 0, scale: 0.95 };
296
+ const animateMotion = { opacity: 1, scale: 1 };
297
+ const enhancedChildren = import_react4.Children.map(children, (child) => {
298
+ if (!(0, import_react4.isValidElement)(child)) return child;
299
+ const prevOnSelect = child.props.onSelect;
300
+ const combinedOnSelect = () => {
301
+ prevOnSelect == null ? void 0 : prevOnSelect();
302
+ setOpen(false);
303
+ };
304
+ return (0, import_react4.cloneElement)(child, {
305
+ onSelect: prevOnSelect ? combinedOnSelect : void 0,
306
+ open,
307
+ onClose: () => setOpen(false)
308
+ });
309
+ });
310
+ const btn = /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
311
+ "button",
312
+ __spreadProps(__spreadValues({}, getReferenceProps({
313
+ ref: refs.setReference,
314
+ type: "button",
315
+ "aria-controls": open ? listId : void 0
316
+ })), {
317
+ className: (0, import_tailwind_merge2.twMerge)(
318
+ "p-1.5 rounded-md hover:bg-gray-100 items-center flex gap-x-0.5",
319
+ className
320
+ ),
321
+ style,
322
+ children: [
323
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: content != null ? content : _internalContent }),
324
+ showArrow && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ArrowIcon, { size: 14, className: "text-gray-500 block" })
325
+ ]
326
+ })
327
+ );
328
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react4.Fragment, { children: [
329
+ tooltip === false ? btn : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
330
+ Tooltip_default,
331
+ {
332
+ content: tooltipContent,
333
+ className: tooltipClassName,
334
+ placement: tooltipPlacement,
335
+ children: btn
336
+ }
337
+ ),
338
+ /* @__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)(
339
+ import_react6.motion.div,
340
+ __spreadProps(__spreadValues({}, getFloatingProps({
341
+ ref: refs.setFloating,
342
+ style: {
343
+ position: strategy,
344
+ top: y != null ? y : 0,
345
+ left: x != null ? x : 0
346
+ },
347
+ role: "listbox",
348
+ id: listId
349
+ })), {
350
+ initial: initialMotion,
351
+ animate: animateMotion,
352
+ exit: initialMotion,
353
+ 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),
354
+ children: enhancedChildren
355
+ })
356
+ ) }) })
357
+ ] });
358
+ };
359
+ var DropdownComponent_default = DropdownComponent;
360
+
361
+ // src/lib/context/editor.context.tsx
362
+ var import_react7 = require("react");
363
+ var import_jsx_runtime4 = require("react/jsx-runtime");
364
+ var EditorContext = (0, import_react7.createContext)({ editor: null });
365
+ var useEditor = () => {
366
+ const ctx = (0, import_react7.useContext)(EditorContext);
367
+ if (!ctx) throw new Error("<Toolbar/> & <Content/> component must be used inside <Editor>...</Editor/>");
368
+ return ctx;
369
+ };
370
+
371
+ // src/lib/components/ColorIconComponent.tsx
372
+ var import_react8 = require("@tiptap/react");
373
+ var import_jsx_runtime5 = require("react/jsx-runtime");
374
+ var ColorIconComponent = ({ type = "color" }) => {
375
+ const { editor } = useEditor();
376
+ const editorState = (0, import_react8.useEditorState)({
377
+ editor,
378
+ selector: ({ editor: editor2 }) => ({
379
+ color: type === "color" ? (editor2 == null ? void 0 : editor2.getAttributes("textStyle").color) || "#000" : (editor2 == null ? void 0 : editor2.getAttributes("textStyle").backgroundColor) || "#000"
380
+ })
381
+ });
382
+ return type === "color" ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ColorIcon, { fill: editorState == null ? void 0 : editorState.color }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(BackgroundIcon, { fill: editorState == null ? void 0 : editorState.color });
383
+ };
384
+ var ColorIconComponent_default = ColorIconComponent;
385
+
386
+ // src/lib/components/ColorComponent.tsx
387
+ var import_react9 = require("react");
388
+ var import_react_color_pick = require("@siamf/react-color-pick");
389
+ var import_jsx_runtime6 = require("react/jsx-runtime");
390
+ var ColorComponent = ({ onPick, onClose, items, recents }) => {
391
+ const [open, setOpen] = (0, import_react9.useState)(false);
392
+ const [value, setValue] = (0, import_react9.useState)("");
393
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_react9.Fragment, { children: [
394
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("button", { className: "flex gap-x-2 items-center", onClick: () => (onPick("#000000"), onClose == null ? void 0 : onClose()), children: [
395
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Palette, { className: "text-sm" }),
396
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: "Default" })
397
+ ] }),
398
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "grid grid-cols-10 gap-1 mt-2", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: "w-5.5 h-5.5 p-px border border-solid border-gray-200 cursor-pointer rounded-sm", onClick: () => (onPick(item), onClose == null ? void 0 : onClose()), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { background: item }, className: "w-full h-full rounded-sm" }) }, item)) }),
399
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h6", { className: "mt-2", children: "Recent Color" }),
400
+ recents.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "grid grid-cols-10 gap-1 mt-2", children: recents.map((c) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: "w-5.5 h-5.5 p-px border border-solid border-gray-200 cursor-pointer rounded-sm", onClick: () => (onPick(c), onClose == null ? void 0 : onClose()), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { background: c }, className: "w-full h-full rounded-sm" }) }, c)) }),
401
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { onClick: () => setOpen(!open), className: "mt-2", children: "More Color" }),
402
+ open && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { children: [
403
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
404
+ import_react_color_pick.ColorPicker,
405
+ {
406
+ value,
407
+ onChange: setValue
408
+ }
409
+ ),
410
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: "mt-2 w-full bg-gray-800 text-white py-1.5 rounded-lg", onClick: () => (onPick(value), onClose == null ? void 0 : onClose()), children: "Set Color" })
411
+ ] })
412
+ ] });
413
+ };
414
+ var ColorComponent_default = ColorComponent;
415
+
416
+ // src/extension/Color.tsx
417
+ var import_react10 = require("react");
418
+ var import_extension_text_style = require("@tiptap/extension-text-style");
419
+ var import_jsx_runtime7 = require("react/jsx-runtime");
420
+ var RECENT_COLORS_KEY = "tiptap_recent_colors";
421
+ var RECENT_COLORS_LIMIT = 10;
422
+ var normalizeHex = (c) => {
423
+ var _a;
424
+ return (_a = c == null ? void 0 : c.trim()) == null ? void 0 : _a.toUpperCase();
425
+ };
426
+ var readRecentColors = () => {
427
+ if (typeof window === "undefined") return [];
428
+ try {
429
+ const raw = window.localStorage.getItem(RECENT_COLORS_KEY);
430
+ if (!raw) return [];
431
+ const parsed = JSON.parse(raw);
432
+ if (!Array.isArray(parsed)) return [];
433
+ return parsed.filter((x) => typeof x === "string" && x.startsWith("#")).map(normalizeHex);
434
+ } catch (e) {
435
+ return [];
436
+ }
437
+ };
438
+ var writeRecentColors = (colors) => {
439
+ if (typeof window === "undefined") return;
440
+ window.localStorage.setItem(RECENT_COLORS_KEY, JSON.stringify(colors));
441
+ };
442
+ var pushRecentColor = (color) => {
443
+ const c = normalizeHex(color);
444
+ const prev = readRecentColors();
445
+ const next = [c, ...prev.filter((x) => normalizeHex(x) !== c)].slice(0, RECENT_COLORS_LIMIT);
446
+ writeRecentColors(next);
447
+ return next;
448
+ };
449
+ var Color = import_extension_text_style.Color.extend({
450
+ addOptions() {
451
+ var _a;
452
+ const parent = (_a = this.parent) == null ? void 0 : _a.call(this);
453
+ return __spreadProps(__spreadValues({}, parent), {
454
+ types: ["textStyle"],
455
+ colorLists: DEFAULT_COLOR_LIST,
456
+ showInBubbleMenu: true,
457
+ bubbleMenuPosition: 6,
458
+ component: ({ options, editor, dropdownContainerClassName }) => {
459
+ var _a2;
460
+ const items = (_a2 = options.colorLists) != null ? _a2 : DEFAULT_COLOR_LIST;
461
+ const Wrapper = () => {
462
+ const [recents, setRecents] = (0, import_react10.useState)([]);
463
+ (0, import_react10.useEffect)(() => {
464
+ setRecents(readRecentColors());
465
+ const onStorage = (e) => {
466
+ if (e.key === RECENT_COLORS_KEY) setRecents(readRecentColors());
467
+ };
468
+ window.addEventListener("storage", onStorage);
469
+ return () => window.removeEventListener("storage", onStorage);
470
+ }, []);
471
+ const onPick = (hex) => {
472
+ setRecents(pushRecentColor(hex));
473
+ editor.chain().focus().setColor(hex).run();
474
+ };
475
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
476
+ DropdownComponent_default,
477
+ {
478
+ className: options.className,
479
+ showArrow: options.showArrow,
480
+ content: options.content,
481
+ dropdownClassName: options.dropdownClassName,
482
+ style: options.style,
483
+ tooltip: options.tooltip,
484
+ tooltipClassName: options.tooltipClassName,
485
+ tooltipPlacement: options.tooltipPlacement,
486
+ _tooltipContent: "Color",
487
+ _internalContent: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ColorIconComponent_default, {}),
488
+ _dropdownClassName: "w-65 " + dropdownContainerClassName,
489
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
490
+ ColorComponent_default,
491
+ {
492
+ onPick: (e) => onPick(e),
493
+ items,
494
+ recents
495
+ }
496
+ )
497
+ }
498
+ );
499
+ };
500
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Wrapper, {});
501
+ }
502
+ });
503
+ }
504
+ });
505
+ var DEFAULT_COLOR_LIST = [
506
+ "#000000",
507
+ "#222222",
508
+ "#4F4F4F",
509
+ "#818181",
510
+ "#B7B7B7",
511
+ "#D4D4D4",
512
+ "#E6E6E6",
513
+ "#F3F3F3",
514
+ "#F9F9F9",
515
+ "#FFFFFF",
516
+ "#D0442D",
517
+ "#D86024",
518
+ "#DF7A18",
519
+ "#E2D625",
520
+ "#71AF1A",
521
+ "#58B1B6",
522
+ "#457DF4",
523
+ "#2B41E0",
524
+ "#5120C4",
525
+ "#C04897",
526
+ "#F4E3E3",
527
+ "#F9EEE3",
528
+ "#FBF4E0",
529
+ "#FBFBD8",
530
+ "#ECF7D9",
531
+ "#D9F1F2",
532
+ "#DAE8FF",
533
+ "#E4E5FF",
534
+ "#E8DFFB",
535
+ "#F2DFEB",
536
+ "#E9A29B",
537
+ "#EDB37D",
538
+ "#ECC676",
539
+ "#F8F671",
540
+ "#B3CE72",
541
+ "#8ED3C9",
542
+ "#7CB5FF",
543
+ "#919CF9",
544
+ "#B7A5F8",
545
+ "#E999C8",
546
+ "#E26652",
547
+ "#E48048",
548
+ "#EA9B3B",
549
+ "#F0E037",
550
+ "#8FBD35",
551
+ "#75C2C4",
552
+ "#5A8EF3",
553
+ "#4A60E4",
554
+ "#7240D0",
555
+ "#D86AAE",
556
+ "#AE392A",
557
+ "#AE5523",
558
+ "#AA701B",
559
+ "#AE9F1B",
560
+ "#4C8A16",
561
+ "#3D7D84",
562
+ "#3A50B9",
563
+ "#242DA0",
564
+ "#4729A0",
565
+ "#8D3475",
566
+ "#5C1811",
567
+ "#4E1A08",
568
+ "#4E2607",
569
+ "#413406",
570
+ "#1E3A07",
571
+ "#16333D",
572
+ "#182C7D",
573
+ "#0B0B5C",
574
+ "#19085E",
575
+ "#53184B"
576
+ ];
577
+
578
+ // src/extension/BackgroundColor.tsx
579
+ var import_jsx_runtime8 = require("react/jsx-runtime");
580
+ var RECENT_COLORS_KEY2 = "tiptap_recent_colors";
581
+ var RECENT_COLORS_LIMIT2 = 10;
582
+ var normalizeHex2 = (c) => {
583
+ var _a;
584
+ return (_a = c == null ? void 0 : c.trim()) == null ? void 0 : _a.toUpperCase();
585
+ };
586
+ var readRecentColors2 = () => {
587
+ if (typeof window === "undefined") return [];
588
+ try {
589
+ const raw = window.localStorage.getItem(RECENT_COLORS_KEY2);
590
+ if (!raw) return [];
591
+ const parsed = JSON.parse(raw);
592
+ if (!Array.isArray(parsed)) return [];
593
+ return parsed.filter((x) => typeof x === "string" && x.startsWith("#")).map(normalizeHex2);
594
+ } catch (e) {
595
+ return [];
596
+ }
597
+ };
598
+ var writeRecentColors2 = (colors) => {
599
+ if (typeof window === "undefined") return;
600
+ window.localStorage.setItem(RECENT_COLORS_KEY2, JSON.stringify(colors));
601
+ };
602
+ var pushRecentColor2 = (color) => {
603
+ const c = normalizeHex2(color);
604
+ const prev = readRecentColors2();
605
+ const next = [c, ...prev.filter((x) => normalizeHex2(x) !== c)].slice(0, RECENT_COLORS_LIMIT2);
606
+ writeRecentColors2(next);
607
+ return next;
608
+ };
609
+ var BackgroundColor = import_extension_text_style2.BackgroundColor.extend({
610
+ addOptions() {
611
+ var _a;
612
+ const parent = (_a = this.parent) == null ? void 0 : _a.call(this);
613
+ return __spreadProps(__spreadValues({}, parent), {
614
+ types: ["textStyle"],
615
+ showInBubbleMenu: true,
616
+ bubbleMenuPosition: 7,
617
+ colorLists: DEFAULT_COLOR_LIST,
618
+ component: ({ options, editor, dropdownContainerClassName }) => {
619
+ var _a2;
620
+ const items = (_a2 = options.colorLists) != null ? _a2 : DEFAULT_COLOR_LIST;
621
+ const Wrapper = () => {
622
+ const [recents, setRecents] = (0, import_react11.useState)([]);
623
+ (0, import_react11.useEffect)(() => {
624
+ setRecents(readRecentColors2());
625
+ const onStorage = (e) => {
626
+ if (e.key === RECENT_COLORS_KEY2) setRecents(readRecentColors2());
627
+ };
628
+ window.addEventListener("storage", onStorage);
629
+ return () => window.removeEventListener("storage", onStorage);
630
+ }, []);
631
+ const onPick = (hex) => {
632
+ setRecents(pushRecentColor2(hex));
633
+ editor.chain().focus().setBackgroundColor(hex).run();
634
+ };
635
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
636
+ DropdownComponent_default,
637
+ {
638
+ className: options.className,
639
+ showArrow: options.showArrow,
640
+ content: options.content,
641
+ dropdownClassName: options.dropdownClassName,
642
+ style: options.style,
643
+ tooltip: options.tooltip,
644
+ tooltipClassName: options.tooltipClassName,
645
+ tooltipPlacement: options.tooltipPlacement,
646
+ _tooltipContent: "Background Color",
647
+ _internalContent: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ColorIconComponent_default, { type: "background" }),
648
+ _dropdownClassName: "w-65 " + dropdownContainerClassName,
649
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
650
+ ColorComponent_default,
651
+ {
652
+ onPick: (e) => onPick(e),
653
+ items,
654
+ recents
655
+ }
656
+ )
657
+ }
658
+ );
659
+ };
660
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Wrapper, {});
661
+ }
662
+ });
663
+ }
664
+ });
665
+ // Annotate the CommonJS export names for ESM import in node:
666
+ 0 && (module.exports = {
667
+ BackgroundColor
668
+ });