@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 +32 -0
- package/dist/comment.js +244 -0
- package/dist/comment.js.map +1 -0
- package/dist/comment.umd.cjs +3 -0
- package/dist/comment.umd.cjs.map +1 -0
- package/dist/src/comment/constant/index.d.ts +9 -0
- package/dist/src/comment/index.d.ts +13 -0
- package/dist/src/comment/interface/index.d.ts +24 -0
- package/dist/src/comment/style/index.d.ts +1 -0
- package/package.json +49 -0
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
|
+
```
|
package/dist/comment.js
ADDED
|
@@ -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":";AAEO,MAAMA,IAAgB,cAEhBC,IAAiB,QAEjBC,IAA0B,WAE1BC,IAAqB,KAErBC,KAAqB,WAGrBC,IAAqB,WAGrBC,KAAW,GAEXC,IAAgD;AAAA,EAC3D,MAAM;AAAA,IACJ,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,YAAY;AAAA,EACb;AAAA,EACD,IAAI;AAAA,IACF,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,YAAY;AAAA,EACb;GCaGC,IAAS;AAES,SAAAC,GACtBC,GACAC,GAAgC;AAEhC,QAAMC,IAAUF,EAAO,SACjBG,IAAYD,EAAQ,gBAEpBE,wBAAiB,OAEjBC,wBAAc;AACpB,MAAIC,IAAiC,MAEjCC,IAAmC;AAEjC,QAAAC,KAAYP,KAAA,gBAAAA,EAAgB,cAAaR,GACzCgB,KAAYR,KAAA,gBAAAA,EAAgB,cAAaP,IAGzCgB,IAAU,MAAmB;;AAE3B,UAAAC,KAAgBC,IAAAV,EAAgB,eAAhB,gBAAAU,EAAA,KAAAV,GAA+B,QAE/CW,MACJZ,KAAA,gBAAAA,EAAgB,WAChBU,KACApB,GAEC,cACA,QAAQ,SAAS,EAAE;AAKf,WAAA;AAAA,MACL,KAJAuB,IAAA,OAAO,QAAQjB,CAAe,EAAE,KAC9B,CAAC,CAACkB,CAAG,MAAMA,EAAI,YAAkB,MAAAF,CAAa,MADhD,gBAAAC,EAEI,OAAMjB,EAAgBN,CAAc;AAAA,MAGxC,GAAGU,KAAA,gBAAAA,EAAgB;AAAA,IAAA;AAAA,KAKjBe,IAAO,SAAS,cAAc,KAAK;AACpC,EAAAA,EAAA,aAAaC,GAAkBC,EAAgB,SAAS,GAC7DF,EAAK,UAAU,IAAI,GAAG1B,CAAa,OAAO,GACrC0B,EAAA,MAAM,QAAQ,GAAGR,CAAS,MAC/BQ,EAAK,MAAM,UAAU;AAGrB,QAAMG,IAAY,SAAS,gBAAgBrB,GAAQ,KAAK;AAC9C,EAAAqB,EAAA,aAAaF,GAAkBC,EAAgB,SAAS,GAClEC,EAAU,UAAU,IAAI,GAAG7B,CAAa,aAAa,GACrD6B,EAAU,MAAM,UAAU;AAM1B,QAAMC,IADOjB,EAAU,iBACGA;AAE1B,EAAI,iBAAiBiB,CAAS,EAAE,aAAa,aAC3CA,EAAU,MAAM,WAAW,aAEnBA,EAAA,OAAOD,GAAWH,CAAI;AAGhC,QAAMK,IAAoB,MAAK;AAC7B,QAAIC,IAAKnB,EAAU;AACZ,WAAAmB,KAAMA,MAAO,SAAS,QAAM;AAC3B,YAAAC,IAAY,iBAAiBD,CAAE,EAAE;AACnC,UAAAC,MAAc,UAAUA,MAAc;AACjC,eAAA,EAAE,KAAKD,EAAG,sBAAA,EAAwB,KAAK,QAAQA,EAAG;AAE3D,MAAAA,IAAKA,EAAG;AAAA,IACV;AACA,WAAO,EAAE,KAAK,GAAG,QAAQ,OAAO,YAAW;AAAA,EAAA,GAKvCE,IAAW,MAAK;AACd,UAAAC,IAAWL,EAAU,yBAErBM,IAAWvB,EAAU,sBAAA,EAAwB,QAAQsB,EAAS,OAAO,GAIrEE,IAAWN,KACXO,IAAUD,EAAS,MAAMF,EAAS,MAAML,EAAU;AACnD,IAAAJ,EAAA,MAAM,MAAM,GAAGY,CAAO,MAC3BZ,EAAK,MAAM,SAAS,QACpBA,EAAK,MAAM,SAAS,GAAGW,EAAS,MAAM,MAC5BR,EAAA,MAAM,MAAM,GAAGS,CAAO,MAChCT,EAAU,MAAM,SAAS,GAAGQ,EAAS,MAAM,MACvCD,IAAWlB,KAAaY,EAAU,eAC/BJ,EAAA,MAAM,OAAO,GAAGU,CAAQ,MAC7BV,EAAK,MAAM,QAAQ,QACnBA,EAAK,UAAU,OAAO,GAAG1B,CAAa,gBAAgB,MAGtD0B,EAAK,MAAM,OAAO,QAClBA,EAAK,MAAM,QAAQ,KACnBA,EAAK,UAAU,IAAI,GAAG1B,CAAa,gBAAgB;AAAA,EACrD;;AAKI,QAAAuC,IAAiB,CACrBC,MACuBA,KAAA,gBAAAA,EAAU,KAAK,CAAMC,MAAA3B,EAAW,IAAI2B,CAAE,IAGzDC,IAAoB,CAACD,MAAc;AACvC,UAAME,IAAO/B,EAAQ,WAAW,KAAK;AACrC,QAAIgC,IAAQ,IACRC,IAAO;AAOX,IANKF,EAAA,QAAQ,CAACG,GAASC,MAAS;;AAC9B,OAAIzB,IAAAwB,EAAQ,aAAR,QAAAxB,EAAkB,SAASmB,OACzBG,IAAQ,MAAWA,IAAAG,IAChBF,IAAAE;AAAA,IACT,CACD,GACG,EAAAH,IAAQ,OACJhC,EAAA,gBAAgBgC,GAAOC,CAAI,GACnCjC,EAAQ,iBAAiB,IAAI,GAC7BA,EAAQ,mBAAmB6B,CAAE;AAAA,EAAA,GAGzBO,IAAuB,MAAyB;;AACpD,UAAM,EAAE,YAAAC,EAAA,IAAerC,EAAQ,YACzB+B,IAAO/B,EAAQ,WAAW,KAAK;AAGnC,WAAA2B,GAAejB,IAAAqB,EAAKM,CAAU,MAAf,gBAAA3B,EAAkB,QAAQ,KACzCiB,GAAef,IAAAmB,EAAKM,IAAa,CAAC,MAAnB,gBAAAzB,EAAsB,QAAQ;AAAA,EAAA,GAK3C0B,IAAa,CAACC,MAAuB;AACnC,UAAAC,IAAO,IAAI,KAAKD,CAAG,GACnBE,IAAM,CAACC,MAAc,OAAOA,CAAC,EAAE,SAAS,GAAG,GAAG;AAC7C,WAAA,GAAGF,EAAK,SAAU,IAAG,CAAC,IAAIA,EAAK,SAAS,IAAIC,EACjDD,EAAK,SAAU,CAAA,CAChB,IAAIC,EAAID,EAAK,YAAY,CAAC;AAAA,EAAA,GAIvBG,IAAiB,CAACC,MAAqC;AAC3D,UAAMC,IAAOrC,KACPsC,IAAO,SAAS,cAAc,KAAK;AACpC,IAAAA,EAAA,aAAa/B,GAAkBC,EAAgB,SAAS,GAC7D8B,EAAK,UAAU,IAAI,GAAG1D,CAAa,OAAO;AAGpC,UAAA2D,IAAW,SAAS,cAAc,QAAQ;AAChD,IAAAA,EAAS,UAAU,IAAI,GAAG3D,CAAa,cAAc,GACrD2D,EAAS,YAAY,KACrBA,EAAS,QAAQF,EAAK,mBACtBE,EAAS,UAAU,CAAMC,MAAA;AACvB,MAAAA,EAAI,gBAAe,GACXhD,EAAA,qBAAqB4C,EAAQ,EAAE;AAAA,IAAA;AAGnC,UAAAK,IAAS,SAAS,cAAc,KAAK;AAC3C,IAAAA,EAAO,UAAU,IAAI,GAAG7D,CAAa,eAAe;AAC9C,UAAA8D,IAAW,SAAS,cAAc,MAAM;AAC9C,IAAAA,EAAS,UAAU,IAAI,GAAG9D,CAAa,aAAa,GAC3C8D,EAAA,YAAYN,EAAQ,QAAQ,IAC5BM,EAAA,MAAM,SAAQnD,KAAA,gBAAAA,EAAgB,cAAaN;AAC9C,UAAA0D,IAAW,SAAS,cAAc,MAAM;AAC9C,IAAAA,EAAS,UAAU,IAAI,GAAG/D,CAAa,aAAa,GAC3C+D,EAAA,YAAYb,EAAWM,EAAQ,SAAS,GAC1CK,EAAA,OAAOC,GAAUC,CAAQ;AAE1B,UAAAC,IAAU,SAAS,cAAc,KAAK;AAC5C,WAAAA,EAAQ,UAAU,IAAI,GAAGhE,CAAa,gBAAgB,GACtDgE,EAAQ,YAAYR,EAAQ,SAEvBE,EAAA,OAAOC,GAAUE,GAAQG,CAAO,GAErCN,EAAK,UAAU,MAAK;AACV,MAAA9C,EAAA,qBAAqB4C,EAAQ,EAAE;AAAA,IAAA,GAElCE;AAAA,EAAA,GAIHO,IAAS,MAAK;;AAKZ,UAAAC,IAAgBrD,EAAU,yBAC1BwB,IAAWN,KACXoC,IAAUD,EAAc,MAAMrD,EAAU,YAAYwB,EAAS,KAC7D+B,IACJF,EAAc,OACdpC,EAAU,wBAAwB,OAClCjB,EAAU,YACNwD,IAAuB,CAAA,GACvBC,wBAAiB;AA2BvB,QAxBWxD,EAAA,QAAQ,CAAC0C,GAASf,MAAM;;AACjC,YAAM8B,KAAOjD,IAAAV,EAAQ,iBAAiB6B,CAAE,MAA3B,gBAAAnB,EAA+B;AAC5C,UAAI,CAACiD;AAAM;AACP,UAAAb,IAAO3C,EAAQ,IAAI0B,CAAE;AACzB,MAAKiB,MACHA,IAAOH,EAAeC,CAAO,GACrBzC,EAAA,IAAI0B,GAAIiB,CAAI,GACpBhC,EAAK,OAAOgC,CAAI,IAElBA,EAAK,UAAU,OACb,GAAG1D,CAAa,iBAChByC,MAAOzB,CAAe,GAExBsD,EAAW,IAAI7B,CAAE,GACjB4B,EAAM,KAAK;AAAA,QACT,IAAA5B;AAAA,QACA,SAAS2B,IAAQG,EAAK,IAAIA,EAAK;AAAA,QAC/B,SAASA,EAAK,IAAIA,EAAK,SAAS;AAAA,QAChC,MAAAb;AAAA,QACA,KAAK;AAAA,MAAA,CACN;AAAA,IAAA,CACF,GAGGzC,GAAa;AACf,YAAMsD,KAAOjD,IAAAV,EAAQ,iBAAiBK,EAAY,OAAO,MAA5C,gBAAAK,EAAgD;AAC7D,MAAIiD,KACFF,EAAM,KAAK;AAAA,QACT,IAAIpD,EAAY;AAAA,QAChB,SAASmD,IAAQG,EAAK,IAAIA,EAAK;AAAA,QAC/B,SAASA,EAAK,IAAIA,EAAK,SAAS;AAAA,QAChC,MAAMtD,EAAY;AAAA,QAClB,UAAUA,EAAY;AAAA,QACtB,KAAKA,EAAY;AAAA,MAAA,CAClB;AAAA,IAEL;AAGQ,IAAAF,EAAA,QAAQ,CAAC2C,GAAMjB,MAAM;AAC3B,MAAK6B,EAAW,IAAI7B,CAAE,MACpBiB,EAAK,OAAM,GACX3C,EAAQ,OAAO0B,CAAE;AAAA,IACnB,CACD;AAGK,UAAA+B,IAAaH,EAAM,SAAS;AAGlC,QAFK3C,EAAA,MAAM,UAAU8C,IAAa,KAAK,QAC7B3C,EAAA,MAAM,UAAU2C,IAAa,KAAK,QACxC,CAACA,GAAY;AACf,MAAA3C,EAAU,YAAY;AACtB;AAAA,IACF;;AAIA,UAAM4C,IAAY/C,EAAK;AAGvB,IAAA2C,EAAM,KAAK,CAACK,GAAGC,MAAMD,EAAE,UAAUC,EAAE,OAAO;AAC1C,QAAIC,IAA4B;AAChC,IAAAP,EAAM,QAAQ,CAAOQ,MAAA;AACf,MAAAA,EAAK,YAAY,SACdA,EAAA,MAAM,KAAK,IACdA,EAAK,SACLD,KAAc,OAAO,IAAIA,IAAatE,EAAQ,IAIlDuE,EAAK,KAAK,MAAM,MAAM,GAAGA,EAAK,MAAMV,CAAO,MAC9BS,IAAAC,EAAK,MAAMA,EAAK,KAAK;AAAA,IAAA,CACnC,GAIDhD,EAAU,YAAY;AACtB,UAAMiD,IAAWL,IAAY;AAC7B,IAAAJ,EAAM,QAAQ,CAAOQ,MAAA;AACb,YAAAE,IAAYN,IAAYI,EAAK,KAAK,YAClCG,IAAcH,EAAK,UAAUV,GAC7Bc,IAAcJ,EAAK,MAAMA,EAAK,KAAK,eAAe,IAAIV,GAEtDe,IACJL,EAAK,UAAUC,IACX,KAAKD,EAAK,OAAO,IAAIG,CAAW,MAAMF,CAAQ,IAAIE,CAAW,MAAMD,CAAS,IAAIE,CAAW,KAC3F,KAAKJ,EAAK,OAAO,IAAIG,CAAW,MAAMD,CAAS,IAAIE,CAAW,IAC9DE,IAAO,SAAS,gBAAgB3E,GAAQ,MAAM;AAC/C,MAAA2E,EAAA,aAAa,KAAKD,CAAC,GACnBC,EAAA,aAAa,QAAQ,MAAM,GAC3BA,EAAA,aAAa,UAAUhE,CAAS;AAC/B,YAAAiE,IAAWP,EAAK,OAAO7D;AAE7B,MAAAmE,EAAK,aAAa,gBAAgBC,IAAW,QAAQ,GAAG,GACnDA,KACED,EAAA,aAAa,oBAAoB,KAAK,GAE7CtD,EAAU,OAAOsD,CAAI;AAAA,IAAA,CACtB;AAAA,EAAA,GAIGE,IAAsB,MAAK;AAC/B,QAAI,CAACpE;AAAa;AAClB,UAAM,EAAE,SAAAqE,GAAS,YAAArC,GAAY,UAAAsC,GAAU,MAAA7B,MAASzC;AAClC,IAAAA,IAAA,MACdyC,EAAK,OAAM,GACH9C,EAAA,gBAAgBqC,GAAYsC,CAAQ,GAC5C3E,EAAQ,iBAAiB,IAAI,GAC7BA,EAAQ,mBAAmB0E,CAAO;KAK9BE,IAAe,CACnBF,GACArC,GACAsC,MACE;;AACF,UAAMhB,KAAOjD,IAAAV,EAAQ,iBAAiB0E,CAAO,MAAhC,gBAAAhE,EAAoC;AACjD,QAAI,CAACiD,GAAM;AAED,MAAA3D,EAAA,gBAAgBqC,GAAYsC,CAAQ,GAC5C3E,EAAQ,iBAAiB,IAAI,GAC7BA,EAAQ,mBAAmB0E,CAAO;AAClC;AAAA,IACF;AACA,UAAM7B,IAAOrC,KACPsC,IAAO,SAAS,cAAc,KAAK;AACpC,IAAAA,EAAA,aAAa/B,GAAkBC,EAAgB,SAAS,GAC7D8B,EAAK,UAAU,IACb,GAAG1D,CAAa,SAChB,GAAGA,CAAa,gBAAgB;AAI5B,UAAA6D,IAAS,SAAS,cAAc,KAAK;AAC3C,IAAAA,EAAO,UAAU,IAAI,GAAG7D,CAAa,eAAe;AAC9C,UAAA8D,IAAW,SAAS,cAAc,MAAM;AAC9C,IAAAA,EAAS,UAAU,IAAI,GAAG9D,CAAa,aAAa,GAC3C8D,EAAA,aAAYnD,KAAA,gBAAAA,EAAgB,SAAQ,IACpCmD,EAAA,MAAM,SAAQnD,KAAA,gBAAAA,EAAgB,cAAaN;AAC9C,UAAA0D,IAAW,SAAS,cAAc,MAAM;AAC9C,IAAAA,EAAS,UAAU,IAAI,GAAG/D,CAAa,aAAa,GACpD+D,EAAS,YAAYb,GAAW,oBAAI,KAAI,GAAG,aAAa,GACjDW,EAAA,OAAOC,GAAUC,CAAQ;AAE1B,UAAA0B,IAAW,SAAS,cAAc,UAAU;AAClD,IAAAA,EAAS,UAAU,IAAI,GAAGzF,CAAa,iBAAiB,GACxDyF,EAAS,cAAchC,EAAK,iBAE5BgC,EAAS,UAAU,MAAK;AACtB,MAAAA,EAAS,MAAM,SAAS,QACfA,EAAA,MAAM,SAAS,GAAG,KAAK,IAAIA,EAAS,cAAc,EAAE,CAAC;;AAI1D,UAAAC,IAAS,SAAS,cAAc,KAAK;AAC3C,IAAAA,EAAO,UAAU,IAAI,GAAG1F,CAAa,eAAe;AAE9C,UAAA2F,IAAY,SAAS,cAAc,QAAQ;AACjD,IAAAA,EAAU,UAAU,IAAI,GAAG3F,CAAa,eAAe,GACvD2F,EAAU,YAAYlC,EAAK,YAC3BkC,EAAU,UAAU,CAAM/B,MAAA;AACxB,MAAAA,EAAI,gBAAe;;AAIf,UAAAgC,IAAa,SAAS,cAAc,QAAQ;AAClD,IAAAA,EAAW,UAAU,IACnB,GAAG5F,CAAa,iBAChB,GAAGA,CAAa,wBAAwB,GAE1C4F,EAAW,YAAYnC,EAAK,aAC5BmC,EAAW,UAAU,CAAMhC,MAAA;;AACzB,MAAAA,EAAI,gBAAe;AACb,YAAAI,IAAUyB,EAAS,MAAM;AAC/B,UAAI,CAACzB,GAAS;AACZ,QAAAyB,EAAS,MAAK;AACd;AAAA,MACF;AACA,YAAMjC,IAAoB;AAAA,QACxB,IAAI8B;AAAA,QACJ,SAAAtB;AAAA,QACA,YAAW,oBAAI,KAAM,GAAC,YAAa;AAAA,QACnC,MAAMrD,KAAA,gBAAAA,EAAgB;AAAA,MAAA;AAEb,MAAAG,EAAA,IAAIwE,GAAS9B,CAAO,IAC/BlC,IAAAX,KAAA,gBAAAA,EAAgB,UAAhB,QAAAW,EAAA,KAAAX,GAAwB6C,IAEhB5C,EAAA,gBAAgBqC,GAAYsC,CAAQ,GAE5CtE,KAAA,QAAAA,EAAa,KAAK,UACJA,IAAA;OAITyE,EAAA,OAAOC,GAAWC,CAAU,GAC9BlC,EAAA,OAAOG,GAAQ4B,GAAUC,CAAM;AAG9B,UAAAG,IAAM,KAAK,IAAItB,EAAK,IAAIA,EAAK,SAAS,GAAG,CAAC;AAChD,IAAA7C,EAAK,OAAOgC,CAAI,GAChBzC,IAAc,EAAE,SAAAqE,GAAS,YAAArC,GAAY,UAAAsC,GAAU,MAAA7B,GAAM,KAAAmC,UAErDJ,EAAS,MAAK;AAAA,EAAA;AAGhB,EAAA7E,EAAQ,oBAAoB,MAAK;AAC/B,UAAM,EAAE,YAAAqC,GAAY,UAAAsC,EAAQ,IAAK3E,EAAQ,SAAQ;AACjD,QAAI,CAAC,CAACqC,KAAc,CAAC,CAACsC,KAAYtC,MAAesC;AAAU;;AAIrD,UAAAD,IAAU1E,EAAQ;AACxB,IAAK0E,MACG1E,EAAA,kBACND,KAAA,gBAAAA,EAAgB,mBAAkBT,CAAuB,GAE9CsF,EAAAF,GAASrC,GAAYsC,CAAQ;AAAA,EAAA,GAGpC3E,EAAA,uBAAuB,CAAC6B,MAAe;;AACvC,UAAAqD,IAAYrD,KAAMO;AACxB,IAAI,CAAC8C,KAAa,CAAChF,EAAW,IAAIgF,CAAS,MAC3ChF,EAAW,OAAOgF,CAAS,GAC3BpD,EAAkBoD,CAAS,IAC3BxE,IAAAX,KAAA,gBAAAA,EAAgB,aAAhB,QAAAW,EAAA,KAAAX,GAA2BmF,IACvB9E,MAAoB8E,MACJ9E,IAAA;KAKtBJ,EAAQ,wBAAwB,MAAM,MAAM,KAAKE,EAAW,QAAQ,GAE5DF,EAAA,wBAAwB,CAACmF,MAAoB;AACnD,IAAAjF,EAAW,MAAK,GAChBiF,EAAK,QAAQ,CAAWvC,MAAA1C,EAAW,IAAI0C,EAAQ,IAAIA,CAAO,CAAC;;AAK7D,QAAMC,IAAOrC;AACb,EAAAV,EAAO,SAAS,gBAAgB;AAAA,IAC9B;AAAA,MACE,MAAM+C,EAAK;AAAA,MACX,MAAM,CAAAuC,MAAWA,EAAQ,sBAAsB,CAACA,EAAQ;AAAA,MACxD,UAAU,MAAK;AACb,QAAApF,EAAQ,kBAAiB;AAAA,MAC3B;AAAA,IACD;AAAA,IACD;AAAA,MACE,MAAM6C,EAAK;AAAA,MACX,MAAM,CACJuC,MAAA;;AAAA,gBAACA,EAAQ,cAAc,CAAC,CAACzD,GAAejB,IAAA0E,EAAQ,iBAAR,gBAAA1E,EAAsB,QAAQ;AAAA;AAAA,MACxE,UAAU,CAAC2E,GAAUD,MAAW;;AAC9B,cAAMvD,IAAKF,GAAejB,IAAA0E,EAAQ,iBAAR,gBAAA1E,EAAsB,QAAQ;AACxD,QAAImB,KACF7B,EAAQ,qBAAqB6B,CAAE;AAAA,MAEnC;AAAA,IACD;AAAA,EAAA,CACF,GAGD/B,EAAO,SAAS,GAAG,oBAAoB,CAACwF,MAAwB;AAC5C,IAAAlF,IAAAuB,EAAe2D,EAAQ,QAAQ,KAAK;GAEvD,GAGMxF,EAAA,SAAS,GAAG,iBAAiB,MAAK;AACvC,QAAII,EAAW,MAAM;AACb,YAAAqF,wBAAkB;AACxB,MAAAvF,EAAQ,SAAU,EAAC,KAAK,KAAK,QAAQ,CAAUkC,MAAA;;AAC7C,SAAAxB,IAAAwB,EAAQ,aAAR,QAAAxB,EAAkB,QAAQ,CAAAmB,MAAM0D,EAAY,IAAI1D,CAAE;AAAA,MAAC,CACpD,GACD,MAAM,KAAK3B,EAAW,KAAM,CAAA,EAAE,QAAQ,CAAK2B,MAAA;AAEzC,QAAK0D,EAAY,IAAI1D,CAAE,KACrB3B,EAAW,OAAO2B,CAAE;AAAA,MACtB,CACD;AAAA,IACH;;GAED,GAGM/B,EAAA,SAAS,GAAG,mBAAmB,MAAK;;GAE1C,GAGMA,EAAA,SAAS,GAAG,kBAAkB,MAAK;;GAEzC;AAGD,MAAI0F,IAAc;AACT,WAAA,iBACP,UACA,MAAK;AACC,IAAAA,MACJA,IAAc,sBAAsB,MAAK;AACzB,MAAAA,IAAA;KAEf;AAAA,KAEH,EAAI,GAIiB,IAAI,eAAe,MAAK;;GAE9C,EACc,QAAQtE,CAAS;AAClC;"}
|
|
@@ -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
|
+
}
|