@remarkablejames/editor 0.0.5 → 0.0.6
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.
- package/lib/{ActionMenuButton-DBZjUu-F.js → ActionMenuButton-CpmEfz31.js} +1 -1
- package/lib/{ActionMenuButton-C6jGtl3k.cjs → ActionMenuButton-NfiUDE60.cjs} +1 -1
- package/lib/Attachment.cjs +1 -1
- package/lib/Attachment.js +2 -2
- package/lib/Blockquote.cjs +1 -1
- package/lib/Blockquote.js +1 -1
- package/lib/Bold.cjs +1 -1
- package/lib/Bold.js +1 -1
- package/lib/BulletList.cjs +1 -1
- package/lib/BulletList.js +1 -1
- package/lib/Callout.cjs +1 -1
- package/lib/Callout.js +15 -16
- package/lib/Clear.cjs +1 -1
- package/lib/Clear.js +1 -1
- package/lib/Code.cjs +1 -1
- package/lib/Code.js +1 -1
- package/lib/CodeBlock.cjs +1 -1
- package/lib/CodeBlock.js +31 -32
- package/lib/CodeView.cjs +1 -1
- package/lib/CodeView.js +1 -1
- package/lib/Color.cjs +1 -1
- package/lib/Color.js +2 -2
- package/lib/Column.cjs +1 -1
- package/lib/Column.js +1 -1
- package/lib/{Drawer-DTCwtJEs.js → Drawer-CayP4Ww4.js} +13 -13
- package/lib/{Drawer-B031ezmA.cjs → Drawer-DlgdaO_B.cjs} +1 -1
- package/lib/Drawer.cjs +1 -1
- package/lib/Drawer.js +2 -2
- package/lib/Emoji.cjs +1 -1
- package/lib/Emoji.js +8 -8
- package/lib/Excalidraw.cjs +1 -1
- package/lib/Excalidraw.js +36 -36
- package/lib/ExportPdf.cjs +1 -1
- package/lib/ExportPdf.js +1 -1
- package/lib/ExportWord.cjs +1 -1
- package/lib/ExportWord.js +1 -1
- package/lib/FontFamily.cjs +1 -1
- package/lib/FontFamily.js +3 -3
- package/lib/FontSize.cjs +1 -1
- package/lib/FontSize.js +3 -3
- package/lib/Heading.cjs +1 -1
- package/lib/Heading.js +8 -8
- package/lib/Highlight.cjs +1 -1
- package/lib/Highlight.js +2 -2
- package/lib/History.cjs +1 -1
- package/lib/History.js +1 -1
- package/lib/HorizontalRule.cjs +1 -1
- package/lib/HorizontalRule.js +1 -1
- package/lib/{Iframe-D-UYBxiv.js → Iframe-C6Sb97KS.js} +5 -5
- package/lib/{Iframe-BUK2pkOL.cjs → Iframe-CANdxSpV.cjs} +1 -1
- package/lib/Iframe.cjs +1 -1
- package/lib/Iframe.js +2 -2
- package/lib/Image.cjs +1 -1
- package/lib/Image.js +3 -3
- package/lib/ImageGif.cjs +1 -1
- package/lib/ImageGif.js +19 -19
- package/lib/ImportWord.cjs +1 -1
- package/lib/ImportWord.js +12 -12
- package/lib/{Indent-Bvt-Qwar.js → Indent-CcFe8py3.js} +1 -1
- package/lib/{Indent-_y6N8MIQ.cjs → Indent-DuB2U6Cs.cjs} +1 -1
- package/lib/Indent.cjs +1 -1
- package/lib/Indent.js +1 -1
- package/lib/Italic.cjs +1 -1
- package/lib/Italic.js +1 -1
- package/lib/{Katex-CJDtvu-v.js → Katex-Bp6AnIUF.js} +3 -4
- package/lib/Katex-DFU1unCm.cjs +4 -0
- package/lib/Katex.cjs +1 -1
- package/lib/Katex.js +1 -1
- package/lib/LineHeight.cjs +1 -1
- package/lib/LineHeight.js +2 -2
- package/lib/Link.cjs +1 -1
- package/lib/Link.js +1 -1
- package/lib/{LinkEditBlock-Cdqwj_NU.js → LinkEditBlock-BiHumIJR.js} +7 -7
- package/lib/{LinkEditBlock-ewTApx0K.cjs → LinkEditBlock-C2zX0WVK.cjs} +1 -1
- package/lib/Mermaid-B8lQSOGn.cjs +2 -0
- package/lib/{Mermaid-CnMYVX1P.js → Mermaid-Dlx0XTJj.js} +23 -24
- package/lib/Mermaid.cjs +1 -1
- package/lib/Mermaid.js +1 -1
- package/lib/MoreMark.cjs +1 -1
- package/lib/MoreMark.js +2 -2
- package/lib/OrderedList.cjs +1 -1
- package/lib/OrderedList.js +1 -1
- package/lib/PaywallSeparator.cjs +1 -0
- package/lib/PaywallSeparator.js +140 -0
- package/lib/SearchAndReplace.cjs +1 -1
- package/lib/SearchAndReplace.js +7 -7
- package/lib/SlashCommand.cjs +1 -1
- package/lib/SlashCommand.js +2 -2
- package/lib/SlashCommandNodeView-BfWNWGRr.cjs +1 -0
- package/lib/{SlashCommandNodeView-DcoLvt_6.js → SlashCommandNodeView-DzmsYaNc.js} +73 -57
- package/lib/Strike.cjs +1 -1
- package/lib/Strike.js +1 -1
- package/lib/{Table-B8CHl8jK.cjs → Table-BfM6ywrZ.cjs} +1 -1
- package/lib/{Table-Cu12PvQ_.js → Table-IH34r4jd.js} +2 -2
- package/lib/Table.cjs +1 -1
- package/lib/Table.js +1 -1
- package/lib/TaskList.cjs +1 -1
- package/lib/TaskList.js +1 -1
- package/lib/TextAlign.cjs +1 -1
- package/lib/TextAlign.js +2 -2
- package/lib/TextDirection.cjs +1 -1
- package/lib/TextDirection.js +2 -2
- package/lib/TextUnderline.cjs +1 -1
- package/lib/TextUnderline.js +1 -1
- package/lib/{Twitter-CrX4XY1j.js → Twitter-FVQKPaq6.js} +7 -7
- package/lib/{Twitter-6HYP_upt.cjs → Twitter-axcoCgD7.cjs} +1 -1
- package/lib/Twitter.cjs +1 -1
- package/lib/Twitter.js +1 -1
- package/lib/Video.cjs +1 -1
- package/lib/Video.js +3 -3
- package/lib/bubble.cjs +3 -3
- package/lib/bubble.js +81 -83
- package/lib/{dropdown-menu-CVwXaR3Z.js → dropdown-menu-Ce2TorkG.js} +1 -1
- package/lib/{dropdown-menu-XIrQk3jr.cjs → dropdown-menu-DirUyRAI.cjs} +1 -1
- package/lib/extensions/PaywallSeparator/PaywallSeparator.d.ts +35 -0
- package/lib/extensions/PaywallSeparator/components/PaywallIcon.d.ts +2 -0
- package/lib/extensions/PaywallSeparator/components/PaywallSeparatorView.d.ts +17 -0
- package/lib/extensions/PaywallSeparator/components/RichTextPaywallSeparator.d.ts +1 -0
- package/lib/extensions/PaywallSeparator/components/index.d.ts +2 -0
- package/lib/extensions/PaywallSeparator/index.d.ts +1 -0
- package/lib/index-BynXHtjJ.cjs +28 -0
- package/lib/{index-B0d-u29p.js → index-CnKgiZFQ.js} +1201 -1050
- package/lib/index.cjs +1 -1
- package/lib/index.js +27 -27
- package/lib/{popover-0syCfWYi.cjs → popover-BdLwAlrM.cjs} +1 -1
- package/lib/{popover-DDT8YRht.js → popover-BzJyaFvy.js} +1 -1
- package/lib/{separator-D8lOAf8f.cjs → separator-CoQaQmFK.cjs} +1 -1
- package/lib/{separator-DRGTEiX4.js → separator-D-fyzbfx.js} +14 -14
- package/lib/style.css +1 -1
- package/lib/types.d.ts +5 -5
- package/package.json +14 -1
- package/lib/Katex-bJXkt-VP.cjs +0 -4
- package/lib/Mermaid-Dwz9o-yM.cjs +0 -2
- package/lib/SlashCommandNodeView-BMgQJ4xT.cjs +0 -1
- package/lib/index-De9MZVWQ.cjs +0 -28
- package/lib/select-D9wQw2qB.js +0 -120
- package/lib/select-DTNz0ZeE.cjs +0 -1
- package/lib/textarea-DfVzbMr5.js +0 -20
- package/lib/textarea-DpkwluT0.cjs +0 -1
package/lib/OrderedList.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { O as u } from "./index-DZj2z9_1.js";
|
|
2
2
|
import { jsx as n, Fragment as l } from "react/jsx-runtime";
|
|
3
|
-
import { u as f, d as v, A as O } from "./index-
|
|
3
|
+
import { u as f, d as v, A as O } from "./index-CnKgiZFQ.js";
|
|
4
4
|
import "react";
|
|
5
5
|
import "./theme.js";
|
|
6
6
|
function K() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),a=require("./index-BynXHtjJ.cjs");require("react");require("./theme.cjs");const r=require("./clsx-CXbNJWDD.cjs");function h(){const e=a.useButtonProps(c.name),{icon:n=void 0,tooltip:s=void 0,shortcutKeys:l=void 0,tooltipOptions:i={},action:o=void 0,isActive:p=void 0}=(e==null?void 0:e.componentProps)??{},{dataState:u,disabled:d,update:y}=a.useToggleActive(p),x=()=>{d||o&&(o(),y())};return e?t.jsx(a.ActionButton,{action:x,dataState:u,disabled:d,icon:n,shortcutKeys:l,tooltip:s,tooltipOptions:i}):t.jsx(t.Fragment,{})}const m=({editor:e})=>e.isEditable?t.jsxs(r.NodeViewWrapper,{as:"div","data-type":"paywallSeparator",className:"richtext-relative richtext-flex richtext-items-center richtext-select-none richtext-my-4",children:[t.jsx("div",{className:"richtext-absolute richtext-inset-x-0",style:{height:"2px",backgroundImage:"linear-gradient(90deg, #fdba74, #f97316, #fdba74)"}}),t.jsx("div",{className:"richtext-relative richtext-mx-auto",children:t.jsx("div",{className:"richtext-rounded-sm richtext-px-3 richtext-py-1 richtext-text-xs richtext-font-semibold richtext-text-orange-700 richtext-shadow-sm",style:{background:"rgba(255, 255, 255, 0.95)",backdropFilter:"blur(4px)",border:"1px solid #d1d5db",outline:"1px solid #f3f4f6"},children:"🔒 Paywall boundary — readers without access will not see anything below this line"})})]}):t.jsx(r.NodeViewWrapper,{as:"div","data-type":"paywallSeparator",style:{display:"none"}}),c=r.Node3.create({name:"paywallSeparator",addOptions(){return{HTMLAttributes:{},divider:!1,spacer:!1,toolbar:!0,button:({editor:e})=>({component:a.ActionButton,componentProps:{action:()=>e.commands.insertPaywall(),disabled:!e.can().insertPaywall(),icon:"PaywallIcon",shortcutKeys:["mod","alt","P"],tooltip:"Insert paywall separator"}})}},group:"block",selectable:!0,atom:!0,draggable:!0,parseHTML(){return[{tag:'div[data-type="paywallSeparator"]'}]},renderHTML({HTMLAttributes:e}){return["div",r.mergeAttributes(this.options.HTMLAttributes,e,{"data-type":"paywallSeparator"}),["hr"]]},addNodeView(){return r.ReactNodeViewRenderer(m)},addCommands(){return{insertPaywall:()=>({commands:e,state:n,dispatch:s})=>{const{doc:l}=n;let i=!1;return l.descendants(o=>{if(o.type.name==="paywallSeparator")return i=!0,!1}),i?(s!==void 0&&a.toast({title:"Paywall already added",description:"Only one paywall separator is allowed per document. Remove the existing one before adding another.",variant:"destructive",duration:4e3}),!1):e.insertContent({type:this.name})}}},addKeyboardShortcuts(){return{"Mod-Alt-p":()=>this.editor.commands.insertPaywall()}}});exports.PaywallSeparator=c;exports.RichTextPaywallSeparator=h;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { jsx as e, Fragment as y, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import { u as x, d as w, A as d, F as b } from "./index-CnKgiZFQ.js";
|
|
3
|
+
import "react";
|
|
4
|
+
import "./theme.js";
|
|
5
|
+
import { h as l, N as f, k as v, m as g } from "./clsx-BUPZHhq3.js";
|
|
6
|
+
function H() {
|
|
7
|
+
const t = x(S.name), {
|
|
8
|
+
icon: o = void 0,
|
|
9
|
+
tooltip: i = void 0,
|
|
10
|
+
shortcutKeys: s = void 0,
|
|
11
|
+
tooltipOptions: a = {},
|
|
12
|
+
action: r = void 0,
|
|
13
|
+
isActive: c = void 0
|
|
14
|
+
} = (t == null ? void 0 : t.componentProps) ?? {}, { dataState: p, disabled: n, update: u } = w(c), m = () => {
|
|
15
|
+
n || r && (r(), u());
|
|
16
|
+
};
|
|
17
|
+
return t ? /* @__PURE__ */ e(
|
|
18
|
+
d,
|
|
19
|
+
{
|
|
20
|
+
action: m,
|
|
21
|
+
dataState: p,
|
|
22
|
+
disabled: n,
|
|
23
|
+
icon: o,
|
|
24
|
+
shortcutKeys: s,
|
|
25
|
+
tooltip: i,
|
|
26
|
+
tooltipOptions: a
|
|
27
|
+
}
|
|
28
|
+
) : /* @__PURE__ */ e(y, {});
|
|
29
|
+
}
|
|
30
|
+
const P = ({ editor: t }) => t.isEditable ? /* @__PURE__ */ h(
|
|
31
|
+
l,
|
|
32
|
+
{
|
|
33
|
+
as: "div",
|
|
34
|
+
"data-type": "paywallSeparator",
|
|
35
|
+
className: "richtext-relative richtext-flex richtext-items-center richtext-select-none richtext-my-4",
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ e(
|
|
38
|
+
"div",
|
|
39
|
+
{
|
|
40
|
+
className: "richtext-absolute richtext-inset-x-0",
|
|
41
|
+
style: {
|
|
42
|
+
height: "2px",
|
|
43
|
+
backgroundImage: "linear-gradient(90deg, #fdba74, #f97316, #fdba74)"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ e("div", { className: "richtext-relative richtext-mx-auto", children: /* @__PURE__ */ e(
|
|
48
|
+
"div",
|
|
49
|
+
{
|
|
50
|
+
className: "richtext-rounded-sm richtext-px-3 richtext-py-1 richtext-text-xs richtext-font-semibold richtext-text-orange-700 richtext-shadow-sm",
|
|
51
|
+
style: {
|
|
52
|
+
background: "rgba(255, 255, 255, 0.95)",
|
|
53
|
+
backdropFilter: "blur(4px)",
|
|
54
|
+
border: "1px solid #d1d5db",
|
|
55
|
+
outline: "1px solid #f3f4f6"
|
|
56
|
+
},
|
|
57
|
+
children: "🔒 Paywall boundary — readers without access will not see anything below this line"
|
|
58
|
+
}
|
|
59
|
+
) })
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
) : /* @__PURE__ */ e(
|
|
63
|
+
l,
|
|
64
|
+
{
|
|
65
|
+
as: "div",
|
|
66
|
+
"data-type": "paywallSeparator",
|
|
67
|
+
style: { display: "none" }
|
|
68
|
+
}
|
|
69
|
+
), S = /* @__PURE__ */ f.create({
|
|
70
|
+
name: "paywallSeparator",
|
|
71
|
+
addOptions() {
|
|
72
|
+
return {
|
|
73
|
+
HTMLAttributes: {},
|
|
74
|
+
divider: !1,
|
|
75
|
+
spacer: !1,
|
|
76
|
+
toolbar: !0,
|
|
77
|
+
button: ({ editor: t }) => ({
|
|
78
|
+
component: d,
|
|
79
|
+
componentProps: {
|
|
80
|
+
action: () => t.commands.insertPaywall(),
|
|
81
|
+
disabled: !t.can().insertPaywall(),
|
|
82
|
+
icon: "PaywallIcon",
|
|
83
|
+
shortcutKeys: ["mod", "alt", "P"],
|
|
84
|
+
tooltip: "Insert paywall separator"
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
group: "block",
|
|
90
|
+
selectable: !0,
|
|
91
|
+
atom: !0,
|
|
92
|
+
draggable: !0,
|
|
93
|
+
parseHTML() {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
tag: 'div[data-type="paywallSeparator"]'
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
},
|
|
100
|
+
renderHTML({ HTMLAttributes: t }) {
|
|
101
|
+
return [
|
|
102
|
+
"div",
|
|
103
|
+
g(this.options.HTMLAttributes, t, {
|
|
104
|
+
"data-type": "paywallSeparator"
|
|
105
|
+
}),
|
|
106
|
+
["hr"]
|
|
107
|
+
];
|
|
108
|
+
},
|
|
109
|
+
addNodeView() {
|
|
110
|
+
return v(P);
|
|
111
|
+
},
|
|
112
|
+
addCommands() {
|
|
113
|
+
return {
|
|
114
|
+
insertPaywall: () => ({ commands: t, state: o, dispatch: i }) => {
|
|
115
|
+
const { doc: s } = o;
|
|
116
|
+
let a = !1;
|
|
117
|
+
return s.descendants((r) => {
|
|
118
|
+
if (r.type.name === "paywallSeparator")
|
|
119
|
+
return a = !0, !1;
|
|
120
|
+
}), a ? (i !== void 0 && b({
|
|
121
|
+
title: "Paywall already added",
|
|
122
|
+
description: "Only one paywall separator is allowed per document. Remove the existing one before adding another.",
|
|
123
|
+
variant: "destructive",
|
|
124
|
+
duration: 4e3
|
|
125
|
+
}), !1) : t.insertContent({
|
|
126
|
+
type: this.name
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
},
|
|
131
|
+
addKeyboardShortcuts() {
|
|
132
|
+
return {
|
|
133
|
+
"Mod-Alt-p": () => this.editor.commands.insertPaywall()
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
export {
|
|
138
|
+
S as PaywallSeparator,
|
|
139
|
+
H as RichTextPaywallSeparator
|
|
140
|
+
};
|
package/lib/SearchAndReplace.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const G=require("./clsx-CXbNJWDD.cjs"),D=require("@tiptap/pm/state"),b=require("@tiptap/pm/view"),a=require("react/jsx-runtime"),g=require("react"),x=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const G=require("./clsx-CXbNJWDD.cjs"),D=require("@tiptap/pm/state"),b=require("@tiptap/pm/view"),a=require("react/jsx-runtime"),g=require("react"),x=require("./index-BynXHtjJ.cjs");require("./theme.cjs");const q=require("./popover-BdLwAlrM.cjs"),J=require("./index-DgOXAdKt.cjs");function Q(){const{t}=J.useLocale(),e=x.useEditorInstance(),s=x.useButtonProps(F.name),{icon:n=void 0,tooltip:u=void 0,shortcutKeys:o=void 0,tooltipOptions:c={},action:h=void 0,isActive:m=void 0}=(s==null?void 0:s.componentProps)??{},{disabled:i}=x.useActive(m),[R,f]=g.useState(!1),[p,T]=g.useState(""),[C,N]=g.useState(""),[j,M]=g.useState(!1),[V,B]=g.useState(""),w=()=>{var r,l,v,d;B(`${((l=(r=e==null?void 0:e.storage)==null?void 0:r.searchAndReplace)==null?void 0:l.resultIndex)+1}/${(d=(v=e==null?void 0:e.storage)==null?void 0:v.searchAndReplace)==null?void 0:d.results.length}`)};g.useEffect(()=>{e&&w()},[e]);const K=()=>{i||h&&h()},P=(r=!1)=>{var l,v,d,S,A,L,y,$;e&&(r&&((v=(l=e==null?void 0:e.commands)==null?void 0:l.resetIndex)==null||v.call(l)),(S=(d=e==null?void 0:e.commands)==null?void 0:d.setSearchTerm)==null||S.call(d,p),(L=(A=e==null?void 0:e.commands)==null?void 0:A.setReplaceTerm)==null||L.call(A,C),($=(y=e==null?void 0:e.commands)==null?void 0:y.setCaseSensitive)==null||$.call(y,j),w())},k=()=>{var S,A;if(!e)return;const{results:r,resultIndex:l}=e.storage.searchAndReplace,v=r[l];if(!v)return;(A=(S=e==null?void 0:e.commands)==null?void 0:S.setTextSelection)==null||A.call(S,v);const{node:d}=e.view.domAtPos(e.state.selection.anchor);d instanceof HTMLElement&&d.scrollIntoView({behavior:"smooth",block:"center"}),w()};g.useEffect(()=>{p.trim()||E(),p.trim()&&P(!0)},[p]),g.useEffect(()=>{C.trim()&&P()},[C]),g.useEffect(()=>{P(!0)},[j]);const W=()=>{var r,l;(l=(r=e==null?void 0:e.commands)==null?void 0:r.replace)==null||l.call(r),k()},H=()=>{var r,l;(l=(r=e==null?void 0:e.commands)==null?void 0:r.nextSearchResult)==null||l.call(r),k()},U=()=>{var r,l;(l=(r=e==null?void 0:e.commands)==null?void 0:r.previousSearchResult)==null||l.call(r),k()},E=()=>{var r,l;T(""),N(""),(l=(r=e==null?void 0:e.commands)==null?void 0:r.resetIndex)==null||l.call(r),w()},z=()=>{var r,l;(l=(r=e==null?void 0:e.commands)==null?void 0:r.replaceAll)==null||l.call(r),B("0/0")};return s?a.jsxs(q.Popover,{onOpenChange:f,open:R,children:[a.jsx(q.PopoverTrigger,{asChild:!0,disabled:i,children:a.jsx(x.ActionButton,{action:K,disabled:i,icon:n,shortcutKeys:o,tooltip:u,tooltipOptions:c})}),a.jsxs(q.PopoverContent,{align:"start",className:"richtext-w-full",hideWhenDetached:!0,side:"bottom",children:[a.jsxs("div",{className:"richtext-mb-[6px] richtext-flex richtext-items-center richtext-justify-between",children:[a.jsx(x.Label,{children:t("editor.search.dialog.text")}),a.jsx("span",{className:"richtext-font-semibold",children:V})]}),a.jsxs("div",{className:"richtext-mb-[10px] richtext-flex richtext-w-full richtext-max-w-sm richtext-items-center richtext-gap-1.5",children:[a.jsx(x.Input,{autoFocus:!0,className:"richtext-w-full",onChange:r=>T(r.target.value),placeholder:"Text",required:!0,type:"text",value:p}),a.jsx(x.Button,{className:"richtext-flex-1",onClick:U,children:a.jsx(x.IconComponent,{name:"ChevronUp"})}),a.jsx(x.Button,{className:"richtext-flex-1",onClick:H,children:a.jsx(x.IconComponent,{name:"ChevronDown"})}),a.jsx(x.Button,{className:"richtext-flex-1",onClick:E,children:"Clear"})]}),a.jsx(x.Label,{className:"richtext-mb-[6px]",children:t("editor.replace.dialog.text")}),a.jsx("div",{className:"richtext-mb-[5px] richtext-flex richtext-w-full richtext-max-w-sm richtext-items-center richtext-gap-1.5",children:a.jsx("div",{className:"richtext-relative richtext-w-full richtext-max-w-sm richtext-items-center",children:a.jsx(x.Input,{className:"richtext-w-80",onChange:r=>N(r.target.value),placeholder:"Text",required:!0,type:"text",value:C})})}),a.jsxs("div",{className:"richtext-my-[10px] richtext-flex richtext-items-center richtext-gap-1",children:[a.jsx(x.Checkbox,{checked:j,onCheckedChange:r=>{M(r),e.commands.setCaseSensitive(r)}}),a.jsx(x.Label,{children:t("editor.replace.caseSensitive")})]}),a.jsxs("div",{className:"richtext-flex richtext-items-center richtext-gap-[10px]",children:[a.jsx(x.Button,{className:"richtext-flex-1",onClick:W,children:t("editor.replace.dialog.text")}),a.jsx(x.Button,{className:"richtext-flex-1",onClick:z,children:t("editor.replaceAll.dialog.text")})]})]})]}):a.jsx(a.Fragment,{})}const I=(t,e)=>e(t.tr);function X(t,e,s){return RegExp(e?t.replace(/[$()*+.?[\\\]^{|}]/g,String.raw`\$&`):t,s?"gu":"gui")}function Y(t,e,s,n){const u=[],o=[];let c=[],h=0;if(!e)return{decorationsToReturn:b.DecorationSet.empty,results:[]};t==null||t.descendants((m,i)=>{m.isText?c[h]?c[h]={text:c[h].text+m.text,pos:c[h].pos}:c[h]={text:`${m.text}`,pos:i}:h+=1}),c=c.filter(Boolean);for(const m of c){const{text:i,pos:R}=m,f=Array.from(i.matchAll(e)).filter(([p])=>p.trim());for(const p of f){if(p[0]==="")break;p.index!==void 0&&o.push({from:R+p.index,to:R+p.index+p[0].length})}}for(const[m,i]of o.entries()){const R=m===n?`${s} ${s}-current`:s,f=b.Decoration.inline(i.from,i.to,{class:R});u.push(f)}return{decorationsToReturn:b.DecorationSet.create(t,u),results:o}}function O(t,e,{state:s,dispatch:n}){if(!e[0])return;const{from:o,to:c}=e[0];n&&n(s.tr.insertText(t,o,c))}function Z(t,e,s,n){const u=e+1;if(!n[u])return null;const{from:o,to:c}=n[e],h=c-o-t.length+s,{from:m,to:i}=n[u];return n[u]={to:i-h,from:m-h},[h,n]}function _(t,e,{tr:s,dispatch:n}){let u=0,o=e.slice();if(o.length!==0){for(let c=0;c<o.length;c+=1){const{from:h,to:m}=o[c];s.insertText(t,h,m);const i=Z(t,c,u,o);i&&(u=i[0],o=i[1])}n(s)}}const F=G.Extension.create({name:"searchAndReplace",addOptions(){var t;return{...(t=this.parent)==null?void 0:t.call(this),searchTerm:"",replaceTerm:"",results:[],searchResultClass:"search-result",searchResultCurrentClass:"search-result-current",caseSensitive:!1,disableRegex:!0,onChange:()=>{},button:({editor:e,t:s})=>({componentProps:{action:()=>{},icon:"SearchAndReplace",tooltip:s("editor.searchAndReplace.tooltip"),isActive:()=>!0,editor:e}})}},addStorage(){return{searchTerm:"",replaceTerm:"",results:[],lastSearchTerm:"",caseSensitive:!1,lastCaseSensitive:!1,resultIndex:0,lastResultIndex:0}},addCommands(){return{setSearchTerm:t=>({editor:e,state:s,dispatch:n})=>(e.storage.searchAndReplace.searchTerm=t,I(s,n),!1),setReplaceTerm:t=>({editor:e,state:s,dispatch:n})=>(e.storage.searchAndReplace.replaceTerm=t,I(s,n),!1),setCaseSensitive:t=>({editor:e,state:s,dispatch:n})=>(e.storage.searchAndReplace.caseSensitive=t,I(s,n),!1),resetIndex:()=>({editor:t,state:e,dispatch:s})=>(t.storage.searchAndReplace.resultIndex=0,I(e,s),!1),nextSearchResult:()=>({editor:t})=>{const{results:e,resultIndex:s}=t.storage.searchAndReplace,n=s+1;return e[n]?t.storage.searchAndReplace.resultIndex=n:t.storage.searchAndReplace.resultIndex=0,!1},previousSearchResult:()=>({editor:t})=>{const{results:e,resultIndex:s}=t.storage.searchAndReplace,n=s-1;return e[n]?t.storage.searchAndReplace.resultIndex=n:t.storage.searchAndReplace.resultIndex=e.length-1,!1},replace:()=>({editor:t,state:e,dispatch:s})=>{const{replaceTerm:n,results:u,resultIndex:o}=t.storage.searchAndReplace,c=u[o];return c?(O(n,[c],{state:e,dispatch:s}),t.storage.searchAndReplace.results.splice(o,1)):(O(n,u,{state:e,dispatch:s}),t.storage.searchAndReplace.results.shift()),I(e,s),!1},replaceAll:()=>({editor:t,tr:e,state:s,dispatch:n})=>{const{replaceTerm:u,results:o}=t.storage.searchAndReplace;return _(u,o,{tr:e,dispatch:n}),t.storage.searchAndReplace.resultIndex=0,t.storage.searchAndReplace.results=[],I(s,n),!1}}},addProseMirrorPlugins(){const t=this.editor,{searchResultClass:e,disableRegex:s}=this.options,n=c=>t.storage.searchAndReplace.lastSearchTerm=c,u=c=>t.storage.searchAndReplace.lastCaseSensitive=c,o=c=>t.storage.searchAndReplace.lastResultIndex=c;return[new D.Plugin({key:new D.PluginKey(`richtextCustomPlugin${this.name}`),state:{init:()=>b.DecorationSet.empty,apply({doc:c,docChanged:h},m){const{searchTerm:i,lastSearchTerm:R,caseSensitive:f,lastCaseSensitive:p,resultIndex:T,lastResultIndex:C}=t.storage.searchAndReplace;if(!h&&R===i&&p===f&&C===T)return m;if(n(i),u(f),o(T),!i)return t.storage.searchAndReplace.results=[],b.DecorationSet.empty;const{decorationsToReturn:N,results:j}=Y(c,X(i,s,f),e,T);return t.storage.searchAndReplace.results=j,N}},props:{decorations(c){return this.getState(c)}}})]}});exports.RichTextSearchAndReplace=Q;exports.SearchAndReplace=F;
|
package/lib/SearchAndReplace.js
CHANGED
|
@@ -3,12 +3,12 @@ import { Plugin as X, PluginKey as Y } from "@tiptap/pm/state";
|
|
|
3
3
|
import { DecorationSet as $, Decoration as Z } from "@tiptap/pm/view";
|
|
4
4
|
import { jsx as u, Fragment as _, jsxs as T } from "react/jsx-runtime";
|
|
5
5
|
import { useState as b, useEffect as k } from "react";
|
|
6
|
-
import { h as ee, u as te, e as se, A as re, L as B, j as V, B as N, I as q, C as ne } from "./index-
|
|
6
|
+
import { h as ee, u as te, e as se, A as re, L as B, j as V, B as N, I as q, C as ne } from "./index-CnKgiZFQ.js";
|
|
7
7
|
import "./theme.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { P as ce, a as ae, b as le } from "./popover-BzJyaFvy.js";
|
|
9
|
+
import { u as oe } from "./index-BGd2HiwP.js";
|
|
10
10
|
function Ce() {
|
|
11
|
-
const { t } =
|
|
11
|
+
const { t } = oe(), e = ee(), s = te(xe.name), {
|
|
12
12
|
icon: n = void 0,
|
|
13
13
|
tooltip: i = void 0,
|
|
14
14
|
shortcutKeys: l = void 0,
|
|
@@ -61,8 +61,8 @@ function Ce() {
|
|
|
61
61
|
var r, a;
|
|
62
62
|
(a = (r = e == null ? void 0 : e.commands) == null ? void 0 : r.replaceAll) == null || a.call(r), j("0/0");
|
|
63
63
|
};
|
|
64
|
-
return s ? /* @__PURE__ */ T(
|
|
65
|
-
/* @__PURE__ */ u(
|
|
64
|
+
return s ? /* @__PURE__ */ T(ce, { onOpenChange: d, open: f, children: [
|
|
65
|
+
/* @__PURE__ */ u(ae, { asChild: !0, disabled: o, children: /* @__PURE__ */ u(
|
|
66
66
|
re,
|
|
67
67
|
{
|
|
68
68
|
action: H,
|
|
@@ -73,7 +73,7 @@ function Ce() {
|
|
|
73
73
|
tooltipOptions: c
|
|
74
74
|
}
|
|
75
75
|
) }),
|
|
76
|
-
/* @__PURE__ */ T(
|
|
76
|
+
/* @__PURE__ */ T(le, { align: "start", className: "richtext-w-full", hideWhenDetached: !0, side: "bottom", children: [
|
|
77
77
|
/* @__PURE__ */ T("div", { className: "richtext-mb-[6px] richtext-flex richtext-items-center richtext-justify-between", children: [
|
|
78
78
|
/* @__PURE__ */ u(B, { children: t("editor.search.dialog.text") }),
|
|
79
79
|
/* @__PURE__ */ u("span", { className: "richtext-font-semibold", children: W })
|
package/lib/SlashCommand.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./clsx-CXbNJWDD.cjs"),u=require("@tiptap/pm/state"),d=require("./index-Cs6cp0Y6.cjs"),r=require("./SlashCommandNodeView-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./clsx-CXbNJWDD.cjs"),u=require("@tiptap/pm/state"),d=require("./index-Cs6cp0Y6.cjs"),r=require("./SlashCommandNodeView-BfWNWGRr.cjs"),a=require("./updatePosition-Cjuj2E26.cjs"),s=require("react/jsx-runtime"),l=require("react"),m=require("./index-DgOXAdKt.cjs");function c({commandList:e}){const[,t]=r.useSignalCommandList(),{t:n}=m.useLocale();return l.useEffect(()=>{if(!(e!=null&&e.length)){const o=r.renderCommandListDefault({t:n});t(o);return}t(e)},[n,e]),s.jsx(s.Fragment,{})}const C=i.Extension.create({name:"richtextSlashCommand",priority:200,addProseMirrorPlugins(){return[d.Suggestion({pluginKey:new u.PluginKey("richtextSlashCommandPlugin"),editor:this.editor,char:"/",command:({editor:e,range:t,props:n})=>{const{view:o}=e;n.action({editor:e,range:t}),o.focus()},render:()=>{let e;return{onStart:t=>{t.clientRect&&(e=new i.ReactRenderer(r.SlashCommandNodeView,{props:t,editor:t.editor}),e.element.style.position="absolute",document.body.appendChild(e.element),a.updatePosition(t.editor,e.element))},onUpdate(t){e.updateProps(t),t.clientRect&&a.updatePosition(t.editor,e.element)},onKeyDown(t){var n;return t.event.key==="Escape"?(e.destroy(),e.element.remove(),!0):(n=e.ref)==null?void 0:n.onKeyDown(t)},onExit(){e&&(e.destroy(),e.element.remove())}}}})]}});exports.renderCommandListDefault=r.renderCommandListDefault;exports.useFilterCommandList=r.useFilterCommandList;exports.SlashCommand=C;exports.SlashCommandList=c;
|
package/lib/SlashCommand.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { E as i, R as a } from "./clsx-BUPZHhq3.js";
|
|
2
2
|
import { PluginKey as m } from "@tiptap/pm/state";
|
|
3
3
|
import { S as s } from "./index-D4M4hrH4.js";
|
|
4
|
-
import { u, r as l, S as d } from "./SlashCommandNodeView-
|
|
5
|
-
import { a as b } from "./SlashCommandNodeView-
|
|
4
|
+
import { u, r as l, S as d } from "./SlashCommandNodeView-DzmsYaNc.js";
|
|
5
|
+
import { a as b } from "./SlashCommandNodeView-DzmsYaNc.js";
|
|
6
6
|
import { u as o } from "./updatePosition-C294Pixi.js";
|
|
7
7
|
import { jsx as f, Fragment as c } from "react/jsx-runtime";
|
|
8
8
|
import { useEffect as h } from "react";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const d=require("react/jsx-runtime"),u=require("react"),x=require("./index-BynXHtjJ.cjs");require("./theme.cjs");const b=require("./index-DgOXAdKt.cjs"),C=require("./index-NsYff_Ni.cjs");function H({t:n}){const o=[{name:"format",title:n("editor.slash.format"),commands:[]},{name:"insert",title:n("editor.slash.insert"),commands:[]}];return b.HEADINGS.forEach(e=>{o[0].commands.push({name:`heading${e}`,label:n(e==="Paragraph"?"editor.paragraph.tooltip":`editor.heading.h${e}.tooltip`),aliases:[`h${e}`,"bt",`bt${e}`],iconName:`Heading${e}`,isActive:t=>e==="Paragraph"?!1:t.isActive("heading",{level:e})||!1,action:({editor:t,range:l})=>{const s=b.HEADINGS.find(m=>t.isActive("heading",{level:m}));if(e==="Paragraph"){s!==void 0&&s!=="Paragraph"&&t.commands.toggleHeading({level:s}),t.chain().focus().deleteRange(l).run();return}if(e){t.chain().focus().deleteRange(l).setHeading({level:e}).run();return}t.chain().focus().deleteRange(l).run()}})}),o[0].commands.push({name:"bulletList",label:n("editor.bulletlist.tooltip"),aliases:["ul","yxlb"],iconName:"List",isActive:e=>e.isActive("bulletList"),action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).toggleBulletList().run()}}),o[0].commands.push({name:"orderedlist",label:n("editor.orderedlist.tooltip"),aliases:["ol","yxlb"],iconName:"ListOrdered",isActive:e=>e.isActive("orderedList"),action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).toggleOrderedList().run()}}),o[0].commands.push({name:"taskList",label:n("editor.tasklist.tooltip"),iconName:"ListTodo",description:"Task list with todo items",aliases:["todo"],isActive:e=>e.isActive("taskList"),action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).toggleTaskList().run()}}),o[0].commands.push({name:"blockquote",label:n("editor.blockquote.tooltip"),description:"插入引入格式",aliases:["yr"],iconName:"TextQuote",isActive:e=>e.isActive("blockquote"),action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).setBlockquote().run()}}),o[0].commands.push({name:"codeBlock",label:n("editor.codeblock.tooltip"),iconName:"Code2",description:"Code block with syntax highlighting",shouldBeHidden:e=>e.isActive("columns"),isActive:e=>e.isActive("codeBlock"),action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).setCodeBlock().run()}}),o[1].commands.push({name:"image",label:n("editor.image.tooltip"),iconName:"ImageUp",description:"Insert a image",aliases:["image","tp","tupian"],shouldBeHidden:e=>e.isActive("columns"),action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).run();const l=x.EVENTS.UPLOAD_IMAGE(e.id);x.emit(l,!0)}}),o[1].commands.push({name:"table",label:n("editor.table.tooltip"),iconName:"Table",description:"Insert a table",aliases:["table","bg","biaoge","biao"],shouldBeHidden:e=>e.isActive("columns"),action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).insertTable({rows:3,cols:3,withHeaderRow:!1}).run()}}),o[1].commands.push({name:"horizontalRule",label:n("editor.horizontalrule.tooltip"),iconName:"Minus",description:"Insert a horizontal divider",aliases:["hr","fgx","fg"],action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).setHorizontalRule().run()}}),o[1].commands.push({name:"paywallSeparator",label:"Paywall Separator",iconName:"PaywallIcon",description:"Mark where free content ends and premium content begins",aliases:["paywall","pw","premium","lock"],shouldBeHidden:e=>{let t=!1;return e.state.doc.descendants(l=>{if(l.type.name==="paywallSeparator")return t=!0,!1}),t},action:({editor:e,range:t})=>{e.chain().focus().deleteRange(t).insertPaywall().run()}}),o[1].commands.push({name:"columns",label:n("editor.columns.tooltip"),iconName:"Columns2",description:"Add two column content",action:({editor:e})=>{e.chain().focus().insertColumns({cols:2}).run()}}),o}function N(n,o){return n.map(t=>({...t,commands:t.commands.filter(l=>{const s=l.label.toLowerCase().trim(),m=o.toLowerCase().trim();if(l.aliases){const f=l.aliases.map(h=>h.toLowerCase().trim()),g=s.match(m),r=f.some(h=>h.match(m));return g||r}return s.match(m)})})).filter(t=>t.commands.length>0)}const q=C.y([]);function L(){const[n,o]=C.V(q);return[n,o]}function j(n,o){const[e]=L(),[t,l]=u.useState(0),[s,m]=u.useState(0),f=u.useRef(null),{t:g}=b.useLocale(),r=N(e,n.query),h=u.useRef([]);u.useImperativeHandle(o,()=>({onKeyDown:v})),u.useEffect(()=>{if(!f.current)return;const a=s*1e3+t,i=h.current[a];i&&i.scrollIntoView({behavior:"smooth",block:"nearest"})},[t,s]);function v({event:a}){return a.key==="ArrowUp"?(A(),!0):a.key==="ArrowDown"?(R(),!0):a.key==="Enter"?(k(),!0):!1}function A(){var c;if(r.length===0)return!1;let a=t-1,i=s;a<0&&(i=s-1,a=((c=r[i])==null?void 0:c.commands.length)-1||0),i<0&&(i=r.length-1,a=r[i].commands.length-1),l(a),m(i)}function R(){if(r.length===0)return!1;const a=r[s].commands;let i=t+1,c=s;a.length-1<i&&(i=0,c=s+1),r.length-1<c&&(c=0),l(i),m(c)}function k(){if(r.length===0||s===-1||t===-1)return!1;w(s,t)}function w(a,i){const c=r[a].commands[i];n==null||n.command(c)}function I(a,i){w(a,i)}function y(a,i,c){h.current[a*1e3+i]=c}return d.jsx("div",{className:"richtext-max-h-[min(80vh,24rem)] richtext-flex-wrap richtext-overflow-y-auto richtext-overflow-x-hidden richtext-rounded-md !richtext-border !richtext-border-solid !richtext-border-border richtext-bg-popover richtext-p-1 richtext-text-popover-foreground richtext-shadow-md richtext-outline-none","data-richtext-portal":!0,ref:f,children:r!=null&&r.length?d.jsx("div",{className:"richtext-grid richtext-min-w-48 richtext-grid-cols-1 richtext-gap-0.5",children:r==null?void 0:r.map((a,i)=>d.jsxs(u.Fragment,{children:[d.jsx(x.Label,{className:"richtext-mx-[4px] richtext-mb-[4px] richtext-mt-[8px] !richtext-text-[0.65rem] richtext-uppercase",children:a.title}),a.commands.map((c,p)=>d.jsxs("button",{onClick:()=>I(i,p),ref:S=>y(i,p,S),className:x.cn("richtext-flex richtext-w-full richtext-items-center richtext-gap-3 richtext-rounded-sm !richtext-border-none !richtext-bg-transparent richtext-px-2 richtext-py-1.5 richtext-text-left richtext-text-sm richtext-text-foreground !richtext-outline-none richtext-transition-colors hover:!richtext-bg-accent",{"bg-item-active":s===i&&t===p}),children:[c.iconUrl&&d.jsx("img",{alt:"",className:"richtext-size-6",src:c.iconUrl}),c.iconName&&d.jsx(x.IconComponent,{className:"!richtext-mr-1 !richtext-text-lg",name:c.iconName}),c.label]},`command-${p}`))]},`slash-${a.title}`))}):d.jsx("div",{className:"richtext-p-3",children:d.jsx("span",{className:"richtext-text-xs richtext-text-foreground",children:g("editor.slash.empty")})})})}const E=u.forwardRef(j);exports.SlashCommandNodeView=E;exports.renderCommandListDefault=H;exports.useFilterCommandList=N;exports.useSignalCommandList=L;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { jsx as d, jsxs as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { E as B,
|
|
1
|
+
import { jsx as d, jsxs as g } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as y, useState as b, useRef as w, useImperativeHandle as H, useEffect as S, Fragment as E } from "react";
|
|
3
|
+
import { E as B, z, L as P, c as T, I as $ } from "./index-CnKgiZFQ.js";
|
|
4
4
|
import "./theme.js";
|
|
5
|
-
import { H as
|
|
6
|
-
import { y as
|
|
5
|
+
import { H as N, u as q } from "./index-BGd2HiwP.js";
|
|
6
|
+
import { y as D, V as G } from "./index-BG0kQamI.js";
|
|
7
7
|
function X({ t: n }) {
|
|
8
|
-
const
|
|
8
|
+
const o = [
|
|
9
9
|
{
|
|
10
10
|
name: "format",
|
|
11
11
|
title: n("editor.slash.format"),
|
|
@@ -17,15 +17,15 @@ function X({ t: n }) {
|
|
|
17
17
|
commands: []
|
|
18
18
|
}
|
|
19
19
|
];
|
|
20
|
-
return
|
|
21
|
-
|
|
20
|
+
return N.forEach((e) => {
|
|
21
|
+
o[0].commands.push({
|
|
22
22
|
name: `heading${e}`,
|
|
23
23
|
label: n(e === "Paragraph" ? "editor.paragraph.tooltip" : `editor.heading.h${e}.tooltip`),
|
|
24
24
|
aliases: [`h${e}`, "bt", `bt${e}`],
|
|
25
25
|
iconName: `Heading${e}`,
|
|
26
26
|
isActive: (t) => e === "Paragraph" ? !1 : t.isActive("heading", { level: e }) || !1,
|
|
27
27
|
action: ({ editor: t, range: l }) => {
|
|
28
|
-
const r =
|
|
28
|
+
const r = N.find(
|
|
29
29
|
(m) => t.isActive("heading", { level: m })
|
|
30
30
|
);
|
|
31
31
|
if (e === "Paragraph") {
|
|
@@ -39,7 +39,7 @@ function X({ t: n }) {
|
|
|
39
39
|
t.chain().focus().deleteRange(l).run();
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
-
}),
|
|
42
|
+
}), o[0].commands.push({
|
|
43
43
|
name: "bulletList",
|
|
44
44
|
label: n("editor.bulletlist.tooltip"),
|
|
45
45
|
aliases: ["ul", "yxlb"],
|
|
@@ -48,7 +48,7 @@ function X({ t: n }) {
|
|
|
48
48
|
action: ({ editor: e, range: t }) => {
|
|
49
49
|
e.chain().focus().deleteRange(t).toggleBulletList().run();
|
|
50
50
|
}
|
|
51
|
-
}),
|
|
51
|
+
}), o[0].commands.push({
|
|
52
52
|
name: "orderedlist",
|
|
53
53
|
label: n("editor.orderedlist.tooltip"),
|
|
54
54
|
aliases: ["ol", "yxlb"],
|
|
@@ -57,7 +57,7 @@ function X({ t: n }) {
|
|
|
57
57
|
action: ({ editor: e, range: t }) => {
|
|
58
58
|
e.chain().focus().deleteRange(t).toggleOrderedList().run();
|
|
59
59
|
}
|
|
60
|
-
}),
|
|
60
|
+
}), o[0].commands.push({
|
|
61
61
|
name: "taskList",
|
|
62
62
|
label: n("editor.tasklist.tooltip"),
|
|
63
63
|
iconName: "ListTodo",
|
|
@@ -67,7 +67,7 @@ function X({ t: n }) {
|
|
|
67
67
|
action: ({ editor: e, range: t }) => {
|
|
68
68
|
e.chain().focus().deleteRange(t).toggleTaskList().run();
|
|
69
69
|
}
|
|
70
|
-
}),
|
|
70
|
+
}), o[0].commands.push({
|
|
71
71
|
name: "blockquote",
|
|
72
72
|
label: n("editor.blockquote.tooltip"),
|
|
73
73
|
description: "插入引入格式",
|
|
@@ -77,7 +77,7 @@ function X({ t: n }) {
|
|
|
77
77
|
action: ({ editor: e, range: t }) => {
|
|
78
78
|
e.chain().focus().deleteRange(t).setBlockquote().run();
|
|
79
79
|
}
|
|
80
|
-
}),
|
|
80
|
+
}), o[0].commands.push({
|
|
81
81
|
name: "codeBlock",
|
|
82
82
|
label: n("editor.codeblock.tooltip"),
|
|
83
83
|
iconName: "Code2",
|
|
@@ -87,7 +87,7 @@ function X({ t: n }) {
|
|
|
87
87
|
action: ({ editor: e, range: t }) => {
|
|
88
88
|
e.chain().focus().deleteRange(t).setCodeBlock().run();
|
|
89
89
|
}
|
|
90
|
-
}),
|
|
90
|
+
}), o[1].commands.push({
|
|
91
91
|
name: "image",
|
|
92
92
|
label: n("editor.image.tooltip"),
|
|
93
93
|
iconName: "ImageUp",
|
|
@@ -97,9 +97,9 @@ function X({ t: n }) {
|
|
|
97
97
|
action: ({ editor: e, range: t }) => {
|
|
98
98
|
e.chain().focus().deleteRange(t).run();
|
|
99
99
|
const l = B.UPLOAD_IMAGE(e.id);
|
|
100
|
-
|
|
100
|
+
z(l, !0);
|
|
101
101
|
}
|
|
102
|
-
}),
|
|
102
|
+
}), o[1].commands.push({
|
|
103
103
|
name: "table",
|
|
104
104
|
label: n("editor.table.tooltip"),
|
|
105
105
|
iconName: "Table",
|
|
@@ -109,7 +109,7 @@ function X({ t: n }) {
|
|
|
109
109
|
action: ({ editor: e, range: t }) => {
|
|
110
110
|
e.chain().focus().deleteRange(t).insertTable({ rows: 3, cols: 3, withHeaderRow: !1 }).run();
|
|
111
111
|
}
|
|
112
|
-
}),
|
|
112
|
+
}), o[1].commands.push({
|
|
113
113
|
name: "horizontalRule",
|
|
114
114
|
label: n("editor.horizontalrule.tooltip"),
|
|
115
115
|
iconName: "Minus",
|
|
@@ -118,7 +118,23 @@ function X({ t: n }) {
|
|
|
118
118
|
action: ({ editor: e, range: t }) => {
|
|
119
119
|
e.chain().focus().deleteRange(t).setHorizontalRule().run();
|
|
120
120
|
}
|
|
121
|
-
}),
|
|
121
|
+
}), o[1].commands.push({
|
|
122
|
+
name: "paywallSeparator",
|
|
123
|
+
label: "Paywall Separator",
|
|
124
|
+
iconName: "PaywallIcon",
|
|
125
|
+
description: "Mark where free content ends and premium content begins",
|
|
126
|
+
aliases: ["paywall", "pw", "premium", "lock"],
|
|
127
|
+
shouldBeHidden: (e) => {
|
|
128
|
+
let t = !1;
|
|
129
|
+
return e.state.doc.descendants((l) => {
|
|
130
|
+
if (l.type.name === "paywallSeparator")
|
|
131
|
+
return t = !0, !1;
|
|
132
|
+
}), t;
|
|
133
|
+
},
|
|
134
|
+
action: ({ editor: e, range: t }) => {
|
|
135
|
+
e.chain().focus().deleteRange(t).insertPaywall().run();
|
|
136
|
+
}
|
|
137
|
+
}), o[1].commands.push({
|
|
122
138
|
name: "columns",
|
|
123
139
|
label: n("editor.columns.tooltip"),
|
|
124
140
|
iconName: "Columns2",
|
|
@@ -126,16 +142,16 @@ function X({ t: n }) {
|
|
|
126
142
|
action: ({ editor: e }) => {
|
|
127
143
|
e.chain().focus().insertColumns({ cols: 2 }).run();
|
|
128
144
|
}
|
|
129
|
-
}),
|
|
145
|
+
}), o;
|
|
130
146
|
}
|
|
131
|
-
function
|
|
147
|
+
function V(n, o) {
|
|
132
148
|
return n.map((t) => ({
|
|
133
149
|
...t,
|
|
134
150
|
commands: t.commands.filter((l) => {
|
|
135
|
-
const r = l.label.toLowerCase().trim(), m =
|
|
151
|
+
const r = l.label.toLowerCase().trim(), m = o.toLowerCase().trim();
|
|
136
152
|
if (l.aliases) {
|
|
137
|
-
const
|
|
138
|
-
(
|
|
153
|
+
const h = l.aliases.map((u) => u.toLowerCase().trim()), x = r.match(m), s = h.some(
|
|
154
|
+
(u) => u.match(m)
|
|
139
155
|
);
|
|
140
156
|
return x || s;
|
|
141
157
|
}
|
|
@@ -143,70 +159,70 @@ function P(n, a) {
|
|
|
143
159
|
})
|
|
144
160
|
})).filter((t) => t.commands.length > 0);
|
|
145
161
|
}
|
|
146
|
-
const
|
|
147
|
-
function
|
|
148
|
-
const [n,
|
|
149
|
-
return [n,
|
|
162
|
+
const M = D([]);
|
|
163
|
+
function U() {
|
|
164
|
+
const [n, o] = G(M);
|
|
165
|
+
return [n, o];
|
|
150
166
|
}
|
|
151
|
-
function
|
|
152
|
-
const [e] =
|
|
153
|
-
|
|
154
|
-
onKeyDown:
|
|
167
|
+
function F(n, o) {
|
|
168
|
+
const [e] = U(), [t, l] = b(0), [r, m] = b(0), h = w(null), { t: x } = q(), s = V(e, n.query), u = w([]);
|
|
169
|
+
H(o, () => ({
|
|
170
|
+
onKeyDown: v
|
|
155
171
|
})), S(() => {
|
|
156
|
-
if (!
|
|
172
|
+
if (!h.current)
|
|
157
173
|
return;
|
|
158
|
-
const
|
|
174
|
+
const a = r * 1e3 + t, i = u.current[a];
|
|
159
175
|
i && i.scrollIntoView({
|
|
160
176
|
behavior: "smooth",
|
|
161
177
|
block: "nearest"
|
|
162
178
|
});
|
|
163
179
|
}, [t, r]);
|
|
164
|
-
function
|
|
165
|
-
return
|
|
180
|
+
function v({ event: a }) {
|
|
181
|
+
return a.key === "ArrowUp" ? (C(), !0) : a.key === "ArrowDown" ? (L(), !0) : a.key === "Enter" ? (A(), !0) : !1;
|
|
166
182
|
}
|
|
167
183
|
function C() {
|
|
168
184
|
var c;
|
|
169
185
|
if (s.length === 0)
|
|
170
186
|
return !1;
|
|
171
|
-
let
|
|
172
|
-
|
|
187
|
+
let a = t - 1, i = r;
|
|
188
|
+
a < 0 && (i = r - 1, a = ((c = s[i]) == null ? void 0 : c.commands.length) - 1 || 0), i < 0 && (i = s.length - 1, a = s[i].commands.length - 1), l(a), m(i);
|
|
173
189
|
}
|
|
174
190
|
function L() {
|
|
175
191
|
if (s.length === 0)
|
|
176
192
|
return !1;
|
|
177
|
-
const
|
|
193
|
+
const a = s[r].commands;
|
|
178
194
|
let i = t + 1, c = r;
|
|
179
|
-
|
|
195
|
+
a.length - 1 < i && (i = 0, c = r + 1), s.length - 1 < c && (c = 0), l(i), m(c);
|
|
180
196
|
}
|
|
181
197
|
function A() {
|
|
182
198
|
if (s.length === 0 || r === -1 || t === -1)
|
|
183
199
|
return !1;
|
|
184
|
-
|
|
200
|
+
p(r, t);
|
|
185
201
|
}
|
|
186
|
-
function
|
|
187
|
-
const c = s[
|
|
202
|
+
function p(a, i) {
|
|
203
|
+
const c = s[a].commands[i];
|
|
188
204
|
n == null || n.command(c);
|
|
189
205
|
}
|
|
190
|
-
function k(
|
|
191
|
-
|
|
206
|
+
function k(a, i) {
|
|
207
|
+
p(a, i);
|
|
192
208
|
}
|
|
193
|
-
function I(
|
|
194
|
-
|
|
209
|
+
function I(a, i, c) {
|
|
210
|
+
u.current[a * 1e3 + i] = c;
|
|
195
211
|
}
|
|
196
212
|
return /* @__PURE__ */ d(
|
|
197
213
|
"div",
|
|
198
214
|
{
|
|
199
215
|
className: "richtext-max-h-[min(80vh,24rem)] richtext-flex-wrap richtext-overflow-y-auto richtext-overflow-x-hidden richtext-rounded-md !richtext-border !richtext-border-solid !richtext-border-border richtext-bg-popover richtext-p-1 richtext-text-popover-foreground richtext-shadow-md richtext-outline-none",
|
|
200
216
|
"data-richtext-portal": !0,
|
|
201
|
-
ref:
|
|
202
|
-
children: s != null && s.length ? /* @__PURE__ */ d("div", { className: "richtext-grid richtext-min-w-48 richtext-grid-cols-1 richtext-gap-0.5", children: s == null ? void 0 : s.map((
|
|
203
|
-
/* @__PURE__ */ d(
|
|
204
|
-
|
|
217
|
+
ref: h,
|
|
218
|
+
children: s != null && s.length ? /* @__PURE__ */ d("div", { className: "richtext-grid richtext-min-w-48 richtext-grid-cols-1 richtext-gap-0.5", children: s == null ? void 0 : s.map((a, i) => /* @__PURE__ */ g(E, { children: [
|
|
219
|
+
/* @__PURE__ */ d(P, { className: "richtext-mx-[4px] richtext-mb-[4px] richtext-mt-[8px] !richtext-text-[0.65rem] richtext-uppercase", children: a.title }),
|
|
220
|
+
a.commands.map((c, f) => /* @__PURE__ */ g(
|
|
205
221
|
"button",
|
|
206
222
|
{
|
|
207
223
|
onClick: () => k(i, f),
|
|
208
224
|
ref: (R) => I(i, f, R),
|
|
209
|
-
className:
|
|
225
|
+
className: T(
|
|
210
226
|
"richtext-flex richtext-w-full richtext-items-center richtext-gap-3 richtext-rounded-sm !richtext-border-none !richtext-bg-transparent richtext-px-2 richtext-py-1.5 richtext-text-left richtext-text-sm richtext-text-foreground !richtext-outline-none richtext-transition-colors hover:!richtext-bg-accent",
|
|
211
227
|
{
|
|
212
228
|
"bg-item-active": r === i && t === f
|
|
@@ -215,7 +231,7 @@ function M(n, a) {
|
|
|
215
231
|
children: [
|
|
216
232
|
c.iconUrl && /* @__PURE__ */ d("img", { alt: "", className: "richtext-size-6", src: c.iconUrl }),
|
|
217
233
|
c.iconName && /* @__PURE__ */ d(
|
|
218
|
-
|
|
234
|
+
$,
|
|
219
235
|
{
|
|
220
236
|
className: "!richtext-mr-1 !richtext-text-lg",
|
|
221
237
|
name: c.iconName
|
|
@@ -226,14 +242,14 @@ function M(n, a) {
|
|
|
226
242
|
},
|
|
227
243
|
`command-${f}`
|
|
228
244
|
))
|
|
229
|
-
] }, `slash-${
|
|
245
|
+
] }, `slash-${a.title}`)) }) : /* @__PURE__ */ d("div", { className: "richtext-p-3", children: /* @__PURE__ */ d("span", { className: "richtext-text-xs richtext-text-foreground", children: x("editor.slash.empty") }) })
|
|
230
246
|
}
|
|
231
247
|
);
|
|
232
248
|
}
|
|
233
|
-
const Y =
|
|
249
|
+
const Y = y(F);
|
|
234
250
|
export {
|
|
235
251
|
Y as S,
|
|
236
|
-
|
|
252
|
+
V as a,
|
|
237
253
|
X as r,
|
|
238
|
-
|
|
254
|
+
U as u
|
|
239
255
|
};
|
package/lib/Strike.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./clsx-CXbNJWDD.cjs"),n=require("react/jsx-runtime"),o=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./clsx-CXbNJWDD.cjs"),n=require("react/jsx-runtime"),o=require("./index-BynXHtjJ.cjs");require("react");require("./theme.cjs");var m=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))$/,h=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))/g,S=r.Mark.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:t=>t.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:t}){return["s",r.mergeAttributes(this.options.HTMLAttributes,t),0]},markdownTokenName:"del",parseMarkdown:(t,e)=>e.applyMark("strike",e.parseInline(t.tokens||[])),renderMarkdown:(t,e)=>`~~${e.renderChildren(t)}~~`,addCommands(){return{setStrike:()=>({commands:t})=>t.setMark(this.name),toggleStrike:()=>({commands:t})=>t.toggleMark(this.name),unsetStrike:()=>({commands:t})=>t.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-s":()=>this.editor.commands.toggleStrike()}},addInputRules(){return[r.markInputRule({find:m,type:this.type})]},addPasteRules(){return[r.markPasteRule({find:h,type:this.type})]}});function f(){const t=o.useButtonProps(d.name),{icon:e=void 0,tooltip:i=void 0,shortcutKeys:s=void 0,tooltipOptions:c={},action:a=void 0,isActive:l=void 0}=(t==null?void 0:t.componentProps)??{},{dataState:k,disabled:u,update:p}=o.useToggleActive(l),g=()=>{u||a&&(a(),p())};return t?n.jsx(o.ActionButton,{action:g,dataState:k,disabled:u,icon:e,shortcutKeys:s,tooltip:i,tooltipOptions:c}):n.jsx(n.Fragment,{})}const d=S.extend({addOptions(){var t;return{...(t=this.parent)==null?void 0:t.call(this),button:({editor:e,t:i,extension:s})=>({componentProps:{action:()=>e.commands.toggleStrike(),isActive:()=>e.isActive("strike")||!1,disabled:!1,icon:"Strikethrough",shortcutKeys:s.options.shortcutKeys??["shift","mod","S"],tooltip:i("editor.strike.tooltip")}})}}});exports.RichTextStrike=f;exports.Strike=d;
|
package/lib/Strike.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { M as m, e as k, f as l, m as g } from "./clsx-BUPZHhq3.js";
|
|
2
2
|
import { jsx as n, Fragment as h } from "react/jsx-runtime";
|
|
3
|
-
import { u as f, d as M, A as S } from "./index-
|
|
3
|
+
import { u as f, d as M, A as S } from "./index-CnKgiZFQ.js";
|
|
4
4
|
import "react";
|
|
5
5
|
import "./theme.js";
|
|
6
6
|
var v = /(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))$/, A = /(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))/g, y = m.create({
|