@hufe921/canvas-editor-plugin-mention 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.
@@ -0,0 +1,160 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.id="mention-style",e.appendChild(document.createTextNode(".ce-mention{position:absolute;z-index:9;min-width:120px;max-height:200px;overflow-y:auto;padding:4px 0;background:#ffffff;border-radius:4px;box-shadow:0 2px 12px #38383833;font-size:14px;color:#333}.ce-mention-item{padding:6px 12px;white-space:nowrap;cursor:pointer}.ce-mention-item:hover{background:#f2f6fc}.ce-mention-empty{padding:6px 12px;white-space:nowrap;color:#999}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ var p = Object.defineProperty;
3
+ var L = (r, t, e) => t in r ? p(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
4
+ var s = (r, t, e) => (L(r, typeof t != "symbol" ? t + "" : t, e), e);
5
+ import { EDITOR_COMPONENT as x, EditorComponent as O, ElementType as C } from "@hufe921/canvas-editor";
6
+ const c = "ce-mention", g = "zhCN", u = "@", T = 5, m = {
7
+ zhCN: {
8
+ emptyText: "无匹配结果",
9
+ placeholderText: "输入以筛选"
10
+ },
11
+ en: {
12
+ emptyText: "No results",
13
+ placeholderText: "Type to filter"
14
+ }
15
+ };
16
+ class I {
17
+ constructor(t, e) {
18
+ s(this, "editor");
19
+ s(this, "defaultOptions");
20
+ s(this, "options");
21
+ s(this, "lang");
22
+ s(this, "trigger");
23
+ s(this, "container", null);
24
+ // 触发符所在元素索引(程序化打开时为当前光标索引)
25
+ s(this, "triggerIndex", -1);
26
+ // 是否由 executeMention 程序化打开(无触发符文本,选中后直接插入)
27
+ s(this, "isProgrammatic", !1);
28
+ s(this, "isOpen", !1);
29
+ s(this, "inputHandler", (t) => {
30
+ if (!this.isOpen) {
31
+ t.data === this.trigger && this.open(!1);
32
+ return;
33
+ }
34
+ if (this.isProgrammatic) {
35
+ this.updatePosition();
36
+ return;
37
+ }
38
+ this.refresh();
39
+ });
40
+ s(this, "rangeChangeHandler", (t) => {
41
+ this.isOpen && t.startIndex <= this.triggerIndex && this.close();
42
+ });
43
+ s(this, "labelMousedownHandler", (t) => {
44
+ var e, n;
45
+ (n = (e = this.options).onClick) == null || n.call(e, t.element);
46
+ });
47
+ this.editor = t, this.defaultOptions = e, this.options = this.mergeOptions(), this.lang = this.getLang(), this.trigger = this.options.trigger || u, t.eventBus.on("input", this.inputHandler), t.eventBus.on("labelMousedown", this.labelMousedownHandler);
48
+ }
49
+ mergeOptions(t) {
50
+ var e, n;
51
+ return {
52
+ ...this.defaultOptions,
53
+ ...t,
54
+ dataList: (t == null ? void 0 : t.dataList) ?? ((e = this.defaultOptions) == null ? void 0 : e.dataList) ?? [],
55
+ label: {
56
+ ...(n = this.defaultOptions) == null ? void 0 : n.label,
57
+ ...t == null ? void 0 : t.label
58
+ }
59
+ };
60
+ }
61
+ getLang(t) {
62
+ var a, o, l, h, d;
63
+ const e = (o = (a = this.editor.command).getOptions) == null ? void 0 : o.call(a).locale, n = ((t == null ? void 0 : t.locale) || ((l = this.defaultOptions) == null ? void 0 : l.locale) || e || g).toLowerCase().replace(/[-_]/g, "");
64
+ return {
65
+ ...((h = Object.entries(m).find(([f]) => f.toLowerCase() === n)) == null ? void 0 : h[1]) || m[g],
66
+ ...(d = this.defaultOptions) == null ? void 0 : d.lang,
67
+ ...t == null ? void 0 : t.lang
68
+ };
69
+ }
70
+ getDataList() {
71
+ const { dataList: t } = this.options;
72
+ return typeof t == "function" ? t() : t || [];
73
+ }
74
+ filterDataList(t) {
75
+ const e = this.options.max ?? T, n = t.toLowerCase();
76
+ return this.getDataList().filter((i) => i.name.toLowerCase().includes(n)).slice(0, e);
77
+ }
78
+ renderList(t, e) {
79
+ if (this.container) {
80
+ if (this.container.innerHTML = "", !t.length) {
81
+ const n = document.createElement("div");
82
+ n.classList.add(`${c}-empty`), n.innerText = e ? this.lang.emptyText : this.lang.placeholderText, this.container.append(n);
83
+ return;
84
+ }
85
+ t.forEach((n) => {
86
+ const i = document.createElement("div");
87
+ i.classList.add(`${c}-item`), i.innerText = n.name, i.onmousedown = (a) => {
88
+ a.preventDefault(), this.select(n);
89
+ }, this.container.append(i);
90
+ });
91
+ }
92
+ }
93
+ updatePosition() {
94
+ var n;
95
+ if (!this.container)
96
+ return;
97
+ const t = this.editor.command.getRangeContext(), e = (n = t == null ? void 0 : t.rangeRects) == null ? void 0 : n[0];
98
+ if (!e) {
99
+ this.close();
100
+ return;
101
+ }
102
+ this.container.style.left = `${e.x}px`, this.container.style.top = `${e.y + e.height + 4}px`;
103
+ }
104
+ open(t) {
105
+ const e = this.editor.command, { startIndex: n } = e.getRange();
106
+ this.triggerIndex = n, this.isProgrammatic = t, this.isOpen = !0, this.container || (this.container = document.createElement("div"), this.container.setAttribute(x, O.COMPONENT), this.container.classList.add(c)), e.getContainer().append(this.container), this.renderList(this.filterDataList(""), ""), this.updatePosition(), this.editor.eventBus.on("rangeChange", this.rangeChangeHandler);
107
+ }
108
+ close() {
109
+ var t;
110
+ this.isOpen && (this.isOpen = !1, this.editor.eventBus.off("rangeChange", this.rangeChangeHandler), (t = this.container) == null || t.remove());
111
+ }
112
+ refresh() {
113
+ var a;
114
+ const t = this.editor.command, e = t.getValue().data.main, { startIndex: n } = t.getRange();
115
+ if (((a = e[this.triggerIndex]) == null ? void 0 : a.value) !== this.trigger) {
116
+ this.close();
117
+ return;
118
+ }
119
+ if (n <= this.triggerIndex) {
120
+ this.close();
121
+ return;
122
+ }
123
+ const i = e.slice(this.triggerIndex + 1, n + 1).map((o) => o.value).join("");
124
+ this.renderList(this.filterDataList(i), i), this.updatePosition();
125
+ }
126
+ select(t) {
127
+ var n, i;
128
+ const e = this.editor.command;
129
+ if (!this.isProgrammatic) {
130
+ const { startIndex: a } = e.getRange();
131
+ e.executeSetRange(this.triggerIndex - 1, a);
132
+ }
133
+ e.executeInsertElementList([
134
+ {
135
+ type: C.LABEL,
136
+ value: `${this.trigger}${t.name}`,
137
+ labelId: t.id,
138
+ label: {
139
+ color: "#347ef2",
140
+ backgroundColor: "#f2f6fc",
141
+ borderRadius: 4,
142
+ ...this.options.label
143
+ }
144
+ }
145
+ ]), (i = (n = this.options).onSelect) == null || i.call(n, t), this.close();
146
+ }
147
+ execute(t) {
148
+ this.options = this.mergeOptions(t), this.lang = this.getLang(t), this.trigger = this.options.trigger || u, this.open(!0);
149
+ }
150
+ }
151
+ function y(r, t) {
152
+ const e = r.command, n = new I(r, t);
153
+ e.executeMention = (i) => {
154
+ n.execute(i);
155
+ };
156
+ }
157
+ export {
158
+ y as default
159
+ };
160
+ //# sourceMappingURL=mention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention.js","sources":["../../src/mention/constant/index.ts","../../src/mention/index.ts"],"sourcesContent":[null,null],"names":["PLUGIN_PREFIX","DEFAULT_LOCALE","DEFAULT_TRIGGER","DEFAULT_MAX_COUNT","PLUGIN_LANG_MAP","Mention","editor","defaultOptions","__publicField","evt","range","payload","_b","_a","options","editorLocale","currentLocale","_c","_d","key","_e","dataList","query","max","keyword","item","itemList","empty","itemDom","context","rect","isProgrammatic","command","startIndex","EDITOR_COMPONENT","EditorComponent","elementList","element","ElementType","mentionPlugin","mention"],"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="mention-style",e.appendChild(document.createTextNode(".ce-mention{position:absolute;z-index:9;min-width:120px;max-height:200px;overflow-y:auto;padding:4px 0;background:#ffffff;border-radius:4px;box-shadow:0 2px 12px #38383833;font-size:14px;color:#333}.ce-mention-item{padding:6px 12px;white-space:nowrap;cursor:pointer}.ce-mention-item:hover{background:#f2f6fc}.ce-mention-empty{padding:6px 12px;white-space:nowrap;color:#999}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ (function(r,i){typeof exports=="object"&&typeof module<"u"?module.exports=i(require("@hufe921/canvas-editor")):typeof define=="function"&&define.amd?define(["@hufe921/canvas-editor"],i):(r=typeof globalThis<"u"?globalThis:r||self,r.mention=i(r.canvasEditor))})(this,function(r){"use strict";var O=Object.defineProperty;var T=(r,i,c)=>i in r?O(r,i,{enumerable:!0,configurable:!0,writable:!0,value:c}):r[i]=c;var a=(r,i,c)=>(T(r,typeof i!="symbol"?i+"":i,c),c);const i="ce-mention",c="zhCN",d="@",g={zhCN:{emptyText:"无匹配结果",placeholderText:"输入以筛选"},en:{emptyText:"No results",placeholderText:"Type to filter"}},I="";class p{constructor(e,t){a(this,"editor");a(this,"defaultOptions");a(this,"options");a(this,"lang");a(this,"trigger");a(this,"container",null);a(this,"triggerIndex",-1);a(this,"isProgrammatic",!1);a(this,"isOpen",!1);a(this,"inputHandler",e=>{if(!this.isOpen){e.data===this.trigger&&this.open(!1);return}if(this.isProgrammatic){this.updatePosition();return}this.refresh()});a(this,"rangeChangeHandler",e=>{this.isOpen&&e.startIndex<=this.triggerIndex&&this.close()});a(this,"labelMousedownHandler",e=>{var t,n;(n=(t=this.options).onClick)==null||n.call(t,e.element)});this.editor=e,this.defaultOptions=t,this.options=this.mergeOptions(),this.lang=this.getLang(),this.trigger=this.options.trigger||d,e.eventBus.on("input",this.inputHandler),e.eventBus.on("labelMousedown",this.labelMousedownHandler)}mergeOptions(e){var t,n;return{...this.defaultOptions,...e,dataList:(e==null?void 0:e.dataList)??((t=this.defaultOptions)==null?void 0:t.dataList)??[],label:{...(n=this.defaultOptions)==null?void 0:n.label,...e==null?void 0:e.label}}}getLang(e){var o,h,u,m,f;const t=(h=(o=this.editor.command).getOptions)==null?void 0:h.call(o).locale,n=((e==null?void 0:e.locale)||((u=this.defaultOptions)==null?void 0:u.locale)||t||c).toLowerCase().replace(/[-_]/g,"");return{...((m=Object.entries(g).find(([x])=>x.toLowerCase()===n))==null?void 0:m[1])||g[c],...(f=this.defaultOptions)==null?void 0:f.lang,...e==null?void 0:e.lang}}getDataList(){const{dataList:e}=this.options;return typeof e=="function"?e():e||[]}filterDataList(e){const t=this.options.max??5,n=e.toLowerCase();return this.getDataList().filter(s=>s.name.toLowerCase().includes(n)).slice(0,t)}renderList(e,t){if(this.container){if(this.container.innerHTML="",!e.length){const n=document.createElement("div");n.classList.add(`${i}-empty`),n.innerText=t?this.lang.emptyText:this.lang.placeholderText,this.container.append(n);return}e.forEach(n=>{const s=document.createElement("div");s.classList.add(`${i}-item`),s.innerText=n.name,s.onmousedown=o=>{o.preventDefault(),this.select(n)},this.container.append(s)})}}updatePosition(){var n;if(!this.container)return;const e=this.editor.command.getRangeContext(),t=(n=e==null?void 0:e.rangeRects)==null?void 0:n[0];if(!t){this.close();return}this.container.style.left=`${t.x}px`,this.container.style.top=`${t.y+t.height+4}px`}open(e){const t=this.editor.command,{startIndex:n}=t.getRange();this.triggerIndex=n,this.isProgrammatic=e,this.isOpen=!0,this.container||(this.container=document.createElement("div"),this.container.setAttribute(r.EDITOR_COMPONENT,r.EditorComponent.COMPONENT),this.container.classList.add(i)),t.getContainer().append(this.container),this.renderList(this.filterDataList(""),""),this.updatePosition(),this.editor.eventBus.on("rangeChange",this.rangeChangeHandler)}close(){var e;this.isOpen&&(this.isOpen=!1,this.editor.eventBus.off("rangeChange",this.rangeChangeHandler),(e=this.container)==null||e.remove())}refresh(){var o;const e=this.editor.command,t=e.getValue().data.main,{startIndex:n}=e.getRange();if(((o=t[this.triggerIndex])==null?void 0:o.value)!==this.trigger){this.close();return}if(n<=this.triggerIndex){this.close();return}const s=t.slice(this.triggerIndex+1,n+1).map(h=>h.value).join("");this.renderList(this.filterDataList(s),s),this.updatePosition()}select(e){var n,s;const t=this.editor.command;if(!this.isProgrammatic){const{startIndex:o}=t.getRange();t.executeSetRange(this.triggerIndex-1,o)}t.executeInsertElementList([{type:r.ElementType.LABEL,value:`${this.trigger}${e.name}`,labelId:e.id,label:{color:"#347ef2",backgroundColor:"#f2f6fc",borderRadius:4,...this.options.label}}]),(s=(n=this.options).onSelect)==null||s.call(n,e),this.close()}execute(e){this.options=this.mergeOptions(e),this.lang=this.getLang(e),this.trigger=this.options.trigger||d,this.open(!0)}}function L(l,e){const t=l.command,n=new p(l,e);t.executeMention=s=>{n.execute(s)}}return L});
3
+ //# sourceMappingURL=mention.umd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention.umd.cjs","sources":["../../src/mention/constant/index.ts","../../src/mention/index.ts"],"sourcesContent":[null,null],"names":["PLUGIN_PREFIX","DEFAULT_LOCALE","DEFAULT_TRIGGER","PLUGIN_LANG_MAP","Mention","editor","defaultOptions","__publicField","evt","range","payload","_b","_a","options","editorLocale","currentLocale","_c","_d","key","_e","dataList","query","max","keyword","item","itemList","empty","itemDom","context","rect","isProgrammatic","command","startIndex","EDITOR_COMPONENT","EditorComponent","elementList","element","ElementType","mentionPlugin","mention"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { IMentionLang } from '../interface';
2
+ export declare const PLUGIN_PREFIX = "ce-mention";
3
+ export declare const DEFAULT_LOCALE = "zhCN";
4
+ export declare const DEFAULT_TRIGGER = "@";
5
+ export declare const DEFAULT_MAX_COUNT = 5;
6
+ export declare const PLUGIN_LANG_MAP: Record<string, IMentionLang>;
@@ -0,0 +1,9 @@
1
+ import { Editor } from '@hufe921/canvas-editor';
2
+ import type { IMentionOptions } from './interface';
3
+ import './style';
4
+ declare module '@hufe921/canvas-editor' {
5
+ interface Command {
6
+ executeMention(options?: IMentionOptions): void;
7
+ }
8
+ }
9
+ export default function mentionPlugin(editor: Editor, defaultOptions?: IMentionOptions): void;
@@ -0,0 +1,27 @@
1
+ import type { IElement } from '@hufe921/canvas-editor';
2
+ export interface IMentionItem {
3
+ id: string;
4
+ name: string;
5
+ [key: string]: any;
6
+ }
7
+ export type IMentionPadding = [number, number, number, number];
8
+ export interface IMentionLabelStyle {
9
+ color?: string;
10
+ backgroundColor?: string;
11
+ borderRadius?: number;
12
+ padding?: IMentionPadding;
13
+ }
14
+ export interface IMentionLang {
15
+ emptyText: string;
16
+ placeholderText: string;
17
+ }
18
+ export interface IMentionOptions {
19
+ trigger?: string;
20
+ dataList: IMentionItem[] | (() => IMentionItem[]);
21
+ onSelect?: (item: IMentionItem) => void;
22
+ onClick?: (element: IElement) => void;
23
+ label?: IMentionLabelStyle;
24
+ max?: number;
25
+ locale?: string;
26
+ lang?: Partial<IMentionLang>;
27
+ }
@@ -0,0 +1 @@
1
+ import './index.scss';
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@hufe921/canvas-editor-plugin-mention",
3
+ "author": "Hufe",
4
+ "license": "MIT",
5
+ "version": "0.0.1",
6
+ "description": "mention 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/mention/index.d.ts",
19
+ "main": "./dist/mention.umd.cjs",
20
+ "module": "./dist/mention.js",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/Hufe921/canvas-editor-plugin.git"
24
+ },
25
+ "keywords": [
26
+ "canvas-editor",
27
+ "mention"
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
+ }