@hufe921/canvas-editor-plugin-comment 0.0.1

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/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # canvas-editor-plugin-comment
2
+
3
+ comment plugin for canvas-editor
4
+
5
+ ## usage
6
+
7
+ ```bash
8
+ npm install @hufe921/canvas-editor-plugin-comment --save
9
+ ```
10
+
11
+ ```typescript
12
+ import Editor from '@hufe921/canvas-editor'
13
+ import commentPlugin from '@hufe921/canvas-editor-plugin-comment'
14
+
15
+ const instance = new Editor(container, {
16
+ main: []
17
+ })
18
+ instance.use(commentPlugin, {
19
+ user: 'demo',
20
+ onAdd: comment => console.log(comment),
21
+ onRemove: id => console.log(id)
22
+ })
23
+
24
+ // 对当前选区添加批注
25
+ instance.command.executeAddComment()
26
+ // 删除批注(不传 id 时取当前光标命中的批注)
27
+ instance.command.executeRemoveComment(id)
28
+ // 获取批注列表
29
+ instance.command.executeGetCommentList()
30
+ // 恢复批注列表
31
+ instance.command.executeSetCommentList(list)
32
+ ```
@@ -0,0 +1,244 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.id="comment-style",e.appendChild(document.createTextNode(".ce-comment-rail{position:absolute;top:0;right:0;overflow:hidden;background:#f5f6f8;border-left:1px solid #e5e6eb;box-sizing:border-box;pointer-events:none;z-index:2}.ce-comment-rail--overlay{background:rgba(245,246,248,.92)}.ce-comment-line-layer{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;z-index:3}.ce-comment-card{position:absolute;left:12px;right:12px;padding:8px 10px;background:#ffffff;border:1px solid #e8e8e8;border-radius:4px;box-shadow:0 2px 8px #00000014;font-size:13px;color:#333;box-sizing:border-box;pointer-events:auto;cursor:pointer}.ce-comment-card--active{border-color:#f54a45;box-shadow:0 4px 12px #f54a4526}.ce-comment-card--editing{cursor:default}.ce-comment-card__header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;padding-right:14px}.ce-comment-card__user{font-size:13px;font-weight:600}.ce-comment-card__time{font-size:12px;color:#999;white-space:nowrap}.ce-comment-card__close{position:absolute;top:4px;right:6px;border:none;background:none;padding:2px 4px;font-size:14px;line-height:1;color:#999;cursor:pointer}.ce-comment-card__close:hover{color:#f54a45}.ce-comment-card__content{font-size:13px;color:#333;line-height:1.4;word-break:break-word;white-space:pre-wrap}.ce-comment-card__textarea{width:100%;min-height:60px;resize:none;outline:none;border:1px solid #e5e6eb;border-radius:2px;background:#fafafa;padding:6px 8px;font-size:13px;color:#333;line-height:1.4;box-sizing:border-box;overflow:hidden}.ce-comment-card__textarea:focus{border-color:#f54a45;background:#ffffff}.ce-comment-card__footer{display:flex;justify-content:flex-end;gap:12px;margin-top:8px}.ce-comment-card__button{cursor:pointer;border:none;background:none;padding:0;font-size:12px;color:#999}.ce-comment-card__button:hover{color:#666}.ce-comment-card__button--primary{background:#f54a45;border-radius:3px;padding:3px 10px;color:#fff}.ce-comment-card__button--primary:hover{background:#d93631;color:#fff}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ import { EDITOR_COMPONENT as f, EditorComponent as N } from "@hufe921/canvas-editor";
3
+ const s = "ce-comment", U = "zhCN", Z = "#fde7e9", O = 220, ee = "#f54a45", z = "#f54a45", te = 8, F = {
4
+ zhCN: {
5
+ addCommentText: "添加批注",
6
+ removeCommentText: "删除批注",
7
+ placeholderText: "请输入批注内容",
8
+ confirmText: "确定",
9
+ cancelText: "取消"
10
+ },
11
+ en: {
12
+ addCommentText: "Add Comment",
13
+ removeCommentText: "Remove Comment",
14
+ placeholderText: "Please enter comment",
15
+ confirmText: "OK",
16
+ cancelText: "Cancel"
17
+ }
18
+ }, W = "http://www.w3.org/2000/svg";
19
+ function re(w, c) {
20
+ const a = w.command, R = a.getContainer(), C = /* @__PURE__ */ new Map(), M = /* @__PURE__ */ new Map();
21
+ let S = null, h = null;
22
+ const P = (c == null ? void 0 : c.railWidth) || O, j = (c == null ? void 0 : c.lineColor) || ee, H = () => {
23
+ var o, l;
24
+ const e = (o = a.getOptions) == null ? void 0 : o.call(a).locale, t = ((c == null ? void 0 : c.locale) || e || U).toLowerCase().replace(/[-_]/g, "");
25
+ return {
26
+ ...((l = Object.entries(F).find(([m]) => m.toLowerCase() === t)) == null ? void 0 : l[1]) || F[U],
27
+ ...c == null ? void 0 : c.lang
28
+ };
29
+ }, d = document.createElement("div");
30
+ d.setAttribute(f, N.COMPONENT), d.classList.add(`${s}-rail`), d.style.width = `${P}px`, d.style.display = "none";
31
+ const v = document.createElementNS(W, "svg");
32
+ v.setAttribute(f, N.COMPONENT), v.classList.add(`${s}-line-layer`), v.style.display = "none";
33
+ const _ = R.parentElement || R;
34
+ getComputedStyle(_).position === "static" && (_.style.position = "relative"), _.append(v, d);
35
+ const D = () => {
36
+ let e = R.parentElement;
37
+ for (; e && e !== document.body; ) {
38
+ const t = getComputedStyle(e).overflowY;
39
+ if (t === "auto" || t === "scroll")
40
+ return { top: e.getBoundingClientRect().top, height: e.clientHeight };
41
+ e = e.parentElement;
42
+ }
43
+ return { top: 0, height: window.innerHeight };
44
+ }, k = () => {
45
+ const e = _.getBoundingClientRect(), t = R.getBoundingClientRect().right - e.left + 8, n = D(), o = n.top - e.top + _.scrollTop;
46
+ d.style.top = `${o}px`, d.style.bottom = "auto", d.style.height = `${n.height}px`, v.style.top = `${o}px`, v.style.height = `${n.height}px`, t + P <= _.clientWidth ? (d.style.left = `${t}px`, d.style.right = "auto", d.classList.remove(`${s}-rail--overlay`)) : (d.style.left = "auto", d.style.right = "0", d.classList.add(`${s}-rail--overlay`));
47
+ };
48
+ k();
49
+ const b = (e) => e == null ? void 0 : e.find((t) => C.has(t)), q = (e) => {
50
+ const t = a.getValue().data.main;
51
+ let n = -1, o = -1;
52
+ t.forEach((l, m) => {
53
+ var g;
54
+ (g = l.groupIds) != null && g.includes(e) && (n < 0 && (n = m), o = m);
55
+ }), !(n < 0) && (a.executeSetRange(n, o), a.executeHighlight(null), a.executeDeleteGroup(e));
56
+ }, K = () => {
57
+ var n, o;
58
+ const { startIndex: e } = a.getRange(), t = a.getValue().data.main;
59
+ return b((n = t[e]) == null ? void 0 : n.groupIds) || b((o = t[e - 1]) == null ? void 0 : o.groupIds);
60
+ }, B = (e) => {
61
+ const t = new Date(e), n = (o) => String(o).padStart(2, "0");
62
+ return `${t.getMonth() + 1}/${t.getDate()} ${n(t.getHours())}:${n(t.getMinutes())}`;
63
+ }, J = (e) => {
64
+ const t = H(), n = document.createElement("div");
65
+ n.setAttribute(f, N.COMPONENT), n.classList.add(`${s}-card`);
66
+ const o = document.createElement("button");
67
+ o.classList.add(`${s}-card__close`), o.innerText = "×", o.title = t.removeCommentText, o.onclick = (T) => {
68
+ T.stopPropagation(), a.executeRemoveComment(e.id);
69
+ };
70
+ const l = document.createElement("div");
71
+ l.classList.add(`${s}-card__header`);
72
+ const m = document.createElement("span");
73
+ m.classList.add(`${s}-card__user`), m.innerText = e.user || "", m.style.color = (c == null ? void 0 : c.userColor) || z;
74
+ const g = document.createElement("span");
75
+ g.classList.add(`${s}-card__time`), g.innerText = B(e.createdAt), l.append(m, g);
76
+ const p = document.createElement("div");
77
+ return p.classList.add(`${s}-card__content`), p.innerText = e.content, n.append(o, l, p), n.onclick = () => {
78
+ a.executeLocationGroup(e.id);
79
+ }, n;
80
+ }, x = () => {
81
+ var A;
82
+ const e = R.getBoundingClientRect(), t = D(), n = e.top - R.scrollTop - t.top, o = e.left - _.getBoundingClientRect().left - R.scrollLeft, l = [], m = /* @__PURE__ */ new Set();
83
+ if (C.forEach((r, i) => {
84
+ var $;
85
+ const E = ($ = a.getGroupRectList(i)) == null ? void 0 : $[0];
86
+ if (!E)
87
+ return;
88
+ let L = M.get(i);
89
+ L || (L = J(r), M.set(i, L), d.append(L)), L.classList.toggle(`${s}-card--active`, i === S), m.add(i), l.push({
90
+ id: i,
91
+ anchorX: o + E.x + E.width,
92
+ anchorY: E.y + E.height / 2,
93
+ card: L,
94
+ top: 0
95
+ });
96
+ }), h) {
97
+ const r = (A = a.getGroupRectList(h.groupId)) == null ? void 0 : A[0];
98
+ r && l.push({
99
+ id: h.groupId,
100
+ anchorX: o + r.x + r.width,
101
+ anchorY: r.y + r.height / 2,
102
+ card: h.card,
103
+ fixedTop: h.top,
104
+ top: h.top
105
+ });
106
+ }
107
+ M.forEach((r, i) => {
108
+ m.has(i) || (r.remove(), M.delete(i));
109
+ });
110
+ const g = l.length > 0;
111
+ if (d.style.display = g ? "" : "none", v.style.display = g ? "" : "none", !g) {
112
+ v.innerHTML = "";
113
+ return;
114
+ }
115
+ k();
116
+ const p = d.offsetLeft;
117
+ l.sort((r, i) => r.anchorY - i.anchorY);
118
+ let T = null;
119
+ l.forEach((r) => {
120
+ r.fixedTop == null && (r.top = Math.max(r.anchorY, T == null ? 0 : T + te)), r.card.style.top = `${r.top + n}px`, T = r.top + r.card.offsetHeight;
121
+ }), v.innerHTML = "";
122
+ const u = p - 16;
123
+ l.forEach((r) => {
124
+ const i = p + r.card.offsetLeft, E = r.anchorY + n, L = r.top + r.card.offsetHeight / 2 + n, $ = r.anchorX < u ? `M ${r.anchorX} ${E} L ${u} ${E} L ${i} ${L}` : `M ${r.anchorX} ${E} L ${i} ${L}`, y = document.createElementNS(W, "path");
125
+ y.setAttribute("d", $), y.setAttribute("fill", "none"), y.setAttribute("stroke", j);
126
+ const I = r.id === S;
127
+ y.setAttribute("stroke-width", I ? "1.5" : "1"), I || y.setAttribute("stroke-dasharray", "4 3"), v.append(y);
128
+ });
129
+ }, Y = () => {
130
+ if (!h)
131
+ return;
132
+ const { groupId: e, startIndex: t, endIndex: n, card: o } = h;
133
+ h = null, o.remove(), a.executeSetRange(t, n), a.executeHighlight(null), a.executeDeleteGroup(e), x();
134
+ }, Q = (e, t, n) => {
135
+ var L;
136
+ const o = (L = a.getGroupRectList(e)) == null ? void 0 : L[0];
137
+ if (!o) {
138
+ a.executeSetRange(t, n), a.executeHighlight(null), a.executeDeleteGroup(e);
139
+ return;
140
+ }
141
+ const l = H(), m = document.createElement("div");
142
+ m.setAttribute(f, N.COMPONENT), m.classList.add(`${s}-card`, `${s}-card--editing`);
143
+ const g = document.createElement("div");
144
+ g.classList.add(`${s}-card__header`);
145
+ const p = document.createElement("span");
146
+ p.classList.add(`${s}-card__user`), p.innerText = (c == null ? void 0 : c.user) || "", p.style.color = (c == null ? void 0 : c.userColor) || z;
147
+ const T = document.createElement("span");
148
+ T.classList.add(`${s}-card__time`), T.innerText = B((/* @__PURE__ */ new Date()).toISOString()), g.append(p, T);
149
+ const u = document.createElement("textarea");
150
+ u.classList.add(`${s}-card__textarea`), u.placeholder = l.placeholderText, u.oninput = () => {
151
+ u.style.height = "auto", u.style.height = `${Math.max(u.scrollHeight, 60)}px`, x();
152
+ };
153
+ const A = document.createElement("div");
154
+ A.classList.add(`${s}-card__footer`);
155
+ const r = document.createElement("button");
156
+ r.classList.add(`${s}-card__button`), r.innerText = l.cancelText, r.onclick = ($) => {
157
+ $.stopPropagation(), Y();
158
+ };
159
+ const i = document.createElement("button");
160
+ i.classList.add(`${s}-card__button`, `${s}-card__button--primary`), i.innerText = l.confirmText, i.onclick = ($) => {
161
+ var V;
162
+ $.stopPropagation();
163
+ const y = u.value.trim();
164
+ if (!y) {
165
+ u.focus();
166
+ return;
167
+ }
168
+ const I = {
169
+ id: e,
170
+ content: y,
171
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
172
+ user: c == null ? void 0 : c.user
173
+ };
174
+ C.set(e, I), (V = c == null ? void 0 : c.onAdd) == null || V.call(c, I), a.executeSetRange(t, n), h == null || h.card.remove(), h = null, x();
175
+ }, A.append(r, i), m.append(g, u, A);
176
+ const E = Math.max(o.y + o.height / 2, 0);
177
+ d.append(m), h = { groupId: e, startIndex: t, endIndex: n, card: m, top: E }, x(), u.focus();
178
+ };
179
+ a.executeAddComment = () => {
180
+ const { startIndex: e, endIndex: t } = a.getRange();
181
+ if (!~e || !~t || e === t)
182
+ return;
183
+ Y();
184
+ const n = a.executeSetGroup();
185
+ n && (a.executeHighlight((c == null ? void 0 : c.highlightColor) || Z), Q(n, e, t));
186
+ }, a.executeRemoveComment = (e) => {
187
+ var n;
188
+ const t = e || K();
189
+ !t || !C.has(t) || (C.delete(t), q(t), (n = c == null ? void 0 : c.onRemove) == null || n.call(c, t), S === t && (S = null), x());
190
+ }, a.executeGetCommentList = () => Array.from(C.values()), a.executeSetCommentList = (e) => {
191
+ C.clear(), e.forEach((t) => C.set(t.id, t)), x();
192
+ };
193
+ const X = H();
194
+ w.register.contextMenuList([
195
+ {
196
+ name: X.addCommentText,
197
+ when: (e) => e.editorHasSelection && !e.isReadonly,
198
+ callback: () => {
199
+ a.executeAddComment();
200
+ }
201
+ },
202
+ {
203
+ name: X.removeCommentText,
204
+ when: (e) => {
205
+ var t;
206
+ return !e.isReadonly && !!b((t = e.startElement) == null ? void 0 : t.groupIds);
207
+ },
208
+ callback: (e, t) => {
209
+ var o;
210
+ const n = b((o = t.startElement) == null ? void 0 : o.groupIds);
211
+ n && a.executeRemoveComment(n);
212
+ }
213
+ }
214
+ ]), w.eventBus.on("rangeStyleChange", (e) => {
215
+ S = b(e.groupIds) || null, x();
216
+ }), w.eventBus.on("contentChange", () => {
217
+ if (C.size) {
218
+ const e = /* @__PURE__ */ new Set();
219
+ a.getValue().data.main.forEach((t) => {
220
+ var n;
221
+ (n = t.groupIds) == null || n.forEach((o) => e.add(o));
222
+ }), Array.from(C.keys()).forEach((t) => {
223
+ e.has(t) || C.delete(t);
224
+ });
225
+ }
226
+ x();
227
+ }), w.eventBus.on("pageScaleChange", () => {
228
+ x();
229
+ }), w.eventBus.on("pageSizeChange", () => {
230
+ x();
231
+ });
232
+ let G = 0;
233
+ document.addEventListener("scroll", () => {
234
+ G || (G = requestAnimationFrame(() => {
235
+ G = 0, x();
236
+ }));
237
+ }, !0), new ResizeObserver(() => {
238
+ x();
239
+ }).observe(_);
240
+ }
241
+ export {
242
+ re as default
243
+ };
244
+ //# sourceMappingURL=comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment.js","sources":["../../src/comment/constant/index.ts","../../src/comment/index.ts"],"sourcesContent":[null,null],"names":["PLUGIN_PREFIX","DEFAULT_LOCALE","DEFAULT_HIGHLIGHT_COLOR","DEFAULT_RAIL_WIDTH","DEFAULT_LINE_COLOR","DEFAULT_USER_COLOR","CARD_GAP","PLUGIN_LANG_MAP","SVG_NS","commentPlugin","editor","defaultOptions","command","container","commentMap","cardMap","activeCommentId","pendingEdit","railWidth","lineColor","getLang","editorLocale","_a","currentLocale","_b","key","rail","EDITOR_COMPONENT","EditorComponent","lineLayer","mountRoot","getScrollViewport","el","overflowY","dockRail","rootRect","railLeft","viewport","railTop","matchCommentId","groupIds","id","removeCommentMark","main","first","last","element","index","getCommentIdAtCursor","startIndex","formatTime","iso","date","pad","n","createViewCard","comment","lang","card","closeBtn","evt","header","userSpan","timeSpan","content","layout","containerRect","offsetY","baseX","items","visibleIds","rect","hasVisible","railLeftX","a","b","prevBottom","item","channelX","cardLeftX","anchorViewY","centerViewY","d","path","isActive","rollbackPendingEdit","groupId","endIndex","showEditCard","textarea","footer","cancelBtn","confirmBtn","top","commentId","list","context","_command","payload","existingIds","layoutRafId"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.id="comment-style",e.appendChild(document.createTextNode(".ce-comment-rail{position:absolute;top:0;right:0;overflow:hidden;background:#f5f6f8;border-left:1px solid #e5e6eb;box-sizing:border-box;pointer-events:none;z-index:2}.ce-comment-rail--overlay{background:rgba(245,246,248,.92)}.ce-comment-line-layer{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;z-index:3}.ce-comment-card{position:absolute;left:12px;right:12px;padding:8px 10px;background:#ffffff;border:1px solid #e8e8e8;border-radius:4px;box-shadow:0 2px 8px #00000014;font-size:13px;color:#333;box-sizing:border-box;pointer-events:auto;cursor:pointer}.ce-comment-card--active{border-color:#f54a45;box-shadow:0 4px 12px #f54a4526}.ce-comment-card--editing{cursor:default}.ce-comment-card__header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;padding-right:14px}.ce-comment-card__user{font-size:13px;font-weight:600}.ce-comment-card__time{font-size:12px;color:#999;white-space:nowrap}.ce-comment-card__close{position:absolute;top:4px;right:6px;border:none;background:none;padding:2px 4px;font-size:14px;line-height:1;color:#999;cursor:pointer}.ce-comment-card__close:hover{color:#f54a45}.ce-comment-card__content{font-size:13px;color:#333;line-height:1.4;word-break:break-word;white-space:pre-wrap}.ce-comment-card__textarea{width:100%;min-height:60px;resize:none;outline:none;border:1px solid #e5e6eb;border-radius:2px;background:#fafafa;padding:6px 8px;font-size:13px;color:#333;line-height:1.4;box-sizing:border-box;overflow:hidden}.ce-comment-card__textarea:focus{border-color:#f54a45;background:#ffffff}.ce-comment-card__footer{display:flex;justify-content:flex-end;gap:12px;margin-top:8px}.ce-comment-card__button{cursor:pointer;border:none;background:none;padding:0;font-size:12px;color:#999}.ce-comment-card__button:hover{color:#666}.ce-comment-card__button--primary{background:#f54a45;border-radius:3px;padding:3px 10px;color:#fff}.ce-comment-card__button--primary:hover{background:#d93631;color:#fff}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ (function(u,N){typeof exports=="object"&&typeof module<"u"?module.exports=N(require("@hufe921/canvas-editor")):typeof define=="function"&&define.amd?define(["@hufe921/canvas-editor"],N):(u=typeof globalThis<"u"?globalThis:u||self,u.comment=N(u.canvasEditor))})(this,function(u){"use strict";const N="",a="ce-comment",H="zhCN",j="#fde7e9",q="#f54a45",G="#f54a45",k={zhCN:{addCommentText:"添加批注",removeCommentText:"删除批注",placeholderText:"请输入批注内容",confirmText:"确定",cancelText:"取消"},en:{addCommentText:"Add Comment",removeCommentText:"Remove Comment",placeholderText:"Please enter comment",confirmText:"OK",cancelText:"Cancel"}},B="http://www.w3.org/2000/svg";function K(w,o){const s=w.command,A=s.getContainer(),p=new Map,M=new Map;let S=null,h=null;const Y=(o==null?void 0:o.railWidth)||220,J=(o==null?void 0:o.lineColor)||q,D=()=>{var c,l;const e=(c=s.getOptions)==null?void 0:c.call(s).locale,t=((o==null?void 0:o.locale)||e||H).toLowerCase().replace(/[-_]/g,"");return{...((l=Object.entries(k).find(([m])=>m.toLowerCase()===t))==null?void 0:l[1])||k[H],...o==null?void 0:o.lang}},d=document.createElement("div");d.setAttribute(u.EDITOR_COMPONENT,u.EditorComponent.COMPONENT),d.classList.add(`${a}-rail`),d.style.width=`${Y}px`,d.style.display="none";const _=document.createElementNS(B,"svg");_.setAttribute(u.EDITOR_COMPONENT,u.EditorComponent.COMPONENT),_.classList.add(`${a}-line-layer`),_.style.display="none";const v=A.parentElement||A;getComputedStyle(v).position==="static"&&(v.style.position="relative"),v.append(_,d);const X=()=>{let e=A.parentElement;for(;e&&e!==document.body;){const t=getComputedStyle(e).overflowY;if(t==="auto"||t==="scroll")return{top:e.getBoundingClientRect().top,height:e.clientHeight};e=e.parentElement}return{top:0,height:window.innerHeight}},U=()=>{const e=v.getBoundingClientRect(),t=A.getBoundingClientRect().right-e.left+8,n=X(),c=n.top-e.top+v.scrollTop;d.style.top=`${c}px`,d.style.bottom="auto",d.style.height=`${n.height}px`,_.style.top=`${c}px`,_.style.height=`${n.height}px`,t+Y<=v.clientWidth?(d.style.left=`${t}px`,d.style.right="auto",d.classList.remove(`${a}-rail--overlay`)):(d.style.left="auto",d.style.right="0",d.classList.add(`${a}-rail--overlay`))};U();const b=e=>e==null?void 0:e.find(t=>p.has(t)),Q=e=>{const t=s.getValue().data.main;let n=-1,c=-1;t.forEach((l,m)=>{var g;(g=l.groupIds)!=null&&g.includes(e)&&(n<0&&(n=m),c=m)}),!(n<0)&&(s.executeSetRange(n,c),s.executeHighlight(null),s.executeDeleteGroup(e))},Z=()=>{var n,c;const{startIndex:e}=s.getRange(),t=s.getValue().data.main;return b((n=t[e])==null?void 0:n.groupIds)||b((c=t[e-1])==null?void 0:c.groupIds)},V=e=>{const t=new Date(e),n=c=>String(c).padStart(2,"0");return`${t.getMonth()+1}/${t.getDate()} ${n(t.getHours())}:${n(t.getMinutes())}`},O=e=>{const t=D(),n=document.createElement("div");n.setAttribute(u.EDITOR_COMPONENT,u.EditorComponent.COMPONENT),n.classList.add(`${a}-card`);const c=document.createElement("button");c.classList.add(`${a}-card__close`),c.innerText="×",c.title=t.removeCommentText,c.onclick=y=>{y.stopPropagation(),s.executeRemoveComment(e.id)};const l=document.createElement("div");l.classList.add(`${a}-card__header`);const m=document.createElement("span");m.classList.add(`${a}-card__user`),m.innerText=e.user||"",m.style.color=(o==null?void 0:o.userColor)||G;const g=document.createElement("span");g.classList.add(`${a}-card__time`),g.innerText=V(e.createdAt),l.append(m,g);const T=document.createElement("div");return T.classList.add(`${a}-card__content`),T.innerText=e.content,n.append(c,l,T),n.onclick=()=>{s.executeLocationGroup(e.id)},n},L=()=>{var f;const e=A.getBoundingClientRect(),t=X(),n=e.top-A.scrollTop-t.top,c=e.left-v.getBoundingClientRect().left-A.scrollLeft,l=[],m=new Set;if(p.forEach((r,i)=>{var R;const E=(R=s.getGroupRectList(i))==null?void 0:R[0];if(!E)return;let C=M.get(i);C||(C=O(r),M.set(i,C),d.append(C)),C.classList.toggle(`${a}-card--active`,i===S),m.add(i),l.push({id:i,anchorX:c+E.x+E.width,anchorY:E.y+E.height/2,card:C,top:0})}),h){const r=(f=s.getGroupRectList(h.groupId))==null?void 0:f[0];r&&l.push({id:h.groupId,anchorX:c+r.x+r.width,anchorY:r.y+r.height/2,card:h.card,fixedTop:h.top,top:h.top})}M.forEach((r,i)=>{m.has(i)||(r.remove(),M.delete(i))});const g=l.length>0;if(d.style.display=g?"":"none",_.style.display=g?"":"none",!g){_.innerHTML="";return}U();const T=d.offsetLeft;l.sort((r,i)=>r.anchorY-i.anchorY);let y=null;l.forEach(r=>{r.fixedTop==null&&(r.top=Math.max(r.anchorY,y==null?0:y+8)),r.card.style.top=`${r.top+n}px`,y=r.top+r.card.offsetHeight}),_.innerHTML="";const x=T-16;l.forEach(r=>{const i=T+r.card.offsetLeft,E=r.anchorY+n,C=r.top+r.card.offsetHeight/2+n,R=r.anchorX<x?`M ${r.anchorX} ${E} L ${x} ${E} L ${i} ${C}`:`M ${r.anchorX} ${E} L ${i} ${C}`,$=document.createElementNS(B,"path");$.setAttribute("d",R),$.setAttribute("fill","none"),$.setAttribute("stroke",J);const I=r.id===S;$.setAttribute("stroke-width",I?"1.5":"1"),I||$.setAttribute("stroke-dasharray","4 3"),_.append($)})},F=()=>{if(!h)return;const{groupId:e,startIndex:t,endIndex:n,card:c}=h;h=null,c.remove(),s.executeSetRange(t,n),s.executeHighlight(null),s.executeDeleteGroup(e),L()},ee=(e,t,n)=>{var C;const c=(C=s.getGroupRectList(e))==null?void 0:C[0];if(!c){s.executeSetRange(t,n),s.executeHighlight(null),s.executeDeleteGroup(e);return}const l=D(),m=document.createElement("div");m.setAttribute(u.EDITOR_COMPONENT,u.EditorComponent.COMPONENT),m.classList.add(`${a}-card`,`${a}-card--editing`);const g=document.createElement("div");g.classList.add(`${a}-card__header`);const T=document.createElement("span");T.classList.add(`${a}-card__user`),T.innerText=(o==null?void 0:o.user)||"",T.style.color=(o==null?void 0:o.userColor)||G;const y=document.createElement("span");y.classList.add(`${a}-card__time`),y.innerText=V(new Date().toISOString()),g.append(T,y);const x=document.createElement("textarea");x.classList.add(`${a}-card__textarea`),x.placeholder=l.placeholderText,x.oninput=()=>{x.style.height="auto",x.style.height=`${Math.max(x.scrollHeight,60)}px`,L()};const f=document.createElement("div");f.classList.add(`${a}-card__footer`);const r=document.createElement("button");r.classList.add(`${a}-card__button`),r.innerText=l.cancelText,r.onclick=R=>{R.stopPropagation(),F()};const i=document.createElement("button");i.classList.add(`${a}-card__button`,`${a}-card__button--primary`),i.innerText=l.confirmText,i.onclick=R=>{var W;R.stopPropagation();const $=x.value.trim();if(!$){x.focus();return}const I={id:e,content:$,createdAt:new Date().toISOString(),user:o==null?void 0:o.user};p.set(e,I),(W=o==null?void 0:o.onAdd)==null||W.call(o,I),s.executeSetRange(t,n),h==null||h.card.remove(),h=null,L()},f.append(r,i),m.append(g,x,f);const E=Math.max(c.y+c.height/2,0);d.append(m),h={groupId:e,startIndex:t,endIndex:n,card:m,top:E},L(),x.focus()};s.executeAddComment=()=>{const{startIndex:e,endIndex:t}=s.getRange();if(!~e||!~t||e===t)return;F();const n=s.executeSetGroup();n&&(s.executeHighlight((o==null?void 0:o.highlightColor)||j),ee(n,e,t))},s.executeRemoveComment=e=>{var n;const t=e||Z();!t||!p.has(t)||(p.delete(t),Q(t),(n=o==null?void 0:o.onRemove)==null||n.call(o,t),S===t&&(S=null),L())},s.executeGetCommentList=()=>Array.from(p.values()),s.executeSetCommentList=e=>{p.clear(),e.forEach(t=>p.set(t.id,t)),L()};const z=D();w.register.contextMenuList([{name:z.addCommentText,when:e=>e.editorHasSelection&&!e.isReadonly,callback:()=>{s.executeAddComment()}},{name:z.removeCommentText,when:e=>{var t;return!e.isReadonly&&!!b((t=e.startElement)==null?void 0:t.groupIds)},callback:(e,t)=>{var c;const n=b((c=t.startElement)==null?void 0:c.groupIds);n&&s.executeRemoveComment(n)}}]),w.eventBus.on("rangeStyleChange",e=>{S=b(e.groupIds)||null,L()}),w.eventBus.on("contentChange",()=>{if(p.size){const e=new Set;s.getValue().data.main.forEach(t=>{var n;(n=t.groupIds)==null||n.forEach(c=>e.add(c))}),Array.from(p.keys()).forEach(t=>{e.has(t)||p.delete(t)})}L()}),w.eventBus.on("pageScaleChange",()=>{L()}),w.eventBus.on("pageSizeChange",()=>{L()});let P=0;document.addEventListener("scroll",()=>{P||(P=requestAnimationFrame(()=>{P=0,L()}))},!0),new ResizeObserver(()=>{L()}).observe(v)}return K});
3
+ //# sourceMappingURL=comment.umd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment.umd.cjs","sources":["../../src/comment/constant/index.ts","../../src/comment/index.ts"],"sourcesContent":[null,null],"names":["PLUGIN_PREFIX","DEFAULT_LOCALE","DEFAULT_HIGHLIGHT_COLOR","DEFAULT_LINE_COLOR","DEFAULT_USER_COLOR","PLUGIN_LANG_MAP","SVG_NS","commentPlugin","editor","defaultOptions","command","container","commentMap","cardMap","activeCommentId","pendingEdit","railWidth","lineColor","getLang","editorLocale","_a","currentLocale","_b","key","rail","EDITOR_COMPONENT","EditorComponent","lineLayer","mountRoot","getScrollViewport","el","overflowY","dockRail","rootRect","railLeft","viewport","railTop","matchCommentId","groupIds","id","removeCommentMark","main","first","last","element","index","getCommentIdAtCursor","startIndex","formatTime","iso","date","pad","n","createViewCard","comment","lang","card","closeBtn","evt","header","userSpan","timeSpan","content","layout","containerRect","offsetY","baseX","items","visibleIds","rect","hasVisible","railLeftX","a","b","prevBottom","item","channelX","cardLeftX","anchorViewY","centerViewY","d","path","isActive","rollbackPendingEdit","groupId","endIndex","showEditCard","textarea","footer","cancelBtn","confirmBtn","top","commentId","list","context","_command","payload","existingIds","layoutRafId"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ICommentLang } from '../interface';
2
+ export declare const PLUGIN_PREFIX = "ce-comment";
3
+ export declare const DEFAULT_LOCALE = "zhCN";
4
+ export declare const DEFAULT_HIGHLIGHT_COLOR = "#fde7e9";
5
+ export declare const DEFAULT_RAIL_WIDTH = 220;
6
+ export declare const DEFAULT_LINE_COLOR = "#f54a45";
7
+ export declare const DEFAULT_USER_COLOR = "#f54a45";
8
+ export declare const CARD_GAP = 8;
9
+ export declare const PLUGIN_LANG_MAP: Record<string, ICommentLang>;
@@ -0,0 +1,13 @@
1
+ import { Editor } from '@hufe921/canvas-editor';
2
+ import './style';
3
+ import type { IComment, ICommentLang, ICommentOptions } from './interface';
4
+ declare module '@hufe921/canvas-editor' {
5
+ interface Command {
6
+ executeAddComment(): void;
7
+ executeRemoveComment(id?: string): void;
8
+ executeGetCommentList(): IComment[];
9
+ executeSetCommentList(list: IComment[]): void;
10
+ }
11
+ }
12
+ export default function commentPlugin(editor: Editor, defaultOptions?: ICommentOptions): void;
13
+ export type { IComment, ICommentLang, ICommentOptions };
@@ -0,0 +1,24 @@
1
+ export interface IComment {
2
+ id: string;
3
+ content: string;
4
+ createdAt: string;
5
+ user?: string;
6
+ }
7
+ export interface ICommentLang {
8
+ addCommentText: string;
9
+ removeCommentText: string;
10
+ placeholderText: string;
11
+ confirmText: string;
12
+ cancelText: string;
13
+ }
14
+ export interface ICommentOptions {
15
+ highlightColor?: string;
16
+ user?: string;
17
+ railWidth?: number;
18
+ lineColor?: string;
19
+ userColor?: string;
20
+ locale?: string;
21
+ lang?: Partial<ICommentLang>;
22
+ onAdd?: (comment: IComment) => void;
23
+ onRemove?: (id: string) => void;
24
+ }
@@ -0,0 +1 @@
1
+ import './index.scss';
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@hufe921/canvas-editor-plugin-comment",
3
+ "author": "Hufe",
4
+ "license": "MIT",
5
+ "version": "0.0.1",
6
+ "description": "comment plugin for canvas-editor",
7
+ "type": "module",
8
+ "publishConfig": {
9
+ "registry": "https://registry.npmjs.org/",
10
+ "access": "public"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "README.md",
15
+ "LICENSE",
16
+ "package.json"
17
+ ],
18
+ "typings": "./dist/src/comment/index.d.ts",
19
+ "main": "./dist/comment.umd.cjs",
20
+ "module": "./dist/comment.js",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/Hufe921/canvas-editor-plugin.git"
24
+ },
25
+ "keywords": [
26
+ "canvas-editor",
27
+ "comment"
28
+ ],
29
+ "scripts": {
30
+ "dev": "vite",
31
+ "build": "vite build --mode lib",
32
+ "type:check": "tsc --noEmit"
33
+ },
34
+ "peerDependencies": {
35
+ "@hufe921/canvas-editor": ">=1.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@hufe921/canvas-editor": "1.0.2",
39
+ "@rollup/plugin-typescript": "^10.0.1",
40
+ "@typescript-eslint/eslint-plugin": "4.33.0",
41
+ "@typescript-eslint/parser": "4.33.0",
42
+ "eslint": "7.32.0",
43
+ "sass": "^1.97.3",
44
+ "simple-git-hooks": "^2.8.1",
45
+ "typescript": "^5.0.2",
46
+ "vite": "^4.3.9",
47
+ "vite-plugin-css-injected-by-js": "^3.3.0"
48
+ }
49
+ }