@hufe921/canvas-editor-plugin-chart 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,65 @@
1
+ <h1 align="center">canvas-editor-plugin-chart</h1>
2
+
3
+ <p align="center">chart plugin for canvas-editor</p>
4
+
5
+ ## 简介
6
+
7
+ 基于 ECharts 的 canvas-editor 数据图表插件。支持柱状图、折线图、饼图的模板化配置,以及高级模式下直接编辑完整的 ECharts option JSON。图表实时预览,并以图片形式插入文档,双击或右键已插入的图表图片可二次编辑。
8
+
9
+ ## 安装
10
+
11
+ ```bash
12
+ npm i @hufe921/canvas-editor-plugin-chart echarts --save
13
+ ```
14
+
15
+ > 注意:echarts 为 peerDependencies,需自行安装。
16
+
17
+ ## 使用
18
+
19
+ ```javascript
20
+ import Editor from '@hufe921/canvas-editor'
21
+ import chartPlugin from '@hufe921/canvas-editor-plugin-chart'
22
+
23
+ const instance = new Editor()
24
+ instance.use(chartPlugin)
25
+
26
+ // 打开图表弹窗
27
+ instance.command.executeChart()
28
+
29
+ // 使用自定义配置
30
+ instance.command.executeChart({
31
+ width: 600,
32
+ height: 400,
33
+ // 打开弹窗时预填的 ECharts option(直接进入高级模式)
34
+ defaultOption: {
35
+ xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed'] },
36
+ yAxis: { type: 'value' },
37
+ series: [{ type: 'bar', data: [120, 200, 150] }]
38
+ },
39
+ // 弹窗语言(内置 zhCN、en),默认取编辑器 locale 配置
40
+ locale: 'en',
41
+ // 覆盖对应语言的弹窗文案
42
+ lang: {
43
+ insert: 'Insert Chart'
44
+ },
45
+ onInsert: option => {
46
+ console.log('insert chart:', option)
47
+ }
48
+ })
49
+
50
+ // 也可以在注册插件时提供默认配置
51
+ instance.use(chartPlugin, {
52
+ locale: 'en'
53
+ })
54
+ ```
55
+
56
+ ## 配置项
57
+
58
+ | 参数 | 说明 | 类型 | 默认值 |
59
+ | --- | --- | --- | --- |
60
+ | width | 插入图片宽度 | `number` | 600 |
61
+ | height | 插入图片高度 | `number` | 400 |
62
+ | defaultOption | 打开弹窗时预填的 ECharts option(直接进入高级模式) | `object` | - |
63
+ | locale | 弹窗语言(内置 zhCN、en),默认取编辑器 locale 配置 | `string` | - |
64
+ | lang | 覆盖对应语言的弹窗文案 | `Partial<IChartLang>` | - |
65
+ | onInsert | 插入图表回调,参数为最终生效的 ECharts option | `(option: object) => void` | - |
package/dist/chart.js ADDED
@@ -0,0 +1,316 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.id="chart-style",e.appendChild(document.createTextNode(".ce-chart-mask{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000000;z-index:99}.ce-chart-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;display:flex;justify-content:center;align-items:center}.ce-chart-dialog{width:720px;max-width:90%;max-height:90%;display:flex;flex-direction:column;background:#ffffff;box-shadow:0 2px 12px #38383833;border:1px solid #e2e6ed;border-radius:2px}.ce-chart-header{height:40px;padding:0 15px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e2e6ed}.ce-chart-tabs{display:flex;height:100%}.ce-chart-tab{padding:0 12px;display:flex;align-items:center;cursor:pointer;font-size:14px;color:#666;border-bottom:2px solid transparent}.ce-chart-tab.active{color:#347ef2;border-bottom-color:#347ef2}.ce-chart-close{cursor:pointer;font-size:18px;font-style:normal;color:#999}.ce-chart-close:hover{color:#333}.ce-chart-main{padding:15px;overflow-y:auto}.ce-chart-form-item{display:flex;align-items:center;margin-bottom:10px}.ce-chart-form-item>span{width:150px;flex-shrink:0;font-size:14px;color:#333}.ce-chart-form-item input,.ce-chart-form-item select{flex:1;height:28px;padding:0 8px;border:1px solid #dcdfe6;border-radius:2px;outline:none;font-size:14px;box-sizing:border-box}.ce-chart-form-item input:focus,.ce-chart-form-item select:focus{border-color:#347ef2}.ce-chart-advanced textarea{width:100%;height:200px;padding:8px;border:1px solid #dcdfe6;border-radius:2px;outline:none;resize:none;font-family:monospace;font-size:13px;box-sizing:border-box}.ce-chart-advanced textarea:focus{border-color:#347ef2}.ce-chart-json-error{display:none;margin-top:6px;color:#f56c6c;font-size:12px}.ce-chart-preview{margin-top:15px;padding:10px;min-height:120px;display:flex;justify-content:center;align-items:center;border:1px dashed #e2e6ed}.ce-chart-preview img{max-width:100%;max-height:260px}.ce-chart-preview-error{display:none;color:#f56c6c;font-size:13px}.ce-chart-footer{display:flex;justify-content:flex-end;gap:10px;padding:10px 15px;border-top:1px solid #e2e6ed}.ce-chart-footer button{height:30px;padding:0 16px;border:1px solid #dcdfe6;border-radius:2px;background:#ffffff;cursor:pointer;font-size:14px}.ce-chart-footer button:hover{color:#347ef2;border-color:#347ef2}.ce-chart-footer .ce-chart-insert{color:#fff;background:#347ef2;border-color:#347ef2}.ce-chart-footer .ce-chart-insert:hover{color:#fff;opacity:.9}.ce-chart-render{position:fixed;left:-99999px;top:-99999px}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ var y = Object.defineProperty;
3
+ var f = (l, e, t) => e in l ? y(l, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[e] = t;
4
+ var s = (l, e, t) => (f(l, typeof e != "symbol" ? e + "" : e, t), t);
5
+ import { ElementType as u, EDITOR_COMPONENT as m, EditorComponent as g } from "@hufe921/canvas-editor";
6
+ import * as b from "echarts";
7
+ const r = "ce-chart", v = "zhCN", E = 600, T = 400, x = 300, L = "120,200,150,80,70", I = {
8
+ zhCN: {
9
+ templateMode: "模板",
10
+ advancedMode: "高级",
11
+ chartType: "图表类型",
12
+ bar: "柱状图",
13
+ line: "折线图",
14
+ pie: "饼图",
15
+ titleText: "标题",
16
+ categories: "类目(逗号分隔)",
17
+ seriesData: "数值(逗号分隔)",
18
+ defaultCategories: "周一,周二,周三,周四,周五",
19
+ optionPlaceholder: "请输入完整的 ECharts option JSON",
20
+ invalidJson: "JSON 格式错误",
21
+ cancel: "取消",
22
+ insert: "插入",
23
+ editChart: "编辑图表"
24
+ },
25
+ en: {
26
+ templateMode: "Template",
27
+ advancedMode: "Advanced",
28
+ chartType: "Chart Type",
29
+ bar: "Bar",
30
+ line: "Line",
31
+ pie: "Pie",
32
+ titleText: "Title",
33
+ categories: "Categories (comma separated)",
34
+ seriesData: "Data (comma separated)",
35
+ defaultCategories: "Mon,Tue,Wed,Thu,Fri",
36
+ optionPlaceholder: "Enter the full ECharts option JSON",
37
+ invalidJson: "Invalid JSON",
38
+ cancel: "Cancel",
39
+ insert: "Insert",
40
+ editChart: "Edit Chart"
41
+ }
42
+ };
43
+ function O() {
44
+ var l, e;
45
+ return ((e = (l = globalThis.crypto) == null ? void 0 : l.randomUUID) == null ? void 0 : e.call(l)) || `${Date.now()}-${Math.random().toString(36).slice(2)}`;
46
+ }
47
+ class w {
48
+ constructor(e, t) {
49
+ s(this, "editor");
50
+ s(this, "defaultOptions");
51
+ s(this, "options");
52
+ s(this, "lang");
53
+ s(this, "mask", null);
54
+ s(this, "container", null);
55
+ s(this, "renderContainer", null);
56
+ s(this, "chartInstance", null);
57
+ s(this, "previewImage", null);
58
+ s(this, "previewError", null);
59
+ s(this, "templatePanel", null);
60
+ s(this, "advancedPanel", null);
61
+ s(this, "tabTemplate", null);
62
+ s(this, "tabAdvanced", null);
63
+ s(this, "optionTextarea", null);
64
+ s(this, "jsonErrorTip", null);
65
+ s(this, "typeSelect", null);
66
+ s(this, "titleInput", null);
67
+ s(this, "categoriesInput", null);
68
+ s(this, "seriesDataInput", null);
69
+ s(this, "mode", "template");
70
+ // 二次编辑时记录原图元素 id,插入时替换,找不到则退化为光标处插入
71
+ s(this, "editElementId", null);
72
+ s(this, "renderTimer", null);
73
+ s(this, "imageDblclickHandler", (e) => {
74
+ this.edit(e.element);
75
+ });
76
+ this.editor = e, this.defaultOptions = t, this.options = this.mergeOptions(), this.lang = this.getLang(), e.eventBus.on("imageDblclick", this.imageDblclickHandler), e.register.contextMenuList([
77
+ {
78
+ name: this.lang.editChart,
79
+ when: (a) => a.startElement === a.endElement && this.isChartImage(a.startElement),
80
+ callback: (a, n) => {
81
+ n.startElement && this.edit(n.startElement);
82
+ }
83
+ }
84
+ ]);
85
+ }
86
+ getChartOption(e) {
87
+ const t = e == null ? void 0 : e.extension;
88
+ return (t == null ? void 0 : t.chartOption) || null;
89
+ }
90
+ isChartImage(e) {
91
+ return (e == null ? void 0 : e.type) === u.IMAGE && !!this.getChartOption(e);
92
+ }
93
+ // 二次编辑:用原图 option 预填(进入高级模式),并记录元素 id 用于替换
94
+ edit(e) {
95
+ const t = this.getChartOption(e);
96
+ t && (this.execute({ defaultOption: t }), this.editElementId = e.id || null);
97
+ }
98
+ mergeOptions(e) {
99
+ var t;
100
+ return {
101
+ ...this.defaultOptions,
102
+ ...e,
103
+ lang: {
104
+ ...(t = this.defaultOptions) == null ? void 0 : t.lang,
105
+ ...e == null ? void 0 : e.lang
106
+ }
107
+ };
108
+ }
109
+ getLang(e) {
110
+ var i, o, c, d, h;
111
+ const t = (o = (i = this.editor.command).getOptions) == null ? void 0 : o.call(i).locale, a = ((e == null ? void 0 : e.locale) || ((c = this.defaultOptions) == null ? void 0 : c.locale) || t || v).toLowerCase().replace(/[-_]/g, "");
112
+ return {
113
+ ...((d = Object.entries(I).find(([p]) => p.toLowerCase() === a)) == null ? void 0 : d[1]) || I[v],
114
+ ...(h = this.defaultOptions) == null ? void 0 : h.lang,
115
+ ...e == null ? void 0 : e.lang
116
+ };
117
+ }
118
+ createHeader() {
119
+ const e = document.createElement("div");
120
+ e.classList.add(`${r}-header`);
121
+ const t = document.createElement("div");
122
+ t.classList.add(`${r}-tabs`), this.tabTemplate = document.createElement("div"), this.tabTemplate.classList.add(`${r}-tab`), this.tabTemplate.innerText = this.lang.templateMode, this.tabTemplate.onclick = () => this.switchMode("template"), this.tabAdvanced = document.createElement("div"), this.tabAdvanced.classList.add(`${r}-tab`), this.tabAdvanced.innerText = this.lang.advancedMode, this.tabAdvanced.onclick = () => this.switchMode("advanced"), t.append(this.tabTemplate, this.tabAdvanced);
123
+ const a = document.createElement("i");
124
+ return a.classList.add(`${r}-close`), a.innerText = "×", a.onclick = () => this.destroy(), e.append(t, a), e;
125
+ }
126
+ createFormItem(e, t) {
127
+ const a = document.createElement("div");
128
+ a.classList.add(`${r}-form-item`);
129
+ const n = document.createElement("span");
130
+ return n.innerText = e, a.append(n, t), a;
131
+ }
132
+ createInput(e) {
133
+ const t = document.createElement("input");
134
+ return t.value = e, t.oninput = () => this.scheduleRender(), t;
135
+ }
136
+ createTemplatePanel() {
137
+ const e = document.createElement("div");
138
+ return e.classList.add(`${r}-template`), this.typeSelect = document.createElement("select"), [
139
+ { value: "bar", label: this.lang.bar },
140
+ { value: "line", label: this.lang.line },
141
+ { value: "pie", label: this.lang.pie }
142
+ ].forEach((a) => {
143
+ const n = document.createElement("option");
144
+ n.value = a.value, n.innerText = a.label, this.typeSelect.append(n);
145
+ }), this.typeSelect.onchange = () => this.scheduleRender(), e.append(this.createFormItem(this.lang.chartType, this.typeSelect)), this.titleInput = this.createInput(""), e.append(this.createFormItem(this.lang.titleText, this.titleInput)), this.categoriesInput = this.createInput(this.lang.defaultCategories), e.append(this.createFormItem(this.lang.categories, this.categoriesInput)), this.seriesDataInput = this.createInput(L), e.append(this.createFormItem(this.lang.seriesData, this.seriesDataInput)), e;
146
+ }
147
+ createAdvancedPanel() {
148
+ const e = document.createElement("div");
149
+ return e.classList.add(`${r}-advanced`), this.optionTextarea = document.createElement("textarea"), this.optionTextarea.placeholder = this.lang.optionPlaceholder, this.optionTextarea.spellcheck = !1, this.optionTextarea.oninput = () => {
150
+ this.hideError(), this.scheduleRender();
151
+ }, this.jsonErrorTip = document.createElement("div"), this.jsonErrorTip.classList.add(`${r}-json-error`), e.append(this.optionTextarea, this.jsonErrorTip), e;
152
+ }
153
+ createPreviewPanel() {
154
+ const e = document.createElement("div");
155
+ return e.classList.add(`${r}-preview`), this.previewImage = document.createElement("img"), this.previewError = document.createElement("div"), this.previewError.classList.add(`${r}-preview-error`), e.append(this.previewImage, this.previewError), e;
156
+ }
157
+ createFooter() {
158
+ const e = document.createElement("div");
159
+ e.classList.add(`${r}-footer`);
160
+ const t = document.createElement("button");
161
+ t.innerText = this.lang.cancel, t.onclick = () => this.destroy();
162
+ const a = document.createElement("button");
163
+ return a.classList.add(`${r}-insert`), a.innerText = this.lang.insert, a.onclick = () => this.confirmInsert(), e.append(t, a), e;
164
+ }
165
+ open() {
166
+ const e = document.createElement("div");
167
+ e.classList.add(`${r}-mask`), e.setAttribute(m, g.COMPONENT), document.body.append(e), this.mask = e;
168
+ const t = document.createElement("div");
169
+ t.classList.add(`${r}-container`), t.setAttribute(m, g.COMPONENT);
170
+ const a = document.createElement("div");
171
+ a.classList.add(`${r}-dialog`), t.append(a), a.append(this.createHeader());
172
+ const n = document.createElement("div");
173
+ n.classList.add(`${r}-main`), this.templatePanel = this.createTemplatePanel(), this.advancedPanel = this.createAdvancedPanel(), n.append(this.templatePanel, this.advancedPanel), n.append(this.createPreviewPanel()), a.append(n), a.append(this.createFooter()), document.body.append(t), this.container = t;
174
+ const i = document.createElement("div");
175
+ i.classList.add(`${r}-render`), document.body.append(i), this.renderContainer = i, this.chartInstance = b.init(i, void 0, {
176
+ width: this.options.width || E,
177
+ height: this.options.height || T
178
+ }), this.options.defaultOption ? (this.optionTextarea.value = JSON.stringify(this.options.defaultOption, null, 2), this.setMode("advanced")) : this.setMode("template");
179
+ }
180
+ setMode(e) {
181
+ this.mode = e;
182
+ const t = e === "template";
183
+ this.templatePanel.style.display = t ? "" : "none", this.advancedPanel.style.display = t ? "none" : "", this.tabTemplate.classList.toggle("active", t), this.tabAdvanced.classList.toggle("active", !t), this.hideError(), this.renderPreview();
184
+ }
185
+ switchMode(e) {
186
+ if (e !== this.mode) {
187
+ if (e === "advanced")
188
+ this.optionTextarea.value = JSON.stringify(this.buildTemplateOption(), null, 2);
189
+ else
190
+ try {
191
+ this.backfillTemplate(JSON.parse(this.optionTextarea.value));
192
+ } catch {
193
+ }
194
+ this.setMode(e);
195
+ }
196
+ }
197
+ buildTemplateOption() {
198
+ const e = this.typeSelect.value || "bar", t = this.titleInput.value.trim(), a = this.categoriesInput.value.split(",").map((i) => i.trim()).filter(Boolean), n = this.seriesDataInput.value.split(",").map((i) => Number(i.trim())).filter((i) => !Number.isNaN(i));
199
+ return e === "pie" ? {
200
+ title: { text: t },
201
+ tooltip: {},
202
+ series: [
203
+ {
204
+ type: "pie",
205
+ radius: "60%",
206
+ data: a.map((i, o) => ({ name: i, value: n[o] ?? 0 }))
207
+ }
208
+ ]
209
+ } : {
210
+ title: { text: t },
211
+ tooltip: {},
212
+ xAxis: { type: "category", data: a },
213
+ yAxis: { type: "value" },
214
+ series: [{ type: e, data: n }]
215
+ };
216
+ }
217
+ backfillTemplate(e) {
218
+ var n;
219
+ if (!e || typeof e != "object")
220
+ return;
221
+ const t = Array.isArray(e.series) ? e.series[0] : null, a = t == null ? void 0 : t.type;
222
+ if ((a === "bar" || a === "line" || a === "pie") && (this.typeSelect.value = a), typeof ((n = e.title) == null ? void 0 : n.text) == "string" && (this.titleInput.value = e.title.text), a === "pie" && Array.isArray(t == null ? void 0 : t.data))
223
+ this.categoriesInput.value = t.data.map((i) => (i == null ? void 0 : i.name) ?? "").join(","), this.seriesDataInput.value = t.data.map((i) => (i == null ? void 0 : i.value) ?? "").join(",");
224
+ else {
225
+ const i = Array.isArray(e.xAxis) ? e.xAxis[0] : e.xAxis;
226
+ Array.isArray(i == null ? void 0 : i.data) && (this.categoriesInput.value = i.data.join(",")), Array.isArray(t == null ? void 0 : t.data) && (this.seriesDataInput.value = t.data.join(","));
227
+ }
228
+ }
229
+ getCurrentOption() {
230
+ return this.mode === "template" ? this.buildTemplateOption() : JSON.parse(this.optionTextarea.value);
231
+ }
232
+ scheduleRender() {
233
+ this.renderTimer && window.clearTimeout(this.renderTimer), this.renderTimer = window.setTimeout(() => this.renderPreview(), x);
234
+ }
235
+ renderPreview() {
236
+ if (!this.chartInstance)
237
+ return;
238
+ let e;
239
+ try {
240
+ e = this.getCurrentOption();
241
+ } catch {
242
+ this.showError();
243
+ return;
244
+ }
245
+ this.hideError(), this.chartInstance.setOption({ ...e, animation: !1 }, !0), this.previewImage.src = this.chartInstance.getDataURL({
246
+ type: "png",
247
+ pixelRatio: 2,
248
+ backgroundColor: "#fff"
249
+ });
250
+ }
251
+ showError() {
252
+ this.previewError.innerText = this.lang.invalidJson, this.previewError.style.display = "", this.mode === "advanced" && (this.jsonErrorTip.innerText = this.lang.invalidJson, this.jsonErrorTip.style.display = "");
253
+ }
254
+ hideError() {
255
+ this.previewError && (this.previewError.style.display = "none"), this.jsonErrorTip && (this.jsonErrorTip.style.display = "none");
256
+ }
257
+ confirmInsert() {
258
+ var c, d, h, p;
259
+ if (!this.chartInstance)
260
+ return;
261
+ let e;
262
+ try {
263
+ e = this.getCurrentOption();
264
+ } catch {
265
+ this.showError();
266
+ return;
267
+ }
268
+ this.chartInstance.setOption({ ...e, animation: !1 }, !0);
269
+ const t = this.chartInstance.getDataURL({
270
+ type: "png",
271
+ pixelRatio: 2,
272
+ backgroundColor: "#fff"
273
+ }), a = this.options.width || E, n = this.options.height || T, i = this.editor.command;
274
+ if (this.editElementId && i.getElementById({ id: this.editElementId }).length) {
275
+ i.executeUpdateElementById({
276
+ id: this.editElementId,
277
+ properties: {
278
+ value: t,
279
+ width: a,
280
+ height: n,
281
+ extension: { chartOption: e }
282
+ }
283
+ }), (d = (c = this.options).onInsert) == null || d.call(c, e), this.destroy();
284
+ return;
285
+ }
286
+ const o = {
287
+ // 生成 id 供二次编辑定位
288
+ id: O(),
289
+ type: u.IMAGE,
290
+ value: t,
291
+ width: a,
292
+ height: n,
293
+ // 双击进入图表编辑,禁用编辑器内置图片预览
294
+ imgPreviewDisabled: !0,
295
+ extension: { chartOption: e }
296
+ };
297
+ i.executeInsertElementList([o]), (p = (h = this.options).onInsert) == null || p.call(h, e), this.destroy();
298
+ }
299
+ destroy() {
300
+ var e, t, a, n;
301
+ this.renderTimer && (window.clearTimeout(this.renderTimer), this.renderTimer = null), (e = this.chartInstance) == null || e.dispose(), this.chartInstance = null, (t = this.mask) == null || t.remove(), (a = this.container) == null || a.remove(), (n = this.renderContainer) == null || n.remove(), this.mask = null, this.container = null, this.renderContainer = null, this.editElementId = null;
302
+ }
303
+ execute(e) {
304
+ this.options = this.mergeOptions(e), this.lang = this.getLang(e), this.destroy(), this.open();
305
+ }
306
+ }
307
+ function P(l, e) {
308
+ const t = l.command, a = new w(l, e);
309
+ t.executeChart = (n) => {
310
+ a.execute(n);
311
+ };
312
+ }
313
+ export {
314
+ P as default
315
+ };
316
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","sources":["../../src/chart/constant/index.ts","../../src/chart/index.ts"],"sourcesContent":[null,null],"names":["PLUGIN_PREFIX","DEFAULT_LOCALE","DEFAULT_WIDTH","DEFAULT_HEIGHT","RENDER_DEBOUNCE_TIME","DEFAULT_SERIES_DATA","PLUGIN_LANG_MAP","createUUID","_b","_a","Chart","editor","defaultOptions","__publicField","payload","_command","context","element","extension","ElementType","chartOption","options","editorLocale","currentLocale","_c","_d","key","_e","header","tabs","close","labelText","control","item","label","value","input","panel","option","footer","cancelBtn","insertBtn","mask","EDITOR_COMPONENT","EditorComponent","container","dialog","main","renderContainer","echarts","mode","isTemplate","type","title","categories","data","num","name","i","series","xAxis","dataURL","width","height","command","chartPlugin","chart"],"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="chart-style",e.appendChild(document.createTextNode(".ce-chart-mask{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000000;z-index:99}.ce-chart-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;display:flex;justify-content:center;align-items:center}.ce-chart-dialog{width:720px;max-width:90%;max-height:90%;display:flex;flex-direction:column;background:#ffffff;box-shadow:0 2px 12px #38383833;border:1px solid #e2e6ed;border-radius:2px}.ce-chart-header{height:40px;padding:0 15px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e2e6ed}.ce-chart-tabs{display:flex;height:100%}.ce-chart-tab{padding:0 12px;display:flex;align-items:center;cursor:pointer;font-size:14px;color:#666;border-bottom:2px solid transparent}.ce-chart-tab.active{color:#347ef2;border-bottom-color:#347ef2}.ce-chart-close{cursor:pointer;font-size:18px;font-style:normal;color:#999}.ce-chart-close:hover{color:#333}.ce-chart-main{padding:15px;overflow-y:auto}.ce-chart-form-item{display:flex;align-items:center;margin-bottom:10px}.ce-chart-form-item>span{width:150px;flex-shrink:0;font-size:14px;color:#333}.ce-chart-form-item input,.ce-chart-form-item select{flex:1;height:28px;padding:0 8px;border:1px solid #dcdfe6;border-radius:2px;outline:none;font-size:14px;box-sizing:border-box}.ce-chart-form-item input:focus,.ce-chart-form-item select:focus{border-color:#347ef2}.ce-chart-advanced textarea{width:100%;height:200px;padding:8px;border:1px solid #dcdfe6;border-radius:2px;outline:none;resize:none;font-family:monospace;font-size:13px;box-sizing:border-box}.ce-chart-advanced textarea:focus{border-color:#347ef2}.ce-chart-json-error{display:none;margin-top:6px;color:#f56c6c;font-size:12px}.ce-chart-preview{margin-top:15px;padding:10px;min-height:120px;display:flex;justify-content:center;align-items:center;border:1px dashed #e2e6ed}.ce-chart-preview img{max-width:100%;max-height:260px}.ce-chart-preview-error{display:none;color:#f56c6c;font-size:13px}.ce-chart-footer{display:flex;justify-content:flex-end;gap:10px;padding:10px 15px;border-top:1px solid #e2e6ed}.ce-chart-footer button{height:30px;padding:0 16px;border:1px solid #dcdfe6;border-radius:2px;background:#ffffff;cursor:pointer;font-size:14px}.ce-chart-footer button:hover{color:#347ef2;border-color:#347ef2}.ce-chart-footer .ce-chart-insert{color:#fff;background:#347ef2;border-color:#347ef2}.ce-chart-footer .ce-chart-insert:hover{color:#fff;opacity:.9}.ce-chart-render{position:fixed;left:-99999px;top:-99999px}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ (function(r,c){typeof exports=="object"&&typeof module<"u"?module.exports=c(require("@hufe921/canvas-editor"),require("echarts")):typeof define=="function"&&define.amd?define(["@hufe921/canvas-editor","echarts"],c):(r=typeof globalThis<"u"?globalThis:r||self,r.chart=c(r.canvasEditor,r.echarts))})(this,function(r,c){"use strict";var w=Object.defineProperty;var C=(r,c,d)=>c in r?w(r,c,{enumerable:!0,configurable:!0,writable:!0,value:d}):r[c]=d;var s=(r,c,d)=>(C(r,typeof c!="symbol"?c+"":c,d),d);function d(o){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:()=>o[t]})}}return e.default=o,Object.freeze(e)}const y=d(c),l="ce-chart",v="zhCN",E=600,T=400,I=300,b="120,200,150,80,70",f={zhCN:{templateMode:"模板",advancedMode:"高级",chartType:"图表类型",bar:"柱状图",line:"折线图",pie:"饼图",titleText:"标题",categories:"类目(逗号分隔)",seriesData:"数值(逗号分隔)",defaultCategories:"周一,周二,周三,周四,周五",optionPlaceholder:"请输入完整的 ECharts option JSON",invalidJson:"JSON 格式错误",cancel:"取消",insert:"插入",editChart:"编辑图表"},en:{templateMode:"Template",advancedMode:"Advanced",chartType:"Chart Type",bar:"Bar",line:"Line",pie:"Pie",titleText:"Title",categories:"Categories (comma separated)",seriesData:"Data (comma separated)",defaultCategories:"Mon,Tue,Wed,Thu,Fri",optionPlaceholder:"Enter the full ECharts option JSON",invalidJson:"Invalid JSON",cancel:"Cancel",insert:"Insert",editChart:"Edit Chart"}},A="";function O(){var o,e;return((e=(o=globalThis.crypto)==null?void 0:o.randomUUID)==null?void 0:e.call(o))||`${Date.now()}-${Math.random().toString(36).slice(2)}`}class x{constructor(e,t){s(this,"editor");s(this,"defaultOptions");s(this,"options");s(this,"lang");s(this,"mask",null);s(this,"container",null);s(this,"renderContainer",null);s(this,"chartInstance",null);s(this,"previewImage",null);s(this,"previewError",null);s(this,"templatePanel",null);s(this,"advancedPanel",null);s(this,"tabTemplate",null);s(this,"tabAdvanced",null);s(this,"optionTextarea",null);s(this,"jsonErrorTip",null);s(this,"typeSelect",null);s(this,"titleInput",null);s(this,"categoriesInput",null);s(this,"seriesDataInput",null);s(this,"mode","template");s(this,"editElementId",null);s(this,"renderTimer",null);s(this,"imageDblclickHandler",e=>{this.edit(e.element)});this.editor=e,this.defaultOptions=t,this.options=this.mergeOptions(),this.lang=this.getLang(),e.eventBus.on("imageDblclick",this.imageDblclickHandler),e.register.contextMenuList([{name:this.lang.editChart,when:i=>i.startElement===i.endElement&&this.isChartImage(i.startElement),callback:(i,a)=>{a.startElement&&this.edit(a.startElement)}}])}getChartOption(e){const t=e==null?void 0:e.extension;return(t==null?void 0:t.chartOption)||null}isChartImage(e){return(e==null?void 0:e.type)===r.ElementType.IMAGE&&!!this.getChartOption(e)}edit(e){const t=this.getChartOption(e);t&&(this.execute({defaultOption:t}),this.editElementId=e.id||null)}mergeOptions(e){var t;return{...this.defaultOptions,...e,lang:{...(t=this.defaultOptions)==null?void 0:t.lang,...e==null?void 0:e.lang}}}getLang(e){var n,h,p,u,m;const t=(h=(n=this.editor.command).getOptions)==null?void 0:h.call(n).locale,i=((e==null?void 0:e.locale)||((p=this.defaultOptions)==null?void 0:p.locale)||t||v).toLowerCase().replace(/[-_]/g,"");return{...((u=Object.entries(f).find(([g])=>g.toLowerCase()===i))==null?void 0:u[1])||f[v],...(m=this.defaultOptions)==null?void 0:m.lang,...e==null?void 0:e.lang}}createHeader(){const e=document.createElement("div");e.classList.add(`${l}-header`);const t=document.createElement("div");t.classList.add(`${l}-tabs`),this.tabTemplate=document.createElement("div"),this.tabTemplate.classList.add(`${l}-tab`),this.tabTemplate.innerText=this.lang.templateMode,this.tabTemplate.onclick=()=>this.switchMode("template"),this.tabAdvanced=document.createElement("div"),this.tabAdvanced.classList.add(`${l}-tab`),this.tabAdvanced.innerText=this.lang.advancedMode,this.tabAdvanced.onclick=()=>this.switchMode("advanced"),t.append(this.tabTemplate,this.tabAdvanced);const i=document.createElement("i");return i.classList.add(`${l}-close`),i.innerText="×",i.onclick=()=>this.destroy(),e.append(t,i),e}createFormItem(e,t){const i=document.createElement("div");i.classList.add(`${l}-form-item`);const a=document.createElement("span");return a.innerText=e,i.append(a,t),i}createInput(e){const t=document.createElement("input");return t.value=e,t.oninput=()=>this.scheduleRender(),t}createTemplatePanel(){const e=document.createElement("div");return e.classList.add(`${l}-template`),this.typeSelect=document.createElement("select"),[{value:"bar",label:this.lang.bar},{value:"line",label:this.lang.line},{value:"pie",label:this.lang.pie}].forEach(i=>{const a=document.createElement("option");a.value=i.value,a.innerText=i.label,this.typeSelect.append(a)}),this.typeSelect.onchange=()=>this.scheduleRender(),e.append(this.createFormItem(this.lang.chartType,this.typeSelect)),this.titleInput=this.createInput(""),e.append(this.createFormItem(this.lang.titleText,this.titleInput)),this.categoriesInput=this.createInput(this.lang.defaultCategories),e.append(this.createFormItem(this.lang.categories,this.categoriesInput)),this.seriesDataInput=this.createInput(b),e.append(this.createFormItem(this.lang.seriesData,this.seriesDataInput)),e}createAdvancedPanel(){const e=document.createElement("div");return e.classList.add(`${l}-advanced`),this.optionTextarea=document.createElement("textarea"),this.optionTextarea.placeholder=this.lang.optionPlaceholder,this.optionTextarea.spellcheck=!1,this.optionTextarea.oninput=()=>{this.hideError(),this.scheduleRender()},this.jsonErrorTip=document.createElement("div"),this.jsonErrorTip.classList.add(`${l}-json-error`),e.append(this.optionTextarea,this.jsonErrorTip),e}createPreviewPanel(){const e=document.createElement("div");return e.classList.add(`${l}-preview`),this.previewImage=document.createElement("img"),this.previewError=document.createElement("div"),this.previewError.classList.add(`${l}-preview-error`),e.append(this.previewImage,this.previewError),e}createFooter(){const e=document.createElement("div");e.classList.add(`${l}-footer`);const t=document.createElement("button");t.innerText=this.lang.cancel,t.onclick=()=>this.destroy();const i=document.createElement("button");return i.classList.add(`${l}-insert`),i.innerText=this.lang.insert,i.onclick=()=>this.confirmInsert(),e.append(t,i),e}open(){const e=document.createElement("div");e.classList.add(`${l}-mask`),e.setAttribute(r.EDITOR_COMPONENT,r.EditorComponent.COMPONENT),document.body.append(e),this.mask=e;const t=document.createElement("div");t.classList.add(`${l}-container`),t.setAttribute(r.EDITOR_COMPONENT,r.EditorComponent.COMPONENT);const i=document.createElement("div");i.classList.add(`${l}-dialog`),t.append(i),i.append(this.createHeader());const a=document.createElement("div");a.classList.add(`${l}-main`),this.templatePanel=this.createTemplatePanel(),this.advancedPanel=this.createAdvancedPanel(),a.append(this.templatePanel,this.advancedPanel),a.append(this.createPreviewPanel()),i.append(a),i.append(this.createFooter()),document.body.append(t),this.container=t;const n=document.createElement("div");n.classList.add(`${l}-render`),document.body.append(n),this.renderContainer=n,this.chartInstance=y.init(n,void 0,{width:this.options.width||E,height:this.options.height||T}),this.options.defaultOption?(this.optionTextarea.value=JSON.stringify(this.options.defaultOption,null,2),this.setMode("advanced")):this.setMode("template")}setMode(e){this.mode=e;const t=e==="template";this.templatePanel.style.display=t?"":"none",this.advancedPanel.style.display=t?"none":"",this.tabTemplate.classList.toggle("active",t),this.tabAdvanced.classList.toggle("active",!t),this.hideError(),this.renderPreview()}switchMode(e){if(e!==this.mode){if(e==="advanced")this.optionTextarea.value=JSON.stringify(this.buildTemplateOption(),null,2);else try{this.backfillTemplate(JSON.parse(this.optionTextarea.value))}catch{}this.setMode(e)}}buildTemplateOption(){const e=this.typeSelect.value||"bar",t=this.titleInput.value.trim(),i=this.categoriesInput.value.split(",").map(n=>n.trim()).filter(Boolean),a=this.seriesDataInput.value.split(",").map(n=>Number(n.trim())).filter(n=>!Number.isNaN(n));return e==="pie"?{title:{text:t},tooltip:{},series:[{type:"pie",radius:"60%",data:i.map((n,h)=>({name:n,value:a[h]??0}))}]}:{title:{text:t},tooltip:{},xAxis:{type:"category",data:i},yAxis:{type:"value"},series:[{type:e,data:a}]}}backfillTemplate(e){var a;if(!e||typeof e!="object")return;const t=Array.isArray(e.series)?e.series[0]:null,i=t==null?void 0:t.type;if((i==="bar"||i==="line"||i==="pie")&&(this.typeSelect.value=i),typeof((a=e.title)==null?void 0:a.text)=="string"&&(this.titleInput.value=e.title.text),i==="pie"&&Array.isArray(t==null?void 0:t.data))this.categoriesInput.value=t.data.map(n=>(n==null?void 0:n.name)??"").join(","),this.seriesDataInput.value=t.data.map(n=>(n==null?void 0:n.value)??"").join(",");else{const n=Array.isArray(e.xAxis)?e.xAxis[0]:e.xAxis;Array.isArray(n==null?void 0:n.data)&&(this.categoriesInput.value=n.data.join(",")),Array.isArray(t==null?void 0:t.data)&&(this.seriesDataInput.value=t.data.join(","))}}getCurrentOption(){return this.mode==="template"?this.buildTemplateOption():JSON.parse(this.optionTextarea.value)}scheduleRender(){this.renderTimer&&window.clearTimeout(this.renderTimer),this.renderTimer=window.setTimeout(()=>this.renderPreview(),I)}renderPreview(){if(!this.chartInstance)return;let e;try{e=this.getCurrentOption()}catch{this.showError();return}this.hideError(),this.chartInstance.setOption({...e,animation:!1},!0),this.previewImage.src=this.chartInstance.getDataURL({type:"png",pixelRatio:2,backgroundColor:"#fff"})}showError(){this.previewError.innerText=this.lang.invalidJson,this.previewError.style.display="",this.mode==="advanced"&&(this.jsonErrorTip.innerText=this.lang.invalidJson,this.jsonErrorTip.style.display="")}hideError(){this.previewError&&(this.previewError.style.display="none"),this.jsonErrorTip&&(this.jsonErrorTip.style.display="none")}confirmInsert(){var p,u,m,g;if(!this.chartInstance)return;let e;try{e=this.getCurrentOption()}catch{this.showError();return}this.chartInstance.setOption({...e,animation:!1},!0);const t=this.chartInstance.getDataURL({type:"png",pixelRatio:2,backgroundColor:"#fff"}),i=this.options.width||E,a=this.options.height||T,n=this.editor.command;if(this.editElementId&&n.getElementById({id:this.editElementId}).length){n.executeUpdateElementById({id:this.editElementId,properties:{value:t,width:i,height:a,extension:{chartOption:e}}}),(u=(p=this.options).onInsert)==null||u.call(p,e),this.destroy();return}const h={id:O(),type:r.ElementType.IMAGE,value:t,width:i,height:a,imgPreviewDisabled:!0,extension:{chartOption:e}};n.executeInsertElementList([h]),(g=(m=this.options).onInsert)==null||g.call(m,e),this.destroy()}destroy(){var e,t,i,a;this.renderTimer&&(window.clearTimeout(this.renderTimer),this.renderTimer=null),(e=this.chartInstance)==null||e.dispose(),this.chartInstance=null,(t=this.mask)==null||t.remove(),(i=this.container)==null||i.remove(),(a=this.renderContainer)==null||a.remove(),this.mask=null,this.container=null,this.renderContainer=null,this.editElementId=null}execute(e){this.options=this.mergeOptions(e),this.lang=this.getLang(e),this.destroy(),this.open()}}function L(o,e){const t=o.command,i=new x(o,e);t.executeChart=a=>{i.execute(a)}}return L});
3
+ //# sourceMappingURL=chart.umd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.umd.cjs","sources":["../../src/chart/constant/index.ts","../../src/chart/index.ts"],"sourcesContent":[null,null],"names":["PLUGIN_PREFIX","DEFAULT_LOCALE","DEFAULT_WIDTH","DEFAULT_HEIGHT","RENDER_DEBOUNCE_TIME","DEFAULT_SERIES_DATA","PLUGIN_LANG_MAP","createUUID","_b","_a","Chart","editor","defaultOptions","__publicField","payload","_command","context","element","extension","ElementType","chartOption","options","editorLocale","currentLocale","_c","_d","key","_e","header","tabs","close","labelText","control","item","label","value","input","panel","option","footer","cancelBtn","insertBtn","mask","EDITOR_COMPONENT","EditorComponent","container","dialog","main","renderContainer","echarts","mode","isTemplate","type","title","categories","data","num","name","i","series","xAxis","dataURL","width","height","command","chartPlugin","chart"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { IChartLang } from '../interface';
2
+ export declare const PLUGIN_PREFIX = "ce-chart";
3
+ export declare const DEFAULT_LOCALE = "zhCN";
4
+ export declare const DEFAULT_WIDTH = 600;
5
+ export declare const DEFAULT_HEIGHT = 400;
6
+ export declare const RENDER_DEBOUNCE_TIME = 300;
7
+ export declare const DEFAULT_SERIES_DATA = "120,200,150,80,70";
8
+ export declare const PLUGIN_LANG_MAP: Record<string, IChartLang>;
@@ -0,0 +1,9 @@
1
+ import { Editor } from '@hufe921/canvas-editor';
2
+ import type { IChartOptions } from './interface';
3
+ import './style';
4
+ declare module '@hufe921/canvas-editor' {
5
+ interface Command {
6
+ executeChart(options?: IChartOptions): void;
7
+ }
8
+ }
9
+ export default function chartPlugin(editor: Editor, defaultOptions?: IChartOptions): void;
@@ -0,0 +1,27 @@
1
+ export type IChartType = 'bar' | 'line' | 'pie';
2
+ export type IChartMode = 'template' | 'advanced';
3
+ export interface IChartLang {
4
+ templateMode: string;
5
+ advancedMode: string;
6
+ chartType: string;
7
+ bar: string;
8
+ line: string;
9
+ pie: string;
10
+ titleText: string;
11
+ categories: string;
12
+ seriesData: string;
13
+ defaultCategories: string;
14
+ optionPlaceholder: string;
15
+ invalidJson: string;
16
+ cancel: string;
17
+ insert: string;
18
+ editChart: string;
19
+ }
20
+ export interface IChartOptions {
21
+ width?: number;
22
+ height?: number;
23
+ defaultOption?: object;
24
+ locale?: string;
25
+ lang?: Partial<IChartLang>;
26
+ onInsert?: (option: object) => void;
27
+ }
@@ -0,0 +1 @@
1
+ import './index.scss';
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@hufe921/canvas-editor-plugin-chart",
3
+ "author": "Hufe",
4
+ "license": "MIT",
5
+ "version": "0.0.1",
6
+ "description": "chart 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/chart/index.d.ts",
19
+ "main": "./dist/chart.umd.cjs",
20
+ "module": "./dist/chart.js",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/Hufe921/canvas-editor-plugin.git"
24
+ },
25
+ "keywords": [
26
+ "canvas-editor",
27
+ "chart",
28
+ "echarts"
29
+ ],
30
+ "scripts": {
31
+ "dev": "vite",
32
+ "build": "vite build --mode lib",
33
+ "type:check": "tsc --noEmit"
34
+ },
35
+ "peerDependencies": {
36
+ "@hufe921/canvas-editor": ">=1.0.0",
37
+ "echarts": "^5.0.0"
38
+ },
39
+ "devDependencies": {
40
+ "@hufe921/canvas-editor": "1.0.2",
41
+ "@rollup/plugin-typescript": "^10.0.1",
42
+ "@typescript-eslint/eslint-plugin": "4.33.0",
43
+ "@typescript-eslint/parser": "4.33.0",
44
+ "echarts": "^5.6.0",
45
+ "eslint": "7.32.0",
46
+ "sass": "^1.97.3",
47
+ "simple-git-hooks": "^2.8.1",
48
+ "typescript": "^5.0.2",
49
+ "vite": "^4.3.9",
50
+ "vite-plugin-css-injected-by-js": "^3.3.0"
51
+ }
52
+ }