@opentiny/fluent-editor 3.23.1 → 3.23.3
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 +3 -1
- package/es/attributors/font-style.es.js +1 -1
- package/es/attributors/font-style.es.js.map +1 -1
- package/es/config/index.es.js +15 -1
- package/es/config/index.es.js.map +1 -1
- package/es/custom-image/image.es.js +1 -1
- package/es/custom-image/image.es.js.map +1 -1
- package/es/custom-uploader.es.js +13 -2
- package/es/custom-uploader.es.js.map +1 -1
- package/es/fluent-editor.es.js +1 -0
- package/es/fluent-editor.es.js.map +1 -1
- package/es/index.es.js +15 -1
- package/es/index.es.js.map +1 -1
- package/es/mathlive/formats.es.js +3 -32
- package/es/mathlive/formats.es.js.map +1 -1
- package/es/mathlive/index.es.js +23 -6
- package/es/mathlive/index.es.js.map +1 -1
- package/es/mathlive/tooltip.es.js +5 -5
- package/es/mathlive/tooltip.es.js.map +1 -1
- package/es/table/modules/table-operation-menu.es.js +25 -15
- package/es/table/modules/table-operation-menu.es.js.map +1 -1
- package/lib/attributors/font-style.cjs.js +1 -1
- package/lib/attributors/font-style.cjs.js.map +1 -1
- package/lib/config/index.cjs.js +13 -0
- package/lib/config/index.cjs.js.map +1 -1
- package/lib/custom-image/image.cjs.js +1 -1
- package/lib/custom-image/image.cjs.js.map +1 -1
- package/lib/custom-uploader.cjs.js +13 -2
- package/lib/custom-uploader.cjs.js.map +1 -1
- package/lib/fluent-editor.cjs.js +1 -0
- package/lib/fluent-editor.cjs.js.map +1 -1
- package/lib/index.cjs.js +14 -0
- package/lib/index.cjs.js.map +1 -1
- package/lib/mathlive/formats.cjs.js +3 -32
- package/lib/mathlive/formats.cjs.js.map +1 -1
- package/lib/mathlive/index.cjs.js +22 -5
- package/lib/mathlive/index.cjs.js.map +1 -1
- package/lib/mathlive/tooltip.cjs.js +6 -6
- package/lib/mathlive/tooltip.cjs.js.map +1 -1
- package/lib/table/modules/table-operation-menu.cjs.js +25 -15
- package/lib/table/modules/table-operation-menu.cjs.js.map +1 -1
- package/package.json +1 -1
- package/style.css +3 -37
- package/types/attributors/font-style.d.ts +1 -1
- package/types/config/index.d.ts +1 -0
- package/types/config/types/editor-config.interface.d.ts +8 -1
- package/types/custom-uploader.d.ts +1 -0
- package/types/mathlive/formats.d.ts +2 -7
- package/types/mathlive/index.d.ts +5 -4
- package/types/mathlive/tooltip.d.ts +4 -2
- package/types/table/modules/table-operation-menu.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../src/mathlive/index.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../src/mathlive/index.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport MathliveBlot from './formats'\r\nimport MathliveTooltip from './tooltip'\r\n\r\nexport default class MathliveModule {\r\n tooltip: MathliveTooltip\r\n constructor(public quill: Quill) {\r\n this.tooltip = new MathliveTooltip(quill)\r\n\r\n this.quill.root.addEventListener(\r\n 'click',\r\n (e: MouseEvent) => {\r\n if (!this.quill.isEnabled()) return\r\n const path = e.composedPath() as HTMLElement[]\r\n if (!path || path.length <= 0) return\r\n\r\n const mathliveNode = path.find(node => node.tagName && node.tagName.toUpperCase() === MathliveBlot.tagName.toUpperCase() && node.classList.contains(MathliveBlot.className))\r\n const mathliveBlot = Quill.find(mathliveNode) as MathliveBlot | null\r\n if (mathliveBlot) {\r\n const { value, mode } = MathliveBlot.value(mathliveBlot.domNode)\r\n if (mode === 'dialog') {\r\n this.createDialog(value)\r\n }\r\n }\r\n },\r\n true,\r\n )\r\n }\r\n\r\n createDialog(value?: string) {\r\n this.tooltip.edit(value)\r\n }\r\n}\r\n"],"names":["MathliveTooltip","MathliveBlot"],"mappings":";;;;;AAIA,MAAqB,eAAe;AAAA,EAElC,YAAmB,OAAc;AAAd,SAAA,QAAA;AACZ,SAAA,UAAU,IAAIA,QAAA,QAAgB,KAAK;AAExC,SAAK,MAAM,KAAK;AAAA,MACd;AAAA,MACA,CAAC,MAAkB;AACjB,YAAI,CAAC,KAAK,MAAM,UAAa,EAAA;AACvB,cAAA,OAAO,EAAE;AACf,YAAI,CAAC,QAAQ,KAAK,UAAU,EAAG;AAE/B,cAAM,eAAe,KAAK,KAAK,UAAQ,KAAK,WAAW,KAAK,QAAQ,kBAAkBC,gBAAa,QAAQ,iBAAiB,KAAK,UAAU,SAASA,QAAAA,QAAa,SAAS,CAAC;AACrK,cAAA,eAAe,MAAM,KAAK,YAAY;AAC5C,YAAI,cAAc;AAChB,gBAAM,EAAE,OAAO,SAASA,QAAa,QAAA,MAAM,aAAa,OAAO;AAC/D,cAAI,SAAS,UAAU;AACrB,iBAAK,aAAa,KAAK;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,aAAa,OAAgB;AACtB,SAAA,QAAQ,KAAK,KAAK;AAAA,EACzB;AACF;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const Tooltip =
|
|
3
|
+
const Quill = require("quill");
|
|
4
|
+
const Delta = Quill.import("delta");
|
|
5
|
+
const Tooltip = Quill.import("ui/tooltip");
|
|
6
6
|
const _MathliveTooltip = class _MathliveTooltip extends Tooltip {
|
|
7
7
|
constructor(quill, boundsContainer) {
|
|
8
8
|
super(quill, boundsContainer);
|
|
@@ -52,9 +52,9 @@ const _MathliveTooltip = class _MathliveTooltip extends Tooltip {
|
|
|
52
52
|
const inputValue = this.mathliveDom.value;
|
|
53
53
|
if (!inputValue) return;
|
|
54
54
|
const index = range ? range.index : this.quill.getLength() - 1;
|
|
55
|
-
const delta = new
|
|
56
|
-
this.quill.updateContents(delta,
|
|
57
|
-
this.quill.setSelection(index + 1,
|
|
55
|
+
const delta = new Delta().retain(index).delete(this.editValue ? 1 : (range == null ? void 0 : range.length) || 0).insert({ mathlive: { value: inputValue, mode: "dialog" } });
|
|
56
|
+
this.quill.updateContents(delta, Quill.sources.USER);
|
|
57
|
+
this.quill.setSelection(index + 1, Quill.sources.SILENT);
|
|
58
58
|
this.hide();
|
|
59
59
|
}
|
|
60
60
|
position(reference) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.cjs.js","sources":["../../../src/mathlive/tooltip.ts"],"sourcesContent":["import type { MathfieldElement } from 'mathlive'\r\nimport type
|
|
1
|
+
{"version":3,"file":"tooltip.cjs.js","sources":["../../../src/mathlive/tooltip.ts"],"sourcesContent":["import type { MathfieldElement } from 'mathlive'\r\nimport type { Bounds } from 'quill/core/selection'\r\nimport type TypeTooltip from 'quill/ui/tooltip'\r\nimport Quill from 'quill'\r\n\r\nconst Delta = Quill.import('delta')\r\nconst Tooltip = Quill.import('ui/tooltip') as typeof TypeTooltip\r\nexport default class MathliveTooltip extends Tooltip {\r\n static TEMPLATE = ``\r\n\r\n mathliveDom: MathfieldElement\r\n editValue?: string\r\n\r\n constructor(quill: Quill, boundsContainer?: HTMLElement) {\r\n super(quill, boundsContainer)\r\n this.mathliveDom = document.createElement('math-field') as MathfieldElement\r\n this.mathliveDom.classList.add('ql-math-field')\r\n this.root.appendChild(this.mathliveDom)\r\n this.root.classList.add('math-field-tooltip')\r\n this.listen()\r\n }\r\n\r\n listen() {\r\n this.mathliveDom.addEventListener('blur', (event) => {\r\n this.hide()\r\n })\r\n this.root.addEventListener('keydown', (event) => {\r\n if (event.key === 'Enter') {\r\n event.preventDefault()\r\n this.save()\r\n }\r\n else if (event.key === 'Escape') {\r\n event.preventDefault()\r\n this.cancel()\r\n }\r\n })\r\n }\r\n\r\n cancel() {\r\n this.hide()\r\n this.restoreFocus()\r\n }\r\n\r\n edit(value?: string) {\r\n this.editValue = value\r\n this.root.classList.remove('ql-hidden')\r\n this.root.classList.add('ql-editing')\r\n this.mathliveDom.setValue(value || '')\r\n const range = this.quill.getSelection()\r\n const bounds = range ? this.quill.getBounds(range) : null\r\n if (bounds != null) {\r\n this.position(bounds)\r\n }\r\n this.show()\r\n this.mathliveDom.focus()\r\n }\r\n\r\n restoreFocus() {\r\n this.mathliveDom.blur()\r\n this.quill.focus({ preventScroll: true })\r\n }\r\n\r\n save() {\r\n const range = this.quill.getSelection(true)\r\n const inputValue = this.mathliveDom.value\r\n if (!inputValue) return\r\n const index = range ? range.index : this.quill.getLength() - 1\r\n const delta = new Delta()\r\n .retain(index)\r\n .delete(this.editValue ? 1 : range?.length || 0)\r\n .insert({ mathlive: { value: inputValue, mode: 'dialog' } })\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(index + 1, Quill.sources.SILENT)\r\n this.hide()\r\n }\r\n\r\n position(reference: Bounds) {\r\n const adjustedReference = { ...reference }\r\n adjustedReference.left = reference.left + this.root.offsetWidth / 2 - reference.width / 2\r\n return super.position(adjustedReference)\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAKA,MAAM,QAAQ,MAAM,OAAO,OAAO;AAClC,MAAM,UAAU,MAAM,OAAO,YAAY;AACzC,MAAqB,mBAArB,MAAqB,yBAAwB,QAAQ;AAAA,EAMnD,YAAY,OAAc,iBAA+B;AACvD,UAAM,OAAO,eAAe;AACvB,SAAA,cAAc,SAAS,cAAc,YAAY;AACjD,SAAA,YAAY,UAAU,IAAI,eAAe;AACzC,SAAA,KAAK,YAAY,KAAK,WAAW;AACjC,SAAA,KAAK,UAAU,IAAI,oBAAoB;AAC5C,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,SAAS;AACP,SAAK,YAAY,iBAAiB,QAAQ,CAAC,UAAU;AACnD,WAAK,KAAK;AAAA,IAAA,CACX;AACD,SAAK,KAAK,iBAAiB,WAAW,CAAC,UAAU;AAC3C,UAAA,MAAM,QAAQ,SAAS;AACzB,cAAM,eAAe;AACrB,aAAK,KAAK;AAAA,MAAA,WAEH,MAAM,QAAQ,UAAU;AAC/B,cAAM,eAAe;AACrB,aAAK,OAAO;AAAA,MACd;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAEA,SAAS;AACP,SAAK,KAAK;AACV,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,KAAK,OAAgB;AACnB,SAAK,YAAY;AACZ,SAAA,KAAK,UAAU,OAAO,WAAW;AACjC,SAAA,KAAK,UAAU,IAAI,YAAY;AAC/B,SAAA,YAAY,SAAS,SAAS,EAAE;AAC/B,UAAA,QAAQ,KAAK,MAAM,aAAa;AACtC,UAAM,SAAS,QAAQ,KAAK,MAAM,UAAU,KAAK,IAAI;AACrD,QAAI,UAAU,MAAM;AAClB,WAAK,SAAS,MAAM;AAAA,IACtB;AACA,SAAK,KAAK;AACV,SAAK,YAAY;EACnB;AAAA,EAEA,eAAe;AACb,SAAK,YAAY;AACjB,SAAK,MAAM,MAAM,EAAE,eAAe,KAAM,CAAA;AAAA,EAC1C;AAAA,EAEA,OAAO;AACL,UAAM,QAAQ,KAAK,MAAM,aAAa,IAAI;AACpC,UAAA,aAAa,KAAK,YAAY;AACpC,QAAI,CAAC,WAAY;AACjB,UAAM,QAAQ,QAAQ,MAAM,QAAQ,KAAK,MAAM,UAAc,IAAA;AACvD,UAAA,QAAQ,IAAI,MAAA,EACf,OAAO,KAAK,EACZ,OAAO,KAAK,YAAY,KAAI,+BAAO,WAAU,CAAC,EAC9C,OAAO,EAAE,UAAU,EAAE,OAAO,YAAY,MAAM,SAAS,EAAA,CAAG;AAC7D,SAAK,MAAM,eAAe,OAAO,MAAM,QAAQ,IAAI;AACnD,SAAK,MAAM,aAAa,QAAQ,GAAG,MAAM,QAAQ,MAAM;AACvD,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS,WAAmB;AACpB,UAAA,oBAAoB,EAAE,GAAG;AACb,sBAAA,OAAO,UAAU,OAAO,KAAK,KAAK,cAAc,IAAI,UAAU,QAAQ;AACjF,WAAA,MAAM,SAAS,iBAAiB;AAAA,EACzC;AACF;AAzEE,iBAAO,WAAW;AADpB,IAAqB,kBAArB;;"}
|
|
@@ -45,21 +45,21 @@ class TableOperationMenu {
|
|
|
45
45
|
},
|
|
46
46
|
copyTable: {
|
|
47
47
|
text: langText["copy-table"],
|
|
48
|
-
handler() {
|
|
48
|
+
async handler() {
|
|
49
49
|
this.tableColumnTool.destroy();
|
|
50
50
|
this.tableScrollBar.destroy();
|
|
51
51
|
this.tableSelection.clearSelection();
|
|
52
52
|
const dom = this.table.cloneNode(true);
|
|
53
53
|
const trArr = dom.querySelectorAll("tr[data-row]");
|
|
54
54
|
trArr.forEach((tr) => tr.removeAttribute("data-row"));
|
|
55
|
-
dom.style.position = "fixed";
|
|
56
|
-
dom.style.top = 0;
|
|
57
|
-
dom.style.left = 0;
|
|
58
|
-
dom.style.clip = "rect(0,0,0,0)";
|
|
59
|
-
document.body.appendChild(dom);
|
|
60
55
|
this.setCopyRange(dom);
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
const blob = new Blob([dom.outerHTML], { type: "text/html" });
|
|
57
|
+
const clipboardItem = new ClipboardItem({ "text/html": blob });
|
|
58
|
+
try {
|
|
59
|
+
await navigator.clipboard.write([clipboardItem]);
|
|
60
|
+
} catch (_e) {
|
|
61
|
+
throw new Error("Failed to write to clipboard.");
|
|
62
|
+
}
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
cutCells: {
|
|
@@ -271,15 +271,19 @@ class TableOperationMenu {
|
|
|
271
271
|
"left": `${leftPos}px`,
|
|
272
272
|
"top": `${topPos}px`,
|
|
273
273
|
"min-height": `${tableConfig.MENU_MIN_HEIGHT}px`,
|
|
274
|
-
"
|
|
274
|
+
"max-height": `${winHeight - topPos}px`,
|
|
275
|
+
"width": `${tableConfig.MENU_WIDTH}px`,
|
|
276
|
+
"overflow-y": "auto"
|
|
275
277
|
};
|
|
276
|
-
if (menuHeight + top > winHeight
|
|
278
|
+
if (menuHeight + top > winHeight || topPos > winHeight / 2) {
|
|
277
279
|
delete cssContent.top;
|
|
280
|
+
cssContent["max-height"] = `${winHeight - 20}px`;
|
|
278
281
|
cssContent.bottom = "10px";
|
|
279
282
|
}
|
|
280
283
|
this.domNode = document.createElement("div");
|
|
281
284
|
this.domNode.classList.add("qlbt-operation-menu");
|
|
282
285
|
index.css(this.domNode, cssContent);
|
|
286
|
+
const fragment = document.createDocumentFragment();
|
|
283
287
|
for (const name in this.menuItems) {
|
|
284
288
|
if (this.menuItems[name]) {
|
|
285
289
|
const item = { ...this.DEFAULT_MENU[name], ...this.menuItems[name] };
|
|
@@ -289,9 +293,10 @@ class TableOperationMenu {
|
|
|
289
293
|
} else {
|
|
290
294
|
dom.addEventListener("mouseup", item.handler.bind(this), false);
|
|
291
295
|
}
|
|
292
|
-
|
|
296
|
+
fragment.appendChild(dom);
|
|
293
297
|
}
|
|
294
298
|
}
|
|
299
|
+
this.domNode.appendChild(fragment);
|
|
295
300
|
if (this.options.color && this.options.color !== false) {
|
|
296
301
|
this.domNode.appendChild(dividingCreator());
|
|
297
302
|
this.domNode.appendChild(subTitleCreator(this.colorSubTitle));
|
|
@@ -342,18 +347,23 @@ class TableOperationMenu {
|
|
|
342
347
|
menuItemCreator({ text }) {
|
|
343
348
|
const node = document.createElement("div");
|
|
344
349
|
node.classList.add("qlbt-operation-menu-item");
|
|
350
|
+
node.style.height = `${tableConfig.MENU_ITEM_HEIGHT}px`;
|
|
345
351
|
node.textContent = text;
|
|
346
352
|
return node;
|
|
347
353
|
}
|
|
348
|
-
onCopy(operation) {
|
|
354
|
+
async onCopy(operation) {
|
|
349
355
|
const { selectedTds } = this.tableSelection;
|
|
350
356
|
const virtualTable = this.createVirtualTable(selectedTds, operation);
|
|
351
|
-
document.body.appendChild(virtualTable);
|
|
352
357
|
this.setCopyRange(virtualTable);
|
|
353
358
|
this.tableSelection.preSelectedTable = virtualTable;
|
|
354
359
|
this.tableSelection.preSelectedTds = selectedTds;
|
|
355
|
-
|
|
356
|
-
|
|
360
|
+
const blob = new Blob([this.tableSelection.preSelectedTable.outerHTML], { type: "text/html" });
|
|
361
|
+
const clipboardItem = new ClipboardItem({ "text/html": blob });
|
|
362
|
+
try {
|
|
363
|
+
await navigator.clipboard.write([clipboardItem]);
|
|
364
|
+
} catch (_e) {
|
|
365
|
+
throw new Error("Failed to write to clipboard.");
|
|
366
|
+
}
|
|
357
367
|
if (operation === "cut") {
|
|
358
368
|
const tableContainer = Quill.find(this.table);
|
|
359
369
|
tableContainer.emptyCells(selectedTds);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-operation-menu.cjs.js","sources":["../../../../src/table/modules/table-operation-menu.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { CHANGE_LANGUAGE_EVENT } from '../../config'\r\nimport {\r\n ERROR_LIMIT,\r\n MENU_ITEM_HEIGHT,\r\n MENU_MIN_HEIGHT,\r\n MENU_WIDTH,\r\n OPERATE_MENU_COLORPICKER_CLASS,\r\n OPERATE_MENU_COLORPICKER_ITEM_CLASS,\r\n OPERATE_MENU_DIVIDING_CLASS,\r\n OPERATE_MENU_ITEM_CLASS,\r\n OPERATE_MENU_SUBTITLE_CLASS,\r\n} from '../table-config'\r\nimport { arrayFrom, css, elementRemove, getRelativeRect } from '../utils'\r\n\r\nconst DEFAULT_CELL_COLORS = ['white', 'red', 'yellow', 'blue']\r\nconst NODE_EVENT_MAP = new WeakMap()\r\nexport default class TableOperationMenu {\r\n tableSelection: any\r\n table: any\r\n quill: any\r\n options: any\r\n menuItems: any\r\n tableColumnTool: any\r\n tableScrollBar: any\r\n boundary: any\r\n selectedTds: any\r\n destroyHandler: any\r\n columnToolCells: any\r\n colorSubTitle: any\r\n cellColors: any\r\n domNode: any\r\n DEFAULT_COLOR_SUBTITLE: string\r\n DEFAULT_MENU: Record<string, {\r\n text: string\r\n handler: () => void\r\n }>\r\n\r\n constructor(params, quill, options) {\r\n const betterTableModule = quill.getModule('better-table')\r\n this.tableSelection = betterTableModule.tableSelection\r\n this.table = params.table\r\n this.quill = quill\r\n this.options = options\r\n this.setDefaultMenu()\r\n this.menuItems = { ...this.DEFAULT_MENU, ...options.items }\r\n this.tableColumnTool = betterTableModule.columnTool\r\n // this.tableRowTool = betterTableModule.rowTool\r\n this.tableScrollBar = betterTableModule.tableScrollBar\r\n this.boundary = this.tableSelection.boundary\r\n this.selectedTds = this.tableSelection.selectedTds\r\n this.destroyHandler = this.destroy.bind(this)\r\n this.columnToolCells = this.tableColumnTool.colToolCells()\r\n this.DEFAULT_COLOR_SUBTITLE = this.quill.options.langText['sub-title-bg-color']\r\n this.colorSubTitle\r\n = options.color && options.color.text\r\n ? options.color.text\r\n : this.DEFAULT_COLOR_SUBTITLE\r\n this.cellColors\r\n = options.color && options.color.colors\r\n ? options.color.colors\r\n : DEFAULT_CELL_COLORS\r\n\r\n this.menuInitial(params)\r\n this.mount()\r\n document.addEventListener('click', this.destroyHandler, false)\r\n this.quill.on(CHANGE_LANGUAGE_EVENT, () => {\r\n this.destroy()\r\n this.DEFAULT_COLOR_SUBTITLE = this.quill.options.langText['sub-title-bg-color']\r\n this.setDefaultMenu()\r\n })\r\n }\r\n\r\n setDefaultMenu() {\r\n const langText = this.quill.options.langText\r\n this.DEFAULT_MENU = {\r\n copyCells: {\r\n text: langText['copy-cells'],\r\n handler() {\r\n this.onCopy('copy')\r\n },\r\n },\r\n copyTable: {\r\n text: langText['copy-table'],\r\n handler() {\r\n this.tableColumnTool.destroy()\r\n this.tableScrollBar.destroy()\r\n this.tableSelection.clearSelection()\r\n const dom = this.table.cloneNode(true)\r\n const trArr = dom.querySelectorAll('tr[data-row]')\r\n trArr.forEach(tr => tr.removeAttribute('data-row'))\r\n dom.style.position = 'fixed'\r\n dom.style.top = 0\r\n dom.style.left = 0\r\n dom.style.clip = 'rect(0,0,0,0)'\r\n document.body.appendChild(dom)\r\n this.setCopyRange(dom)\r\n document.execCommand('copy')\r\n dom.remove()\r\n },\r\n },\r\n cutCells: {\r\n text: langText['cut-cells'],\r\n handler() {\r\n this.onCopy('cut')\r\n },\r\n },\r\n emptyCells: {\r\n text: langText['empty-cells'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const { selectedTds } = this.tableSelection\r\n tableContainer.emptyCells(selectedTds)\r\n },\r\n },\r\n insertColumnRight: {\r\n text: langText['insert-column-right'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndex = getColToolCellIndexByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return Math.abs(cellRect.x + cellRect.width - boundary.x1) <= ERROR_LIMIT\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, true, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // fix: the scroll bar will go to the top when insert row/column to the table\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(newColumn[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n insertColumnLeft: {\r\n text: langText['insert-column-left'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndex = getColToolCellIndexByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return Math.abs(cellRect.x - boundary.x) <= ERROR_LIMIT\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, false, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(newColumn[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n insertRowUp: {\r\n text: langText['insert-row-up'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const affectedCells = tableContainer.insertRow(this.boundary, false, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(affectedCells[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\r\n },\r\n },\r\n insertRowDown: {\r\n text: langText['insert-row-down'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const affectedCells = tableContainer.insertRow(this.boundary, true, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(affectedCells[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\r\n },\r\n },\r\n mergeCells: {\r\n text: langText['merge-cells'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n // compute merged Cell rowspan, equal to length of selected rows\r\n const rowspan = tableContainer.rows().reduce((sum, row) => {\r\n const rowRect = getRelativeRect(row.domNode.getBoundingClientRect(), this.quill.root.parentNode)\r\n if (\r\n rowRect.y > this.boundary.y - ERROR_LIMIT\r\n && rowRect.y + rowRect.height < this.boundary.y + this.boundary.height + ERROR_LIMIT\r\n ) {\r\n sum += 1\r\n }\r\n return sum\r\n }, 0)\r\n\r\n // compute merged cell colspan, equal to length of selected cols\r\n const colspan = this.columnToolCells.reduce((sum, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), this.quill.root.parentNode)\r\n if (\r\n cellRect.x > this.boundary.x - ERROR_LIMIT\r\n && cellRect.x + cellRect.width < this.boundary.x + this.boundary.width + ERROR_LIMIT\r\n ) {\r\n sum += 1\r\n }\r\n return sum\r\n }, 0)\r\n\r\n const mergedCell = tableContainer.mergeCells(\r\n this.boundary,\r\n this.selectedTds,\r\n rowspan,\r\n colspan,\r\n this.quill.root.parentNode,\r\n )\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.setSelection(\r\n mergedCell.domNode.getBoundingClientRect(),\r\n mergedCell.domNode.getBoundingClientRect(),\r\n )\r\n },\r\n },\r\n unmergeCells: {\r\n text: langText['unmerge-cells'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n tableContainer.unmergeCells(this.selectedTds, this.quill.root.parentNode)\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n },\r\n },\r\n deleteColumn: {\r\n text: langText['delete-column'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndexes = getColToolCellIndexesByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return cellRect.x + ERROR_LIMIT > boundary.x && cellRect.x + cellRect.width - ERROR_LIMIT < boundary.x1\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const isDeleteTable = tableContainer.deleteColumns(this.boundary, colIndexes, this.quill.root.parentNode)\r\n if (!isDeleteTable) {\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n }\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n deleteRow: {\r\n text: langText['delete-row'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const isDeleteTable = tableContainer.deleteRow(this.boundary, this.quill.root.parentNode)\r\n if (!isDeleteTable) {\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n }\r\n },\r\n },\r\n deleteTable: {\r\n text: langText['delete-table'],\r\n handler() {\r\n const betterTableModule = this.quill.getModule('better-table')\r\n const tableContainer = Quill.find(this.table)\r\n betterTableModule.hideTableTools()\r\n tableContainer.remove()\r\n this.quill.update(Quill.sources.USER)\r\n // fix: 右键菜单删除表格后编辑器失焦\r\n this.quill.focus()\r\n },\r\n },\r\n }\r\n }\r\n\r\n mount() {\r\n this.quill.root.parentNode.appendChild(this.domNode)\r\n }\r\n\r\n destroy() {\r\n const menuItems = arrayFrom(\r\n this.domNode.querySelectorAll(`.${OPERATE_MENU_ITEM_CLASS}`),\r\n )\r\n const colorPickerItems = arrayFrom(\r\n this.domNode.querySelectorAll(`.${OPERATE_MENU_COLORPICKER_ITEM_CLASS}`),\r\n )\r\n const nodes = menuItems.concat(colorPickerItems)\r\n\r\n nodes.forEach((node) => {\r\n if (NODE_EVENT_MAP.has(node)) {\r\n const unregister = NODE_EVENT_MAP.get(node)\r\n\r\n if (unregister && typeof unregister === 'function') {\r\n unregister()\r\n }\r\n }\r\n })\r\n\r\n elementRemove(this.domNode)\r\n document.removeEventListener('mousedown', this.destroyHandler, false)\r\n\r\n return null\r\n }\r\n\r\n menuInitial({ cell, left, top }) {\r\n const rowspan = cell.getAttribute('rowspan')\r\n const colspan = cell.getAttribute('colspan')\r\n const winHeight = window.innerHeight || Math.max(document.documentElement.clientHeight, document.body.clientHeight)\r\n const num = Object.keys(this.menuItems) || []\r\n const menuHeight = MENU_ITEM_HEIGHT * num.length || MENU_MIN_HEIGHT\r\n const transformOffset = checkAndGetViewPointChange(this.quill.root.parentNode, left, top)\r\n const leftPos = left - transformOffset.offsetX\r\n const topPos = top - transformOffset.offsetY\r\n const cssContent = {\r\n 'left': `${leftPos}px`,\r\n 'top': `${topPos}px`,\r\n 'min-height': `${MENU_MIN_HEIGHT}px`,\r\n 'width': `${MENU_WIDTH}px`,\r\n }\r\n\r\n if (menuHeight + top > winHeight && menuHeight < winHeight) {\r\n delete cssContent.top\r\n cssContent.bottom = '10px'\r\n }\r\n\r\n this.domNode = document.createElement('div')\r\n this.domNode.classList.add('qlbt-operation-menu')\r\n css(this.domNode, cssContent)\r\n\r\n for (const name in this.menuItems) {\r\n if (this.menuItems[name]) {\r\n const item = { ...this.DEFAULT_MENU[name], ...this.menuItems[name] }\r\n const dom = this.menuItemCreator(item)\r\n if (\r\n (name === 'mergeCells' && this.tableSelection.selectedTds.length === 1)\r\n || (name === 'unmergeCells' && rowspan === 1 && colspan === 1)\r\n ) {\r\n dom.classList.add('qlbt-operation-menu-disabled')\r\n }\r\n else {\r\n dom.addEventListener('mouseup', item.handler.bind(this), false)\r\n }\r\n this.domNode.appendChild(dom)\r\n }\r\n }\r\n\r\n // if colors option is false, disabled bg color\r\n if (this.options.color && this.options.color !== false) {\r\n this.domNode.appendChild(dividingCreator())\r\n this.domNode.appendChild(subTitleCreator(this.colorSubTitle))\r\n this.domNode.appendChild(this.colorsItemCreator(this.cellColors))\r\n }\r\n\r\n // create dividing line\r\n function dividingCreator() {\r\n const dividing = document.createElement('div')\r\n dividing.classList.add(OPERATE_MENU_DIVIDING_CLASS)\r\n return dividing\r\n }\r\n\r\n // create subtitle for menu\r\n function subTitleCreator(title) {\r\n const subTitle = document.createElement('div')\r\n subTitle.classList.add(OPERATE_MENU_SUBTITLE_CLASS)\r\n subTitle.textContent = title\r\n return subTitle\r\n }\r\n }\r\n\r\n colorsItemCreator(colors) {\r\n const self = this\r\n const node = document.createElement('div')\r\n node.classList.add(OPERATE_MENU_COLORPICKER_CLASS)\r\n\r\n colors.forEach((color) => {\r\n const colorBox = colorBoxCreator(color)\r\n node.appendChild(colorBox)\r\n })\r\n\r\n function colorBoxCreator(color) {\r\n const box = document.createElement('div')\r\n box.classList.add(OPERATE_MENU_COLORPICKER_ITEM_CLASS)\r\n box.setAttribute('data-color', color)\r\n box.style.backgroundColor = color\r\n\r\n const clickHandler = function () {\r\n const selectedTds = self.tableSelection.selectedTds\r\n if (selectedTds && selectedTds.length > 0) {\r\n selectedTds.forEach((tableCell) => {\r\n tableCell.domNode.children[0].setAttribute('data-parent-bg', color)\r\n tableCell.format('cell-bg', color)\r\n })\r\n }\r\n }\r\n\r\n box.addEventListener('click', clickHandler, false)\r\n\r\n NODE_EVENT_MAP.set(box, () => {\r\n box.removeEventListener('click', clickHandler, false)\r\n })\r\n\r\n return box\r\n }\r\n\r\n return node\r\n }\r\n\r\n menuItemCreator({ text }) {\r\n const node = document.createElement('div')\r\n node.classList.add('qlbt-operation-menu-item')\r\n node.textContent = text\r\n // node.addEventListener('click', handler.bind(this), false)\r\n return node\r\n }\r\n\r\n onCopy(operation) {\r\n const { selectedTds } = this.tableSelection\r\n const virtualTable = this.createVirtualTable(selectedTds, operation)\r\n document.body.appendChild(virtualTable)\r\n this.setCopyRange(virtualTable)\r\n this.tableSelection.preSelectedTable = virtualTable\r\n this.tableSelection.preSelectedTds = selectedTds\r\n document.execCommand('copy')\r\n virtualTable.remove()\r\n if (operation === 'cut') {\r\n const tableContainer = Quill.find(this.table)\r\n tableContainer.emptyCells(selectedTds)\r\n }\r\n }\r\n\r\n createVirtualTable(selectedTds, _operation) {\r\n const virtualTable: any = document.createElement('table')\r\n virtualTable.style.position = 'fixed'\r\n virtualTable.style.top = 0\r\n virtualTable.style.left = 0\r\n virtualTable.style.clip = 'rect(0,0,0,0)'\r\n let preParentSign = ''\r\n let virtualTr = null\r\n selectedTds.forEach((selectedCell) => {\r\n const { domNode, parent } = selectedCell\r\n const currentParentSign = parent.domNode.getAttribute('data-row')\r\n const rowspan = domNode.firstChild.dataset.rowspan\r\n const colspan = domNode.firstChild.dataset.colspan\r\n const row = domNode.firstChild.dataset.row\r\n const cell = domNode.firstChild.dataset.cell\r\n\r\n selectedCell.dataCell = cell\r\n selectedCell.dataRow = row\r\n selectedCell.dataColSpan = colspan\r\n selectedCell.dataRowSpan = rowspan\r\n\r\n if (currentParentSign !== preParentSign) {\r\n if (preParentSign !== '') {\r\n virtualTable.appendChild(virtualTr)\r\n }\r\n virtualTr = document.createElement('tr')\r\n preParentSign = currentParentSign\r\n }\r\n\r\n const domNodeWidth = domNode.offsetWidth\r\n const cloneNode = domNode.cloneNode(true)\r\n cloneNode.setAttribute('width', domNodeWidth)\r\n\r\n virtualTr.appendChild(cloneNode)\r\n })\r\n virtualTable.appendChild(virtualTr)\r\n return virtualTable\r\n }\r\n\r\n setCopyRange(selectedNodes) {\r\n const range = document.createRange()\r\n const windowSelectionRange = window.getSelection()\r\n range.selectNodeContents(selectedNodes)\r\n windowSelectionRange.removeAllRanges()\r\n windowSelectionRange.addRange(range)\r\n }\r\n\r\n groupTableCell(selectedTds) {\r\n const rowGroup = []\r\n let dataRow = ''\r\n let preDataRow = ''\r\n let index = 0\r\n selectedTds.forEach((tableCell) => {\r\n dataRow = tableCell.parent.domNode.getAttribute('data-row')\r\n\r\n if (dataRow !== preDataRow) {\r\n if (preDataRow !== '') {\r\n index++\r\n }\r\n rowGroup[index] = []\r\n preDataRow = dataRow\r\n }\r\n\r\n rowGroup[index].push(tableCell)\r\n })\r\n return rowGroup\r\n }\r\n}\r\n\r\nfunction getColToolCellIndexByBoundary(cells, boundary, conditionFn, container) {\r\n return cells.reduce((findIndex, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\r\n if (conditionFn(cellRect, boundary)) {\r\n findIndex = cells.indexOf(cell)\r\n }\r\n return findIndex\r\n }, false)\r\n}\r\n\r\nfunction getColToolCellIndexesByBoundary(cells, boundary, conditionFn, container) {\r\n return cells.reduce((findIndexes, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\r\n if (conditionFn(cellRect, boundary)) {\r\n findIndexes.push(cells.indexOf(cell))\r\n }\r\n return findIndexes\r\n }, [])\r\n}\r\n\r\nfunction checkAndGetViewPointChange(parentContainer: HTMLElement, left: number, top: number) {\r\n if (!parentContainer) {\r\n return {\r\n offsetX: 0,\r\n offsetY: 0,\r\n }\r\n }\r\n // 模拟一个元素测预测位置和最终位置是否符合,如果不符合则是有transform等造成的偏移\r\n const testEl = document.createElement('div')\r\n css(testEl, {\r\n opacity: '0',\r\n position: 'fixed',\r\n left: `${left}px`,\r\n top: `${top}px`,\r\n width: '1px',\r\n height: '1px',\r\n zIndex: '-999999',\r\n })\r\n parentContainer.appendChild(testEl)\r\n const testElPosition = testEl.getBoundingClientRect()\r\n parentContainer.removeChild(testEl)\r\n return {\r\n offsetX: testElPosition.left - left,\r\n offsetY: testElPosition.top - top,\r\n }\r\n}\r\n"],"names":["CHANGE_LANGUAGE_EVENT","ERROR_LIMIT","getRelativeRect","arrayFrom","OPERATE_MENU_ITEM_CLASS","OPERATE_MENU_COLORPICKER_ITEM_CLASS","elementRemove","MENU_ITEM_HEIGHT","MENU_MIN_HEIGHT","MENU_WIDTH","css","OPERATE_MENU_DIVIDING_CLASS","OPERATE_MENU_SUBTITLE_CLASS","OPERATE_MENU_COLORPICKER_CLASS","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-operation-menu.cjs.js","sources":["../../../../src/table/modules/table-operation-menu.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { CHANGE_LANGUAGE_EVENT } from '../../config'\r\nimport {\r\n ERROR_LIMIT,\r\n MENU_ITEM_HEIGHT,\r\n MENU_MIN_HEIGHT,\r\n MENU_WIDTH,\r\n OPERATE_MENU_COLORPICKER_CLASS,\r\n OPERATE_MENU_COLORPICKER_ITEM_CLASS,\r\n OPERATE_MENU_DIVIDING_CLASS,\r\n OPERATE_MENU_ITEM_CLASS,\r\n OPERATE_MENU_SUBTITLE_CLASS,\r\n} from '../table-config'\r\nimport { arrayFrom, css, elementRemove, getRelativeRect } from '../utils'\r\n\r\nconst DEFAULT_CELL_COLORS = ['white', 'red', 'yellow', 'blue']\r\nconst NODE_EVENT_MAP = new WeakMap()\r\nexport default class TableOperationMenu {\r\n tableSelection: any\r\n table: any\r\n quill: any\r\n options: any\r\n menuItems: any\r\n tableColumnTool: any\r\n tableScrollBar: any\r\n boundary: any\r\n selectedTds: any\r\n destroyHandler: any\r\n columnToolCells: any\r\n colorSubTitle: any\r\n cellColors: any\r\n domNode: any\r\n DEFAULT_COLOR_SUBTITLE: string\r\n DEFAULT_MENU: Record<string, {\r\n text: string\r\n handler: () => void\r\n }>\r\n\r\n constructor(params, quill, options) {\r\n const betterTableModule = quill.getModule('better-table')\r\n this.tableSelection = betterTableModule.tableSelection\r\n this.table = params.table\r\n this.quill = quill\r\n this.options = options\r\n this.setDefaultMenu()\r\n this.menuItems = { ...this.DEFAULT_MENU, ...options.items }\r\n this.tableColumnTool = betterTableModule.columnTool\r\n // this.tableRowTool = betterTableModule.rowTool\r\n this.tableScrollBar = betterTableModule.tableScrollBar\r\n this.boundary = this.tableSelection.boundary\r\n this.selectedTds = this.tableSelection.selectedTds\r\n this.destroyHandler = this.destroy.bind(this)\r\n this.columnToolCells = this.tableColumnTool.colToolCells()\r\n this.DEFAULT_COLOR_SUBTITLE = this.quill.options.langText['sub-title-bg-color']\r\n this.colorSubTitle\r\n = options.color && options.color.text\r\n ? options.color.text\r\n : this.DEFAULT_COLOR_SUBTITLE\r\n this.cellColors\r\n = options.color && options.color.colors\r\n ? options.color.colors\r\n : DEFAULT_CELL_COLORS\r\n\r\n this.menuInitial(params)\r\n this.mount()\r\n document.addEventListener('click', this.destroyHandler, false)\r\n this.quill.on(CHANGE_LANGUAGE_EVENT, () => {\r\n this.destroy()\r\n this.DEFAULT_COLOR_SUBTITLE = this.quill.options.langText['sub-title-bg-color']\r\n this.setDefaultMenu()\r\n })\r\n }\r\n\r\n setDefaultMenu() {\r\n const langText = this.quill.options.langText\r\n this.DEFAULT_MENU = {\r\n copyCells: {\r\n text: langText['copy-cells'],\r\n handler() {\r\n this.onCopy('copy')\r\n },\r\n },\r\n copyTable: {\r\n text: langText['copy-table'],\r\n async handler() {\r\n this.tableColumnTool.destroy()\r\n this.tableScrollBar.destroy()\r\n this.tableSelection.clearSelection()\r\n const dom = this.table.cloneNode(true)\r\n const trArr = dom.querySelectorAll('tr[data-row]')\r\n trArr.forEach(tr => tr.removeAttribute('data-row'))\r\n this.setCopyRange(dom)\r\n const blob = new Blob([dom.outerHTML], { type: 'text/html' })\r\n const clipboardItem = new ClipboardItem({ 'text/html': blob })\r\n try {\r\n await navigator.clipboard.write([clipboardItem])\r\n }\r\n catch (_e) {\r\n throw new Error('Failed to write to clipboard.')\r\n }\r\n },\r\n },\r\n cutCells: {\r\n text: langText['cut-cells'],\r\n handler() {\r\n this.onCopy('cut')\r\n },\r\n },\r\n emptyCells: {\r\n text: langText['empty-cells'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const { selectedTds } = this.tableSelection\r\n tableContainer.emptyCells(selectedTds)\r\n },\r\n },\r\n insertColumnRight: {\r\n text: langText['insert-column-right'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndex = getColToolCellIndexByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return Math.abs(cellRect.x + cellRect.width - boundary.x1) <= ERROR_LIMIT\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, true, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // fix: the scroll bar will go to the top when insert row/column to the table\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(newColumn[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n insertColumnLeft: {\r\n text: langText['insert-column-left'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndex = getColToolCellIndexByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return Math.abs(cellRect.x - boundary.x) <= ERROR_LIMIT\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, false, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(newColumn[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n insertRowUp: {\r\n text: langText['insert-row-up'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const affectedCells = tableContainer.insertRow(this.boundary, false, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(affectedCells[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\r\n },\r\n },\r\n insertRowDown: {\r\n text: langText['insert-row-down'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const affectedCells = tableContainer.insertRow(this.boundary, true, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(affectedCells[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\r\n },\r\n },\r\n mergeCells: {\r\n text: langText['merge-cells'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n // compute merged Cell rowspan, equal to length of selected rows\r\n const rowspan = tableContainer.rows().reduce((sum, row) => {\r\n const rowRect = getRelativeRect(row.domNode.getBoundingClientRect(), this.quill.root.parentNode)\r\n if (\r\n rowRect.y > this.boundary.y - ERROR_LIMIT\r\n && rowRect.y + rowRect.height < this.boundary.y + this.boundary.height + ERROR_LIMIT\r\n ) {\r\n sum += 1\r\n }\r\n return sum\r\n }, 0)\r\n\r\n // compute merged cell colspan, equal to length of selected cols\r\n const colspan = this.columnToolCells.reduce((sum, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), this.quill.root.parentNode)\r\n if (\r\n cellRect.x > this.boundary.x - ERROR_LIMIT\r\n && cellRect.x + cellRect.width < this.boundary.x + this.boundary.width + ERROR_LIMIT\r\n ) {\r\n sum += 1\r\n }\r\n return sum\r\n }, 0)\r\n\r\n const mergedCell = tableContainer.mergeCells(\r\n this.boundary,\r\n this.selectedTds,\r\n rowspan,\r\n colspan,\r\n this.quill.root.parentNode,\r\n )\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.setSelection(\r\n mergedCell.domNode.getBoundingClientRect(),\r\n mergedCell.domNode.getBoundingClientRect(),\r\n )\r\n },\r\n },\r\n unmergeCells: {\r\n text: langText['unmerge-cells'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n tableContainer.unmergeCells(this.selectedTds, this.quill.root.parentNode)\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n },\r\n },\r\n deleteColumn: {\r\n text: langText['delete-column'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndexes = getColToolCellIndexesByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return cellRect.x + ERROR_LIMIT > boundary.x && cellRect.x + cellRect.width - ERROR_LIMIT < boundary.x1\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const isDeleteTable = tableContainer.deleteColumns(this.boundary, colIndexes, this.quill.root.parentNode)\r\n if (!isDeleteTable) {\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n }\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n deleteRow: {\r\n text: langText['delete-row'],\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const isDeleteTable = tableContainer.deleteRow(this.boundary, this.quill.root.parentNode)\r\n if (!isDeleteTable) {\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n }\r\n },\r\n },\r\n deleteTable: {\r\n text: langText['delete-table'],\r\n handler() {\r\n const betterTableModule = this.quill.getModule('better-table')\r\n const tableContainer = Quill.find(this.table)\r\n betterTableModule.hideTableTools()\r\n tableContainer.remove()\r\n this.quill.update(Quill.sources.USER)\r\n // fix: 右键菜单删除表格后编辑器失焦\r\n this.quill.focus()\r\n },\r\n },\r\n }\r\n }\r\n\r\n mount() {\r\n this.quill.root.parentNode.appendChild(this.domNode)\r\n }\r\n\r\n destroy() {\r\n const menuItems = arrayFrom(\r\n this.domNode.querySelectorAll(`.${OPERATE_MENU_ITEM_CLASS}`),\r\n )\r\n const colorPickerItems = arrayFrom(\r\n this.domNode.querySelectorAll(`.${OPERATE_MENU_COLORPICKER_ITEM_CLASS}`),\r\n )\r\n const nodes = menuItems.concat(colorPickerItems)\r\n\r\n nodes.forEach((node) => {\r\n if (NODE_EVENT_MAP.has(node)) {\r\n const unregister = NODE_EVENT_MAP.get(node)\r\n\r\n if (unregister && typeof unregister === 'function') {\r\n unregister()\r\n }\r\n }\r\n })\r\n\r\n elementRemove(this.domNode)\r\n document.removeEventListener('mousedown', this.destroyHandler, false)\r\n\r\n return null\r\n }\r\n\r\n menuInitial({ cell, left, top }) {\r\n const rowspan = cell.getAttribute('rowspan')\r\n const colspan = cell.getAttribute('colspan')\r\n const winHeight = window.innerHeight || Math.max(document.documentElement.clientHeight, document.body.clientHeight)\r\n const num = Object.keys(this.menuItems) || []\r\n const menuHeight = MENU_ITEM_HEIGHT * num.length || MENU_MIN_HEIGHT\r\n const transformOffset = checkAndGetViewPointChange(this.quill.root.parentNode, left, top)\r\n const leftPos = left - transformOffset.offsetX\r\n const topPos = top - transformOffset.offsetY\r\n\r\n const cssContent = {\r\n 'left': `${leftPos}px`,\r\n 'top': `${topPos}px`,\r\n 'min-height': `${MENU_MIN_HEIGHT}px`,\r\n 'max-height': `${winHeight - topPos}px`,\r\n 'width': `${MENU_WIDTH}px`,\r\n 'overflow-y': 'auto',\r\n }\r\n // fix: 处理菜单超出屏幕\r\n if (menuHeight + top > winHeight || topPos > winHeight / 2) {\r\n delete cssContent.top\r\n cssContent['max-height'] = `${winHeight - 20}px`\r\n cssContent.bottom = '10px'\r\n }\r\n\r\n this.domNode = document.createElement('div')\r\n this.domNode.classList.add('qlbt-operation-menu')\r\n css(this.domNode, cssContent)\r\n const fragment = document.createDocumentFragment()\r\n\r\n for (const name in this.menuItems) {\r\n if (this.menuItems[name]) {\r\n const item = { ...this.DEFAULT_MENU[name], ...this.menuItems[name] }\r\n const dom = this.menuItemCreator(item)\r\n if (\r\n (name === 'mergeCells' && this.tableSelection.selectedTds.length === 1)\r\n || (name === 'unmergeCells' && rowspan === 1 && colspan === 1)\r\n ) {\r\n dom.classList.add('qlbt-operation-menu-disabled')\r\n }\r\n else {\r\n dom.addEventListener('mouseup', item.handler.bind(this), false)\r\n }\r\n fragment.appendChild(dom)\r\n }\r\n }\r\n this.domNode.appendChild(fragment)\r\n\r\n // if colors option is false, disabled bg color\r\n if (this.options.color && this.options.color !== false) {\r\n this.domNode.appendChild(dividingCreator())\r\n this.domNode.appendChild(subTitleCreator(this.colorSubTitle))\r\n this.domNode.appendChild(this.colorsItemCreator(this.cellColors))\r\n }\r\n\r\n // create dividing line\r\n function dividingCreator() {\r\n const dividing = document.createElement('div')\r\n dividing.classList.add(OPERATE_MENU_DIVIDING_CLASS)\r\n return dividing\r\n }\r\n\r\n // create subtitle for menu\r\n function subTitleCreator(title) {\r\n const subTitle = document.createElement('div')\r\n subTitle.classList.add(OPERATE_MENU_SUBTITLE_CLASS)\r\n subTitle.textContent = title\r\n return subTitle\r\n }\r\n }\r\n\r\n colorsItemCreator(colors) {\r\n const self = this\r\n const node = document.createElement('div')\r\n node.classList.add(OPERATE_MENU_COLORPICKER_CLASS)\r\n\r\n colors.forEach((color) => {\r\n const colorBox = colorBoxCreator(color)\r\n node.appendChild(colorBox)\r\n })\r\n\r\n function colorBoxCreator(color) {\r\n const box = document.createElement('div')\r\n box.classList.add(OPERATE_MENU_COLORPICKER_ITEM_CLASS)\r\n box.setAttribute('data-color', color)\r\n box.style.backgroundColor = color\r\n\r\n const clickHandler = function () {\r\n const selectedTds = self.tableSelection.selectedTds\r\n if (selectedTds && selectedTds.length > 0) {\r\n selectedTds.forEach((tableCell) => {\r\n tableCell.domNode.children[0].setAttribute('data-parent-bg', color)\r\n tableCell.format('cell-bg', color)\r\n })\r\n }\r\n }\r\n\r\n box.addEventListener('click', clickHandler, false)\r\n\r\n NODE_EVENT_MAP.set(box, () => {\r\n box.removeEventListener('click', clickHandler, false)\r\n })\r\n\r\n return box\r\n }\r\n\r\n return node\r\n }\r\n\r\n menuItemCreator({ text }) {\r\n const node = document.createElement('div')\r\n node.classList.add('qlbt-operation-menu-item')\r\n node.style.height = `${MENU_ITEM_HEIGHT}px`\r\n node.textContent = text\r\n // node.addEventListener('click', handler.bind(this), false)\r\n return node\r\n }\r\n\r\n async onCopy(operation) {\r\n const { selectedTds } = this.tableSelection\r\n const virtualTable = this.createVirtualTable(selectedTds, operation)\r\n this.setCopyRange(virtualTable)\r\n this.tableSelection.preSelectedTable = virtualTable\r\n this.tableSelection.preSelectedTds = selectedTds\r\n const blob = new Blob([this.tableSelection.preSelectedTable.outerHTML], { type: 'text/html' })\r\n const clipboardItem = new ClipboardItem({ 'text/html': blob })\r\n try {\r\n await navigator.clipboard.write([clipboardItem])\r\n }\r\n catch (_e) {\r\n throw new Error('Failed to write to clipboard.')\r\n }\r\n if (operation === 'cut') {\r\n const tableContainer = Quill.find(this.table)\r\n tableContainer.emptyCells(selectedTds)\r\n }\r\n }\r\n\r\n createVirtualTable(selectedTds, _operation) {\r\n const virtualTable: any = document.createElement('table')\r\n virtualTable.style.position = 'fixed'\r\n virtualTable.style.top = 0\r\n virtualTable.style.left = 0\r\n virtualTable.style.clip = 'rect(0,0,0,0)'\r\n let preParentSign = ''\r\n let virtualTr = null\r\n selectedTds.forEach((selectedCell) => {\r\n const { domNode, parent } = selectedCell\r\n const currentParentSign = parent.domNode.getAttribute('data-row')\r\n const rowspan = domNode.firstChild.dataset.rowspan\r\n const colspan = domNode.firstChild.dataset.colspan\r\n const row = domNode.firstChild.dataset.row\r\n const cell = domNode.firstChild.dataset.cell\r\n\r\n selectedCell.dataCell = cell\r\n selectedCell.dataRow = row\r\n selectedCell.dataColSpan = colspan\r\n selectedCell.dataRowSpan = rowspan\r\n\r\n if (currentParentSign !== preParentSign) {\r\n if (preParentSign !== '') {\r\n virtualTable.appendChild(virtualTr)\r\n }\r\n virtualTr = document.createElement('tr')\r\n preParentSign = currentParentSign\r\n }\r\n\r\n const domNodeWidth = domNode.offsetWidth\r\n const cloneNode = domNode.cloneNode(true)\r\n cloneNode.setAttribute('width', domNodeWidth)\r\n\r\n virtualTr.appendChild(cloneNode)\r\n })\r\n virtualTable.appendChild(virtualTr)\r\n return virtualTable\r\n }\r\n\r\n setCopyRange(selectedNodes) {\r\n const range = document.createRange()\r\n const windowSelectionRange = window.getSelection()\r\n range.selectNodeContents(selectedNodes)\r\n windowSelectionRange.removeAllRanges()\r\n windowSelectionRange.addRange(range)\r\n }\r\n\r\n groupTableCell(selectedTds) {\r\n const rowGroup = []\r\n let dataRow = ''\r\n let preDataRow = ''\r\n let index = 0\r\n selectedTds.forEach((tableCell) => {\r\n dataRow = tableCell.parent.domNode.getAttribute('data-row')\r\n\r\n if (dataRow !== preDataRow) {\r\n if (preDataRow !== '') {\r\n index++\r\n }\r\n rowGroup[index] = []\r\n preDataRow = dataRow\r\n }\r\n\r\n rowGroup[index].push(tableCell)\r\n })\r\n return rowGroup\r\n }\r\n}\r\n\r\nfunction getColToolCellIndexByBoundary(cells, boundary, conditionFn, container) {\r\n return cells.reduce((findIndex, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\r\n if (conditionFn(cellRect, boundary)) {\r\n findIndex = cells.indexOf(cell)\r\n }\r\n return findIndex\r\n }, false)\r\n}\r\n\r\nfunction getColToolCellIndexesByBoundary(cells, boundary, conditionFn, container) {\r\n return cells.reduce((findIndexes, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\r\n if (conditionFn(cellRect, boundary)) {\r\n findIndexes.push(cells.indexOf(cell))\r\n }\r\n return findIndexes\r\n }, [])\r\n}\r\n\r\nfunction checkAndGetViewPointChange(parentContainer: HTMLElement, left: number, top: number) {\r\n if (!parentContainer) {\r\n return {\r\n offsetX: 0,\r\n offsetY: 0,\r\n }\r\n }\r\n // 模拟一个元素测预测位置和最终位置是否符合,如果不符合则是有transform等造成的偏移\r\n const testEl = document.createElement('div')\r\n css(testEl, {\r\n opacity: '0',\r\n position: 'fixed',\r\n left: `${left}px`,\r\n top: `${top}px`,\r\n width: '1px',\r\n height: '1px',\r\n zIndex: '-999999',\r\n })\r\n parentContainer.appendChild(testEl)\r\n const testElPosition = testEl.getBoundingClientRect()\r\n parentContainer.removeChild(testEl)\r\n return {\r\n offsetX: testElPosition.left - left,\r\n offsetY: testElPosition.top - top,\r\n }\r\n}\r\n"],"names":["CHANGE_LANGUAGE_EVENT","ERROR_LIMIT","getRelativeRect","arrayFrom","OPERATE_MENU_ITEM_CLASS","OPERATE_MENU_COLORPICKER_ITEM_CLASS","elementRemove","MENU_ITEM_HEIGHT","MENU_MIN_HEIGHT","MENU_WIDTH","css","OPERATE_MENU_DIVIDING_CLASS","OPERATE_MENU_SUBTITLE_CLASS","OPERATE_MENU_COLORPICKER_CLASS","index"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentiny/fluent-editor",
|
|
3
|
-
"version": "3.23.
|
|
3
|
+
"version": "3.23.3",
|
|
4
4
|
"description": "A rich text editor based on Quill 2.0, which extends rich modules and formats on the basis of Quill. It's powerful and out-of-the-box.",
|
|
5
5
|
"author": "OpenTiny Team",
|
|
6
6
|
"license": "MIT",
|
package/style.css
CHANGED
|
@@ -3626,9 +3626,9 @@ li.unchecked > .ql-ui {
|
|
|
3626
3626
|
display: none;
|
|
3627
3627
|
}
|
|
3628
3628
|
.ql-tooltip.math-field-tooltip {
|
|
3629
|
-
border: none
|
|
3630
|
-
z-index: 10
|
|
3631
|
-
padding: 0
|
|
3629
|
+
border: none;
|
|
3630
|
+
z-index: 10;
|
|
3631
|
+
padding: 0;
|
|
3632
3632
|
}
|
|
3633
3633
|
.ql-tooltip.math-field-tooltip::before {
|
|
3634
3634
|
display: none;
|
|
@@ -4919,38 +4919,4 @@ li.unchecked > .ql-ui {
|
|
|
4919
4919
|
}
|
|
4920
4920
|
.image-preview__overlay .icon-maxmize:before {
|
|
4921
4921
|
content: url('data:image/svg+xml;utf8,<svg t="1642681601748" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2834" width="20" height="20"><path d="M460.8 940.8h-320l262.4-262.4c12.8-12.8 12.8-38.4 0-51.2-12.8-19.2-38.4-19.2-57.6 0l-262.4 262.4v-345.6c0-19.2-19.2-38.4-38.4-38.4s-38.4 19.2-38.4 38.4v364.8c0 51.2 38.4 115.2 96 115.2h358.4c19.2 0 38.4-19.2 38.4-38.4 0-25.6-19.2-44.8-38.4-44.8zM940.8 6.4h-377.6c-19.2 0-38.4 19.2-38.4 38.4s19.2 38.4 38.4 38.4h320l-268.8 262.4c-12.8 12.8-12.8 38.4 0 57.6 19.2 12.8 44.8 12.8 57.6 0l262.4-262.4v320c0 19.2 19.2 38.4 38.4 38.4s38.4-19.2 38.4-38.4v-352c6.4-64-25.6-102.4-70.4-102.4z" p-id="2835"></path></svg>');
|
|
4922
|
-
}
|
|
4923
|
-
/* Set content font-families */
|
|
4924
|
-
.ql-font-songti {
|
|
4925
|
-
font-family: "宋体", "SimSun";
|
|
4926
|
-
}
|
|
4927
|
-
.ql-font-yahei {
|
|
4928
|
-
font-family: "微软雅黑", "Microsoft YaHei";
|
|
4929
|
-
}
|
|
4930
|
-
.ql-font-kaiti {
|
|
4931
|
-
font-family: "楷体", "楷体_GB2312", "SimKa";
|
|
4932
|
-
}
|
|
4933
|
-
.ql-font-heiti {
|
|
4934
|
-
font-family: "黑体", "SimHei";
|
|
4935
|
-
}
|
|
4936
|
-
.ql-font-lishu {
|
|
4937
|
-
font-family: "隶书", "SimLi";
|
|
4938
|
-
}
|
|
4939
|
-
.ql-font-mono {
|
|
4940
|
-
font-family: "andale mono";
|
|
4941
|
-
}
|
|
4942
|
-
.ql-font-arial {
|
|
4943
|
-
font-family: arial, helvetica, sans-serif;
|
|
4944
|
-
}
|
|
4945
|
-
.ql-font-arialblack {
|
|
4946
|
-
font-family: "arial black", "avant garde";
|
|
4947
|
-
}
|
|
4948
|
-
.ql-font-comic {
|
|
4949
|
-
font-family: "comic sans ms";
|
|
4950
|
-
}
|
|
4951
|
-
.ql-font-impact {
|
|
4952
|
-
font-family: "impact", "chicago";
|
|
4953
|
-
}
|
|
4954
|
-
.ql-font-times {
|
|
4955
|
-
font-family: "times new roman";
|
|
4956
4922
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const FontStyle: import('parchment').
|
|
1
|
+
export declare const FontStyle: import('parchment').ClassAttributor;
|
package/types/config/index.d.ts
CHANGED
|
@@ -12,10 +12,17 @@ export interface IEditorConfig extends QuillOptions {
|
|
|
12
12
|
autoProtocol?: boolean | string;
|
|
13
13
|
editorPaste?: any;
|
|
14
14
|
uploadOption?: {
|
|
15
|
-
|
|
15
|
+
imageUpload?: ({ file, callback, editor }: {
|
|
16
|
+
file: any;
|
|
17
|
+
callback: any;
|
|
18
|
+
editor: any;
|
|
19
|
+
}) => void;
|
|
16
20
|
imageAccept?: Array<string>[] | string;
|
|
17
21
|
fileAccept?: Array<string>[] | string;
|
|
18
22
|
isVideoPlay?: boolean;
|
|
23
|
+
maxSize?: Number;
|
|
24
|
+
success?: (file: File) => void;
|
|
25
|
+
fail?: (file: File) => void;
|
|
19
26
|
};
|
|
20
27
|
screenshot?: Partial<ScreenShotOptions>;
|
|
21
28
|
lang?: string;
|
|
@@ -14,6 +14,7 @@ declare class CustomUploader extends Uploader {
|
|
|
14
14
|
quill: any;
|
|
15
15
|
options: any;
|
|
16
16
|
upload(range: any, files: any, isFile?: any): void;
|
|
17
|
+
isAllowedFileSize: (maxSize: number, file: File) => boolean;
|
|
17
18
|
isAllowedFileType: (accept: Array<string> | string, file: File) => boolean;
|
|
18
19
|
handleUploadFile(range: any, files: any, _hasRejectedFile: any): void;
|
|
19
20
|
insertFileToEditor(range: Range, file: File, { code, message, data }: InsertFileData): void;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { MathfieldElement } from 'mathlive';
|
|
2
2
|
import { Root } from 'parchment';
|
|
3
|
-
import { default as Quill } from 'quill';
|
|
4
3
|
|
|
5
4
|
declare const Parchment: typeof import("parchment");
|
|
6
5
|
type MathliveBlotMode = 'dialog' | 'only-read';
|
|
7
6
|
export default class MathliveBlot extends Parchment.EmbedBlot {
|
|
7
|
+
domNode: MathfieldElement;
|
|
8
8
|
static blotName: string;
|
|
9
9
|
static tagName: string;
|
|
10
10
|
static className: string;
|
|
11
|
-
quill?: Quill;
|
|
12
|
-
initFlag: boolean;
|
|
13
11
|
mode: MathliveBlotMode;
|
|
14
|
-
constructor(scroll: Root, domNode: Node);
|
|
15
12
|
static create(obj: {
|
|
16
13
|
value: string;
|
|
17
14
|
mode: MathliveBlotMode;
|
|
@@ -20,9 +17,7 @@ export default class MathliveBlot extends Parchment.EmbedBlot {
|
|
|
20
17
|
value: string;
|
|
21
18
|
mode: string;
|
|
22
19
|
};
|
|
23
|
-
|
|
24
|
-
init(): void;
|
|
20
|
+
constructor(scroll: Root, domNode: MathfieldElement);
|
|
25
21
|
html(): string;
|
|
26
|
-
findQuillInstance(): Quill;
|
|
27
22
|
}
|
|
28
23
|
export {};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { default as Quill
|
|
1
|
+
import { default as Quill } from 'quill';
|
|
2
2
|
import { default as MathliveTooltip } from './tooltip';
|
|
3
3
|
|
|
4
|
-
export default class MathliveModule
|
|
4
|
+
export default class MathliveModule {
|
|
5
|
+
quill: Quill;
|
|
5
6
|
tooltip: MathliveTooltip;
|
|
6
|
-
constructor(quill: Quill
|
|
7
|
-
createDialog(value?: string):
|
|
7
|
+
constructor(quill: Quill);
|
|
8
|
+
createDialog(value?: string): void;
|
|
8
9
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { MathfieldElement } from 'mathlive';
|
|
2
|
-
import { default as Quill } from 'quill';
|
|
3
2
|
import { Bounds } from 'quill/core/selection';
|
|
4
|
-
import { default as
|
|
3
|
+
import { default as TypeTooltip } from 'quill/ui/tooltip';
|
|
4
|
+
import { default as Quill } from 'quill';
|
|
5
5
|
|
|
6
|
+
declare const Tooltip: typeof TypeTooltip;
|
|
6
7
|
export default class MathliveTooltip extends Tooltip {
|
|
7
8
|
static TEMPLATE: string;
|
|
8
9
|
mathliveDom: MathfieldElement;
|
|
@@ -15,3 +16,4 @@ export default class MathliveTooltip extends Tooltip {
|
|
|
15
16
|
save(): void;
|
|
16
17
|
position(reference: Bounds): number;
|
|
17
18
|
}
|
|
19
|
+
export {};
|
|
@@ -31,7 +31,7 @@ export default class TableOperationMenu {
|
|
|
31
31
|
menuItemCreator({ text }: {
|
|
32
32
|
text: any;
|
|
33
33
|
}): HTMLDivElement;
|
|
34
|
-
onCopy(operation: any): void
|
|
34
|
+
onCopy(operation: any): Promise<void>;
|
|
35
35
|
createVirtualTable(selectedTds: any, _operation: any): any;
|
|
36
36
|
setCopyRange(selectedNodes: any): void;
|
|
37
37
|
groupTableCell(selectedTds: any): any[];
|