@chenyomi/leafer-htmltext-editor 1.0.7 → 1.0.10

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.
Files changed (56) hide show
  1. package/dist/index.cjs +4 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.mts +64 -0
  4. package/dist/index.d.ts +51 -6
  5. package/dist/index.mjs +4 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +16 -8
  8. package/dist/TextEditTool/index.d.ts +0 -17
  9. package/dist/TextEditTool/index.d.ts.map +0 -1
  10. package/dist/TextEditTool/index.js +0 -113
  11. package/dist/TextEditTool/utils.d.ts +0 -8
  12. package/dist/TextEditTool/utils.d.ts.map +0 -1
  13. package/dist/TextEditTool/utils.js +0 -256
  14. package/dist/TextEditor.d.ts +0 -30
  15. package/dist/TextEditor.d.ts.map +0 -1
  16. package/dist/TextEditor.js +0 -169
  17. package/dist/esm/TextEditTool/index.d.ts +0 -17
  18. package/dist/esm/TextEditTool/index.d.ts.map +0 -1
  19. package/dist/esm/TextEditTool/index.js +0 -110
  20. package/dist/esm/TextEditTool/utils.d.ts +0 -8
  21. package/dist/esm/TextEditTool/utils.d.ts.map +0 -1
  22. package/dist/esm/TextEditTool/utils.js +0 -248
  23. package/dist/esm/TextEditor.d.ts +0 -30
  24. package/dist/esm/TextEditor.d.ts.map +0 -1
  25. package/dist/esm/TextEditor.js +0 -166
  26. package/dist/esm/fonts/font.d.ts +0 -17
  27. package/dist/esm/fonts/font.d.ts.map +0 -1
  28. package/dist/esm/fonts/font.js +0 -68
  29. package/dist/esm/fonts/utils.d.ts +0 -9
  30. package/dist/esm/fonts/utils.d.ts.map +0 -1
  31. package/dist/esm/fonts/utils.js +0 -170
  32. package/dist/esm/index.d.ts +0 -19
  33. package/dist/esm/index.d.ts.map +0 -1
  34. package/dist/esm/utils.d.ts +0 -3
  35. package/dist/esm/utils.d.ts.map +0 -1
  36. package/dist/esm/utils.js +0 -266
  37. package/dist/fonts/font.d.ts +0 -17
  38. package/dist/fonts/font.d.ts.map +0 -1
  39. package/dist/fonts/font.js +0 -72
  40. package/dist/fonts/utils.d.ts +0 -9
  41. package/dist/fonts/utils.d.ts.map +0 -1
  42. package/dist/fonts/utils.js +0 -180
  43. package/dist/index.d.ts.map +0 -1
  44. package/dist/index.esm.js +0 -141
  45. package/dist/index.js +0 -179
  46. package/dist/utils.d.ts +0 -3
  47. package/dist/utils.d.ts.map +0 -1
  48. package/dist/utils.js +0 -271
  49. package/src/TextEditTool/index.ts +0 -132
  50. package/src/TextEditTool/utils.ts +0 -288
  51. package/src/TextEditor.ts +0 -213
  52. package/src/fonts/font.ts +0 -86
  53. package/src/fonts/utils.ts +0 -232
  54. package/src/htmltext-editor.css +0 -103
  55. package/src/index.ts +0 -163
  56. package/src/utils.ts +0 -294
@@ -1,170 +0,0 @@
1
- const FONT_CSS_TAG = "data-fonts";
2
- const FONT_CSS_TAG_BASE64 = "base64-fonts";
3
- export async function fetchFontAsBase64(url) {
4
- const response = await fetch(url);
5
- if (!response.ok) {
6
- throw new Error(`Failed to fetch font from ${url}`);
7
- }
8
- const contentType = response.headers.get('Content-Type');
9
- let mimeType;
10
- if (contentType?.includes('font/woff2')) {
11
- mimeType = 'font/woff2';
12
- }
13
- else if (contentType?.includes('font/woff')) {
14
- mimeType = 'font/woff';
15
- }
16
- else if (contentType?.includes('font/ttf') || contentType?.includes('font/sfnt')) {
17
- mimeType = 'font/ttf';
18
- }
19
- else if (contentType?.includes('application/octet-stream')) {
20
- const extension = url.split('.').pop()?.toLowerCase();
21
- if (extension === 'woff2') {
22
- mimeType = 'font/woff2';
23
- }
24
- else if (extension === 'woff') {
25
- mimeType = 'font/woff';
26
- }
27
- else if (extension === 'ttf') {
28
- mimeType = 'font/ttf';
29
- }
30
- else {
31
- throw new Error(`Unsupported font file type: ${extension}`);
32
- }
33
- }
34
- else {
35
- throw new Error(`Unsupported Content-Type: ${contentType}`);
36
- }
37
- const arrayBuffer = await response.arrayBuffer();
38
- const base64String = arrayBufferToBase64(arrayBuffer);
39
- return `data:${mimeType};charset=utf-8;base64,${base64String}`;
40
- }
41
- function arrayBufferToBase64(buffer) {
42
- let binary = '';
43
- const bytes = new Uint8Array(buffer);
44
- const len = bytes.byteLength;
45
- for (let i = 0; i < len; i++) {
46
- binary += String.fromCharCode(bytes[i]);
47
- }
48
- return window.btoa(binary);
49
- }
50
- export function addCustomFonts(fontList = []) {
51
- let styleTag = document.createElement('style');
52
- styleTag.setAttribute(FONT_CSS_TAG, 'true');
53
- let fontRules = fontList.map((font) => `@font-face {
54
- font-family: "${font.name}";
55
- src: local("${font.name}"), url("${font.download}")
56
- }`).join('\n');
57
- styleTag.textContent = fontRules;
58
- document.head.appendChild(styleTag);
59
- }
60
- export function getCustomFontsStyle() {
61
- const styleTag = document.querySelector('style[data-fonts]');
62
- return styleTag?.textContent || '';
63
- }
64
- export function addCustomFont(font) {
65
- let styleTag = document.querySelector('style[data-fonts]');
66
- if (!styleTag) {
67
- styleTag = document.createElement('style');
68
- styleTag.setAttribute(FONT_CSS_TAG, 'true');
69
- document.head.appendChild(styleTag);
70
- }
71
- if (!styleTag.sheet)
72
- return;
73
- let existingFonts = [];
74
- existingFonts = Array.from(styleTag.sheet.cssRules).map((rule) => {
75
- const match = rule.cssText.match(/font-family: "([^"]+)"/);
76
- return match ? match[1] : null;
77
- }).filter((font) => font !== null);
78
- if (!existingFonts.includes(font.name)) {
79
- const newFontRule = `@font-face {
80
- font-family: "${font.name}";
81
- src: url("${font.download}");
82
- }`;
83
- try {
84
- styleTag.sheet.insertRule(newFontRule, styleTag.sheet.cssRules.length);
85
- }
86
- catch (e) {
87
- console.error('Failed to insert font rule:', e);
88
- }
89
- }
90
- }
91
- export async function batchLoadFont(fontNameList = []) {
92
- try {
93
- for (const fontFamily of fontNameList) {
94
- await document.fonts.load(`16px ${fontFamily}`);
95
- }
96
- }
97
- catch (e) {
98
- console.warn('Font loading failed:', e);
99
- }
100
- }
101
- function getFontUrlFromCSS(selectors, fontFamilyName) {
102
- const styleTags = document.querySelectorAll(selectors);
103
- for (let i = 0; i < styleTags.length; i++) {
104
- const styleTag = styleTags[i];
105
- const cssText = styleTag.textContent || '';
106
- const fontFaceRules = cssText.match(/@font-face\s*\{[^}]+\}/g);
107
- if (fontFaceRules) {
108
- for (const rule of fontFaceRules) {
109
- const fontFamilyMatch = rule.match(/font-family:\s*(["'])(.*?)\1/);
110
- if (fontFamilyMatch && fontFamilyMatch[2] === fontFamilyName) {
111
- const srcMatch = rule.match(/src:\s*url\((["'])(.*?)\1\)/);
112
- if (srcMatch) {
113
- return srcMatch[2];
114
- }
115
- else {
116
- const srcMatch2 = rule.match(/src:\s*(?:local\([^)]+\)\s*,\s*)?url\((["'])(.*?)\1\)/);
117
- if (srcMatch2) {
118
- return srcMatch2[2];
119
- }
120
- }
121
- }
122
- }
123
- }
124
- }
125
- return null;
126
- }
127
- export async function addCustomFontBase64(font) {
128
- const fontUrl = getFontUrlFromCSS(`style[${FONT_CSS_TAG}]`, font);
129
- if (!fontUrl) {
130
- console.warn('Font URL not found for:', font);
131
- return;
132
- }
133
- console.log('fontUrl=', fontUrl);
134
- let styleTag = document.querySelector(`style[${FONT_CSS_TAG_BASE64}]`);
135
- if (!styleTag) {
136
- styleTag = document.createElement('style');
137
- styleTag.setAttribute(FONT_CSS_TAG_BASE64, 'true');
138
- document.head.appendChild(styleTag);
139
- }
140
- if (!styleTag.sheet) {
141
- await new Promise(resolve => setTimeout(resolve, 10));
142
- }
143
- if (!styleTag.sheet)
144
- return;
145
- let existingFonts = Array.from(styleTag.sheet.cssRules).map((rule) => {
146
- const match = rule.cssText.match(/font-family: "([^"]+)"/);
147
- return match ? match[1] : null;
148
- }).filter((font) => font !== null);
149
- if (!existingFonts.includes(font)) {
150
- const base64Url = await fetchFontAsBase64(fontUrl);
151
- const newFontRule = `@font-face {
152
- font-family: "${font}";
153
- src: local("${font}"), url("${base64Url}");
154
- }`;
155
- try {
156
- styleTag.sheet.insertRule(newFontRule, styleTag.sheet.cssRules.length);
157
- styleTag.textContent += newFontRule;
158
- }
159
- catch (e) {
160
- console.error('Failed to insert font rule:', e);
161
- }
162
- }
163
- }
164
- export function getBase64CustomFontsStyle() {
165
- const styleTag = document.querySelector(`style[${FONT_CSS_TAG_BASE64}]`);
166
- return styleTag?.textContent || '';
167
- }
168
- export async function loadFont(font) {
169
- await addCustomFontBase64(font);
170
- }
@@ -1,19 +0,0 @@
1
- import Quill from "quill";
2
- import "quill/dist/quill.core.css";
3
- export { TextEditTool } from "./TextEditTool";
4
- export { TextEditor } from "./TextEditor";
5
- declare class QuillManager {
6
- private static instance;
7
- private quill;
8
- app_: any | null;
9
- private constructor();
10
- static getInstance(): QuillManager;
11
- init(app: any): Promise<Quill | undefined>;
12
- getQuill(): Quill;
13
- getCanvas(): any;
14
- private registerFonts;
15
- isMultiSelect(): boolean;
16
- dateEdit(callback: (leaf: any) => void, level?: number, listNew?: any): void;
17
- }
18
- export declare const quillManager: QuillManager;
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AACrC,OAAO,2BAA2B,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,cAAM,YAAY;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,KAAK,CAAsB;IAC5B,IAAI,EAAE,GAAG,GAAG,IAAI,CAAQ;IAE/B,OAAO;IAEP,MAAM,CAAC,WAAW;IAOZ,IAAI,CAAC,GAAG,EAAE,GAAG;IAwDnB,QAAQ;IAOR,SAAS;IAOT,OAAO,CAAC,aAAa;IA+Bd,aAAa,IAAI,OAAO;IAQxB,QAAQ,CACb,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAC7B,KAAK,SAAI,EACT,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI;CA4BR;AAED,eAAO,MAAM,YAAY,cAA6B,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare const updataHtmlText: (e?: any, base64font?: any, fontObj?: any) => Promise<void>;
2
- export declare const setHTMLText: (key: string, value?: any, base64font?: any) => void;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,GAAU,IAAI,GAAG,EAAE,aAAa,GAAG,EAAE,UAAU,GAAG,kBAgG5E,CAAA;AAoED,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,QAAQ,GAAG,EAAE,aAAa,GAAG,SA+HrE,CAAA"}
package/dist/esm/utils.js DELETED
@@ -1,266 +0,0 @@
1
- import { quillManager } from '.';
2
- export const updataHtmlText = async (e, base64font, fontObj) => {
3
- const { scaleX, scaleY } = e.worldTransform;
4
- const zoomScale = Math.max(Math.abs(scaleX), Math.abs(scaleY));
5
- const dom = document.querySelector('#textInnerEditor');
6
- if (dom && e.data.textData?.fontFamily) {
7
- dom.style.fontFamily = e.data.textData.fontFamily;
8
- }
9
- if (dom && e.data.textData?.fontSize) {
10
- dom.style.fontSize = `${e.data.textData.fontSize * zoomScale}px`;
11
- }
12
- if (dom && e.data.textData?.lineHeight) {
13
- dom.style.lineHeight = e.data.textData.lineHeight;
14
- }
15
- if (dom && e.data.textData?.letterSpacing) {
16
- dom.style.letterSpacing = `${e.data.textData.letterSpacing}px`;
17
- }
18
- if (dom && e.data.textData?.textShadow) {
19
- dom.style.textShadow = e.data.textData.textShadow;
20
- }
21
- else {
22
- dom.style.textShadow = 'none';
23
- }
24
- if (dom && e.data.textData?.alignContent) {
25
- const qlEditor = dom.querySelector('.ql-editor');
26
- qlEditor.style.alignContent = e.data.textData.alignContent;
27
- }
28
- const quill = quillManager.getQuill();
29
- const html = quill.getSemanticHTML();
30
- if (html === '<p></p>') {
31
- if (e.text.includes('<style>@font-face')) {
32
- e.text = e.text.split('</style>')[0] + '</style>';
33
- }
34
- else {
35
- e.text = '';
36
- }
37
- return;
38
- }
39
- if (e.text.includes('<style>@font-face')) {
40
- const style = e.text.split('</style>')[0];
41
- if (fontObj && !style.includes(fontObj.code)) {
42
- const addStyle = `@font-face {font-family: ${fontObj.code};src: url(${base64font}) format('woff2') } .ql-font-${fontObj?.code?.replace(/\s+/g, '')} {font-family: ${fontObj.name};}`;
43
- e.text =
44
- style +
45
- addStyle +
46
- '</style>' +
47
- addFontSizeToP(e, html, e.data.textData.fontSize, e.data.textData.lineHeight, e.data.textData.letterSpacing, e.data.textData.textShadow, e.data.textData?.alignContent);
48
- }
49
- else {
50
- e.text =
51
- style +
52
- '</style>' +
53
- addFontSizeToP(e, html, e.data.textData.fontSize, e.data.textData.lineHeight, e.data.textData.letterSpacing, e.data.textData.textShadow, e.data.textData?.alignContent);
54
- }
55
- }
56
- else if (base64font && fontObj) {
57
- const style = `<style>@font-face {font-family: ${e.data.textData.fontFamily.split(',')[0]};src: url(${base64font}) format('woff2') } .ql-font-${fontObj?.code?.replace(/\s+/g, '')} {font-family: ${fontObj.name};}</style>`;
58
- e.text =
59
- style +
60
- addFontSizeToP(e, html, e.data.textData.fontSize, e.data.textData.lineHeight, e.data.textData.letterSpacing, e.data.textData.textShadow, e.data.textData?.alignContent);
61
- }
62
- else {
63
- e.text = addFontSizeToP(e, html, e.data.textData.fontSize, e.data.textData.lineHeight, e.data.textData.letterSpacing, e.data.textData.textShadow, e.data.textData?.alignContent);
64
- }
65
- };
66
- const addFontSizeToP = (e, html, fontSize = 16, lineHeight = '1.5', letterSpacing = '0', textShadow = 'none', alignContent = 'start') => {
67
- const { scaleX, scaleY } = e.worldTransform;
68
- const zoomScale = Math.max(Math.abs(scaleX), Math.abs(scaleY));
69
- const wrapper = document.createElement('div');
70
- wrapper.innerHTML = html;
71
- const wrapperStyle = {
72
- fontSize: `${fontSize}px`,
73
- lineHeight,
74
- letterSpacing: `${letterSpacing}px`,
75
- textShadow
76
- };
77
- wrapper.querySelectorAll('p,ol,ul').forEach((p) => {
78
- Object.assign(p.style, wrapperStyle);
79
- });
80
- let str = wrapper.innerHTML;
81
- if (/<p\b[^>]*><\/p>/.test(str)) {
82
- str = str.replace(/<p\b([^>]*)><\/p>/g, '<p$1>&nbsp;</p>');
83
- }
84
- let height;
85
- const div = document.querySelector('#textInnerEditor');
86
- const quill = quillManager.getQuill();
87
- const actualHeight = Number((quill.scroll.domNode.scrollHeight / zoomScale).toFixed(0));
88
- const actualWidth = Number((quill.scroll.domNode.scrollWidth / zoomScale).toFixed(0));
89
- if (['center', 'end'].includes(e.data.textData.alignContent)) {
90
- if (e.parent.height < actualHeight) {
91
- e.data.textData.alignContent = 'start';
92
- height = (actualHeight || e.__layout.boxBounds.height) + 'px';
93
- }
94
- else {
95
- height = `${e.parent.height}px`;
96
- }
97
- }
98
- else {
99
- if (e.parent.height < actualHeight) {
100
- height = (actualHeight || e.__layout.boxBounds.height) + 'px';
101
- }
102
- else {
103
- height = `${e.parent.height}px`;
104
- }
105
- }
106
- const style = `<style>sub,sup{font-size:63%;}.ql-ui{position:absolute}ol,ul{counter-reset:list-0;padding-left:1.5em;margin:0}ol>li,ul>li{counter-increment:list-0;list-style-type:none;position:relative;padding-left:0;margin:0}ol>li::before{content:counter(list-0,decimal) '. ';position:absolute;left:-1.5em;width:1.2em;text-align:right}ul>li::before{content:'\u2022';position:absolute;left:-1.5em;width:1.2em;text-align:right}li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-left{text-align:left}.ql-align-justify{text-align:justify}</style>`;
107
- let divBox = '';
108
- if (e.parent.children[0].tag.includes('Shape')) {
109
- divBox =
110
- style +
111
- `<div style="width: ${e.parent.width}px;height: ${e.parent.height}px;overflow-wrap:break-word;word-break:break-all;align-content:center;">${str}</div>`;
112
- }
113
- else if (e.data.canChangeBox) {
114
- divBox =
115
- style +
116
- `<div style="width: ${e.parent.width}px;height:${height};overflow-wrap:break-word;word-break:break-all;align-content:${alignContent};">${str}</div>`;
117
- }
118
- else {
119
- if (e.data.textData.italic) {
120
- divBox = style + str;
121
- }
122
- else {
123
- console.log(actualHeight);
124
- divBox = style + `<div style="width: ${actualWidth - 10}px;">${str}</div>`;
125
- }
126
- }
127
- console.log(divBox, '最终的html内容');
128
- return divBox;
129
- };
130
- export const setHTMLText = (key, value, base64font) => {
131
- const quill = quillManager.getQuill();
132
- const { editor, canvas } = quillManager.getCanvas();
133
- console.log(editor, quillManager.getCanvas(), 'editor');
134
- if (!quill) {
135
- return;
136
- }
137
- const range = JSON.parse(localStorage.getItem('selection-change') || '{}');
138
- quillManager.dateEdit(async (e) => {
139
- if (key === 'font') {
140
- const fontSimpleName = value.code.replace(/\s+/g, '');
141
- if (editor.innerEditing) {
142
- if (range && range.length) {
143
- quill.formatText(range.index, range.length, key, fontSimpleName);
144
- }
145
- else {
146
- quill.formatText(0, quill.getLength() - 1, key, fontSimpleName);
147
- }
148
- updataHtmlText(e, base64font ?? null, value ?? null);
149
- }
150
- else {
151
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
152
- quill.formatText(0, quill.getLength() - 1, key, fontSimpleName);
153
- updataHtmlText(e, base64font ?? null, value ?? null);
154
- }
155
- }
156
- else if (key === 'fontSize') {
157
- e.data.textData[key] = value;
158
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
159
- updataHtmlText(e, base64font ?? null);
160
- }
161
- else if (key === 'textCase') {
162
- if (editor.innerEditing) {
163
- const text = quill.getText(range.index, range.length);
164
- const formats = quill.getFormat(range.index, range.length);
165
- quill.deleteText(range.index, range.length);
166
- let convertedText;
167
- if (text === text.toUpperCase() && /[A-Z]/.test(text)) {
168
- convertedText = text.toLowerCase();
169
- }
170
- else if (text === text.toLowerCase() && /[a-z]/.test(text)) {
171
- convertedText = text.toUpperCase();
172
- }
173
- else {
174
- convertedText = text.toUpperCase();
175
- }
176
- quill.insertText(range.index, convertedText, formats);
177
- range && editor.innerEditing && quill.setSelection(range.index, range.length);
178
- }
179
- }
180
- else if (key === 'script') {
181
- let val = 'sub';
182
- if (value === 'super')
183
- val = 'sup';
184
- if (editor.innerEditing) {
185
- if (range && range.length) {
186
- quill.formatText(range.index, range.length, key, quill.getFormat(range).script === value ? false : val);
187
- }
188
- else {
189
- quill.formatText(0, quill.getLength() - 1, key, quill.getFormat().script === value ? false : val);
190
- }
191
- }
192
- else {
193
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
194
- quill.formatText(0, quill.getLength() - 1, key, quill.getFormat().script === value ? false : val);
195
- updataHtmlText(e);
196
- }
197
- }
198
- else if (key === 'align') {
199
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
200
- if (editor.innerEditing) {
201
- quill.format(key, value);
202
- }
203
- else {
204
- quill.formatLine(0, quill.getLength(), key, value);
205
- }
206
- updataHtmlText(e);
207
- }
208
- else if (key === 'alignContent') {
209
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
210
- e.data.textData[key] = value;
211
- updataHtmlText(e);
212
- }
213
- else if (key === 'color') {
214
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
215
- quill.formatText(0, quill.getLength() - 1, key, value);
216
- if (e.tag === 'HTMLText') {
217
- updataHtmlText(e);
218
- }
219
- else if (e.parent.findOne('HTMLText')) {
220
- updataHtmlText(e.parent.findOne('HTMLText'));
221
- }
222
- }
223
- else if (key === 'textShadow') {
224
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
225
- e.data.textData[key] = value;
226
- updataHtmlText(e);
227
- }
228
- else if (key === 'list') {
229
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
230
- if (editor.innerEditing) {
231
- const [line] = quill.getLine(range?.index || 0);
232
- if (line.formats().list) {
233
- quill.format(key, false);
234
- }
235
- else {
236
- quill.format(key, value);
237
- }
238
- }
239
- else {
240
- const [line] = quill.getLine(range?.index || 0);
241
- if (line.formats().list) {
242
- quill.formatLine(0, quill.getLength(), key, false);
243
- }
244
- else {
245
- quill.formatLine(0, quill.getLength(), key, value);
246
- }
247
- }
248
- updataHtmlText(e);
249
- }
250
- else {
251
- if (editor.innerEditing) {
252
- if (range && range.length) {
253
- quill.formatText(range.index, range.length, key, !quill.getFormat(range)[key]);
254
- }
255
- else {
256
- quill.formatText(0, quill.getLength() - 1, key, !quill.getFormat()[key]);
257
- }
258
- }
259
- else {
260
- quillManager.isMultiSelect() && quill.clipboard.dangerouslyPasteHTML(e.text);
261
- quill.formatText(0, quill.getLength() - 1, key, !quill.getFormat()[key]);
262
- updataHtmlText(e);
263
- }
264
- }
265
- }, 1);
266
- };
@@ -1,17 +0,0 @@
1
- export declare const defaultFonts: {
2
- code: string;
3
- name: string;
4
- url: string;
5
- }[];
6
- export declare class FontManager {
7
- private fontList;
8
- private skipLoadFonts;
9
- private loadFonts;
10
- constructor();
11
- initFonts(): Promise<any[]>;
12
- getFontList(): any[];
13
- getSkipLoadFonts(): any[];
14
- getLoadFonts(): any[];
15
- }
16
- export declare const fontManager: FontManager;
17
- //# sourceMappingURL=font.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"font.d.ts","sourceRoot":"","sources":["../../src/fonts/font.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;GA2BxB,CAAC;AAMF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,SAAS,CAAuB;;IASlC,SAAS;IA0Bf,WAAW;IAIX,gBAAgB;IAIhB,YAAY;CAGb;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fontManager = exports.FontManager = exports.defaultFonts = void 0;
4
- exports.defaultFonts = [
5
- { code: 'Roboto', name: `"Roboto", sans-serif`, url: '/fonts/Roboto.woff2' },
6
- { code: 'Roboto Mono', name: `"Roboto Mono", monospace`, url: '/fonts/RobotoMono.woff2' },
7
- { code: 'Inter', name: `"Inter", sans-serif`, url: '/fonts/Inter.woff2' },
8
- { code: 'Open Sans', name: `"Open Sans", sans-serif`, url: '/fonts/OpenSans.woff2' },
9
- { code: 'Montserrat', name: `"Montserrat", sans-serif`, url: '/fonts/Montserrat.woff2' },
10
- { code: 'Roboto Condensed', name: `"Roboto Condensed", sans-serif`, url: '/fonts/RobotoCondensed.woff2' },
11
- { code: 'Arimo', name: `"Arimo", sans-serif`, url: '/fonts/Arimo.woff2' },
12
- { code: 'Noto Sans', name: `"Noto Sans", sans-serif`, url: '/fonts/NotoSans.woff2' },
13
- { code: 'Noto Sans Symbols', name: `"Noto Sans Symbols", sans-serif`, url: '/fonts/NotoSansSymbols.woff2' },
14
- { code: 'Merriweather', name: `"Merriweather", serif`, url: '/fonts/Merriweather.woff2' },
15
- { code: 'Playfair Display', name: `"Playfair Display", serif`, url: '/fonts/PlayfairDisplay.woff2' },
16
- { code: 'Noto Serif', name: `"Noto Serif", serif`, url: '/fonts/NotoSerif.woff2' },
17
- { code: 'Lato', name: `"Lato", sans-serif`, url: '/fonts/Lato.woff2' },
18
- { code: 'Spectral', name: `"Spectral", serif`, url: '/fonts/Spectral.woff2' },
19
- { code: 'Dancing Script', name: `"Dancing Script", cursive`, url: '/fonts/DancingScript.woff2' },
20
- { code: 'Noto Sans Simplified Chinese', name: `"Noto Sans SC", sans-serif`, url: '/fonts/NotoSansSimplifiedChinese.woff2' },
21
- { code: 'Noto Serif Simplified Chinese', name: `"Noto Serif SC", serif`, url: '/fonts/NotoSerifSimplifiedChinese.woff2' },
22
- { code: 'Noto Sans Traditional Chinese', name: `"Noto Sans TC", sans-serif`, url: '/fonts/NotoSansTraditionalChinese.woff2' },
23
- { code: 'Noto Sans Hong Kong', name: `"Noto Sans HK", sans-serif`, url: '/fonts/NotoSansHongKong.woff2' },
24
- { code: 'Noto Serif Traditional Chinese', name: `"Noto Serif TC", serif`, url: '/fonts/NotoSerifTraditionalChinese.woff2' },
25
- { code: 'Noto Serif Hong Kong', name: `"Noto Serif HK", serif`, url: '/fonts/NotoSerifHongKong.woff2' },
26
- { code: 'Noto Sans Japanese', name: `"Noto Sans JP", sans-serif`, url: '/fonts/NotoSansJapanese.woff2' },
27
- { code: 'Noto Sans Korean', name: `"Noto Sans KR", sans-serif`, url: '/fonts/NotoSansKorean.woff2' },
28
- { code: 'Poppins', name: `"Poppins", sans-serif`, url: '/fonts/Poppins.woff2' }
29
- ];
30
- const FONT_KEY = 'OPEN_FONTS';
31
- const FONT_VERSION_KEY = 'OPEN_FONTS_VERSION';
32
- class FontManager {
33
- constructor() {
34
- this.fontList = [];
35
- this.skipLoadFonts = exports.defaultFonts.map((value) => value.name);
36
- this.loadFonts = exports.defaultFonts;
37
- this.initFonts();
38
- }
39
- async initFonts() {
40
- let list = [];
41
- if (typeof localStorage !== 'undefined') {
42
- if (localStorage.getItem(FONT_VERSION_KEY) !== '1') {
43
- localStorage.removeItem(FONT_KEY);
44
- }
45
- let localFonts = [];
46
- try {
47
- const storedFonts = localStorage.getItem(FONT_KEY);
48
- localFonts = storedFonts ? JSON.parse(storedFonts) : [];
49
- }
50
- catch {
51
- localFonts = [];
52
- localStorage.removeItem(FONT_KEY);
53
- }
54
- if (localFonts.length > 0) {
55
- list.push(...localFonts);
56
- }
57
- }
58
- this.fontList = exports.defaultFonts.concat(list);
59
- return list;
60
- }
61
- getFontList() {
62
- return this.fontList;
63
- }
64
- getSkipLoadFonts() {
65
- return this.skipLoadFonts;
66
- }
67
- getLoadFonts() {
68
- return this.loadFonts;
69
- }
70
- }
71
- exports.FontManager = FontManager;
72
- exports.fontManager = new FontManager();
@@ -1,9 +0,0 @@
1
- export declare function fetchFontAsBase64(url: string): Promise<string>;
2
- export declare function addCustomFonts(fontList?: any): void;
3
- export declare function getCustomFontsStyle(): string;
4
- export declare function addCustomFont(font: any): void;
5
- export declare function batchLoadFont(fontNameList?: any): Promise<void>;
6
- export declare function addCustomFontBase64(font: any): Promise<void>;
7
- export declare function getBase64CustomFontsStyle(): string;
8
- export declare function loadFont(font: string): Promise<void>;
9
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fonts/utils.ts"],"names":[],"mappings":"AAGA,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsCpE;AAgBD,wBAAgB,cAAc,CAAC,QAAQ,GAAE,GAAQ,QAShD;AAKD,wBAAgB,mBAAmB,WAGlC;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,QAgCtC;AAMD,wBAAsB,aAAa,CAAC,YAAY,GAAE,GAAQ,iBAUzD;AAyCD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,GAAG,iBA6ClD;AAKD,wBAAgB,yBAAyB,WAGxC;AAOD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D"}