@lingxiteam/lcdp-ueditor-react 1.0.3-alpha.8 → 1.0.4-alpha.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.
Files changed (109) hide show
  1. package/es/LcdpUeditor.d.ts +10 -4
  2. package/es/LcdpUeditor.d.ts.map +1 -0
  3. package/es/LcdpUeditor.js +77 -11
  4. package/es/ToolBottomBar/FormatModal/index.d.ts +9 -0
  5. package/es/ToolBottomBar/FormatModal/index.d.ts.map +1 -0
  6. package/es/ToolBottomBar/FormatModal/index.js +543 -0
  7. package/es/ToolBottomBar/FormatModal/index.less +276 -0
  8. package/es/ToolBottomBar/ProgressModal/index.d.ts +10 -0
  9. package/es/ToolBottomBar/ProgressModal/index.d.ts.map +1 -0
  10. package/es/ToolBottomBar/ProgressModal/index.js +53 -0
  11. package/es/ToolBottomBar/ProgressModal/index.less +16 -0
  12. package/es/ToolBottomBar/index.d.ts +33 -0
  13. package/es/ToolBottomBar/index.d.ts.map +1 -0
  14. package/es/ToolBottomBar/index.js +296 -0
  15. package/es/ToolBottomBar/index.less +75 -0
  16. package/es/const.d.ts.map +1 -0
  17. package/es/icon/ExportPDF.d.ts +3 -0
  18. package/es/icon/ExportPDF.d.ts.map +1 -0
  19. package/es/icon/ExportPDF.js +24 -0
  20. package/es/icon/TextCopy.d.ts +3 -0
  21. package/es/icon/TextCopy.d.ts.map +1 -0
  22. package/es/icon/TextCopy.js +25 -0
  23. package/es/icon/TextFileIcon.d.ts +3 -0
  24. package/es/icon/TextFileIcon.d.ts.map +1 -0
  25. package/es/icon/TextFileIcon.js +26 -0
  26. package/es/icon/TextIcon.d.ts +3 -0
  27. package/es/icon/TextIcon.d.ts.map +1 -0
  28. package/es/icon/TextIcon.js +28 -0
  29. package/es/index.d.ts.map +1 -0
  30. package/es/tools/UeditorResourceLoader.d.ts.map +1 -0
  31. package/es/tools/exportPDF.d.ts +27 -0
  32. package/es/tools/exportPDF.d.ts.map +1 -0
  33. package/es/tools/exportPDF.js +146 -0
  34. package/es/tools/filterHtmlNode.d.ts.map +1 -0
  35. package/es/tools/generateStylesFromSettings.d.ts +38 -0
  36. package/es/tools/generateStylesFromSettings.d.ts.map +1 -0
  37. package/es/tools/generateStylesFromSettings.js +24 -0
  38. package/es/tools/loadScript.d.ts.map +1 -0
  39. package/es/type.d.ts +21 -0
  40. package/es/type.d.ts.map +1 -0
  41. package/lib/LcdpUeditor.d.ts +10 -4
  42. package/lib/LcdpUeditor.js +62 -8
  43. package/lib/ToolBottomBar/FormatModal/index.d.ts +9 -0
  44. package/lib/ToolBottomBar/FormatModal/index.js +261 -0
  45. package/lib/ToolBottomBar/FormatModal/index.less +276 -0
  46. package/lib/ToolBottomBar/ProgressModal/index.d.ts +10 -0
  47. package/lib/ToolBottomBar/ProgressModal/index.js +73 -0
  48. package/lib/ToolBottomBar/ProgressModal/index.less +16 -0
  49. package/lib/ToolBottomBar/index.d.ts +33 -0
  50. package/lib/ToolBottomBar/index.js +235 -0
  51. package/lib/ToolBottomBar/index.less +75 -0
  52. package/lib/icon/ExportPDF.d.ts +3 -0
  53. package/lib/icon/ExportPDF.js +57 -0
  54. package/lib/icon/TextCopy.d.ts +3 -0
  55. package/lib/icon/TextCopy.js +39 -0
  56. package/lib/icon/TextFileIcon.d.ts +3 -0
  57. package/lib/icon/TextFileIcon.js +39 -0
  58. package/lib/icon/TextIcon.d.ts +3 -0
  59. package/lib/icon/TextIcon.js +39 -0
  60. package/lib/tools/exportPDF.d.ts +27 -0
  61. package/lib/tools/exportPDF.js +95 -0
  62. package/lib/tools/generateStylesFromSettings.d.ts +38 -0
  63. package/lib/tools/generateStylesFromSettings.js +77 -0
  64. package/lib/type.d.ts +21 -0
  65. package/package.json +8 -3
  66. package/ueditor-resource/dialogs/anchor/anchor.html +1 -1
  67. package/ueditor-resource/dialogs/attachment/attachment.html +3 -3
  68. package/ueditor-resource/dialogs/attachment/attachment.js +1 -1
  69. package/ueditor-resource/dialogs/audio/audio.js +1 -1
  70. package/ueditor-resource/dialogs/background/background.html +2 -2
  71. package/ueditor-resource/dialogs/background/background.js +1 -1
  72. package/ueditor-resource/dialogs/contentimport/contentimport.html +3 -3
  73. package/ueditor-resource/dialogs/contentimport/contentimport.js +1 -1
  74. package/ueditor-resource/dialogs/emotion/emotion.html +2 -2
  75. package/ueditor-resource/dialogs/emotion/emotion.js +1 -1
  76. package/ueditor-resource/dialogs/formula/formula.html +4 -4
  77. package/ueditor-resource/dialogs/formula/formula.js +1 -1
  78. package/ueditor-resource/dialogs/help/help.html +2 -2
  79. package/ueditor-resource/dialogs/help/help.js +1 -1
  80. package/ueditor-resource/dialogs/image/image.js +1 -1
  81. package/ueditor-resource/dialogs/insertframe/insertframe.html +1 -1
  82. package/ueditor-resource/dialogs/internal.js +1 -1
  83. package/ueditor-resource/dialogs/preview/preview.html +2 -2
  84. package/ueditor-resource/dialogs/scrawl/scrawl.html +2 -2
  85. package/ueditor-resource/dialogs/scrawl/scrawl.js +1 -1
  86. package/ueditor-resource/dialogs/searchreplace/searchreplace.html +2 -2
  87. package/ueditor-resource/dialogs/searchreplace/searchreplace.js +1 -1
  88. package/ueditor-resource/dialogs/spechars/spechars.html +2 -2
  89. package/ueditor-resource/dialogs/spechars/spechars.js +1 -1
  90. package/ueditor-resource/dialogs/table/edittable.html +2 -2
  91. package/ueditor-resource/dialogs/table/edittable.js +1 -1
  92. package/ueditor-resource/dialogs/table/edittd.html +1 -1
  93. package/ueditor-resource/dialogs/table/edittip.html +1 -1
  94. package/ueditor-resource/dialogs/template/template.html +2 -2
  95. package/ueditor-resource/dialogs/template/template.js +1 -1
  96. package/ueditor-resource/dialogs/video/video.js +1 -1
  97. package/ueditor-resource/dialogs/wordimage/wordimage.html +4 -4
  98. package/ueditor-resource/dialogs/wordimage/wordimage.js +1 -1
  99. package/ueditor-resource/plugins/browser-image-compression.js +9 -0
  100. package/ueditor-resource/plugins/demo/demo.js +3 -1
  101. package/ueditor-resource/themes/default/css/ueditor.css +1 -1
  102. package/ueditor-resource/third-party/SyntaxHighlighter/shCore.js +3 -3
  103. package/ueditor-resource/third-party/clipboard/clipboard.js +1 -1
  104. package/ueditor-resource/third-party/codemirror/codemirror.js +3 -2
  105. package/ueditor-resource/third-party/jquery-3.5.1.js +3 -3
  106. package/ueditor-resource/third-party/jquery-3.5.1_1.js +3 -3
  107. package/ueditor-resource/ueditor.all.js +22 -19
  108. package/ueditor-resource/ueditor.config.js +1 -1
  109. package/ueditor-resource/ueditor.parse.js +1 -1
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import './index.less';
3
+ export interface ProgressModalRef {
4
+ updateProgress: (progress: number, title?: string) => void;
5
+ updateVisible: (open: boolean) => void;
6
+ }
7
+ export interface ProgressModalProps {
8
+ }
9
+ declare const ProgressModal: React.ForwardRefExoticComponent<ProgressModalProps & React.RefAttributes<ProgressModalRef>>;
10
+ export default ProgressModal;
@@ -0,0 +1,73 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/ToolBottomBar/ProgressModal/index.tsx
30
+ var ProgressModal_exports = {};
31
+ __export(ProgressModal_exports, {
32
+ default: () => ProgressModal_default
33
+ });
34
+ module.exports = __toCommonJS(ProgressModal_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_antd = require("antd");
37
+ var import_index = require("./index.less");
38
+ var suffixCls = "ueditor-progress-modal";
39
+ var ProgressModal = (0, import_react.forwardRef)((props, ref) => {
40
+ const [visible, setVisible] = (0, import_react.useState)(false);
41
+ const [progress, setProgress] = (0, import_react.useState)(0);
42
+ const [title, setTitle] = (0, import_react.useState)("准备中...");
43
+ (0, import_react.useImperativeHandle)(ref, () => ({
44
+ updateProgress: (newProgress, title2) => {
45
+ if (!visible) {
46
+ setVisible(true);
47
+ }
48
+ setProgress(newProgress);
49
+ if (title2) {
50
+ setTitle(title2);
51
+ }
52
+ },
53
+ updateVisible: (open) => {
54
+ setVisible(open);
55
+ }
56
+ }));
57
+ return /* @__PURE__ */ import_react.default.createElement(
58
+ import_antd.Modal,
59
+ {
60
+ title: null,
61
+ visible,
62
+ footer: null,
63
+ closable: false,
64
+ maskClosable: false,
65
+ wrapClassName: suffixCls
66
+ },
67
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${suffixCls}-title` }, "正在生成PDF文件..."),
68
+ /* @__PURE__ */ import_react.default.createElement(import_antd.Progress, { percent: progress, status: "active", showInfo: false }),
69
+ title && /* @__PURE__ */ import_react.default.createElement("div", { className: `${suffixCls}-sub-title` }, title, " ", progress, "%")
70
+ );
71
+ });
72
+ ProgressModal.displayName = "ProgressModal";
73
+ var ProgressModal_default = ProgressModal;
@@ -0,0 +1,16 @@
1
+ @suffixCls: ~'ueditor-progress-modal';
2
+
3
+ .@{suffixCls} {
4
+ &-title {
5
+ font-size: 16px;
6
+ font-weight: 500;
7
+ margin-bottom: 12px;
8
+ color: #333;
9
+ }
10
+ &-sub-title {
11
+ font-size: 14px;
12
+ color: #666;
13
+ text-align: center;
14
+ margin-top: 8px;
15
+ }
16
+ }
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { FormatSettings } from '../tools/generateStylesFromSettings';
3
+ import './index.less';
4
+ import { ILcdpUeditorProps } from '../type';
5
+ declare const ToolBottomBar: (props: {
6
+ /**
7
+ * 编辑器实例
8
+ */
9
+ ueditorInst: any;
10
+ /**
11
+ * 前缀类名
12
+ */
13
+ prefixCls?: string | undefined;
14
+ /**
15
+ * 容器引用
16
+ */
17
+ containerRef?: React.RefObject<HTMLDivElement> | undefined;
18
+ defaultFormatSetting?: FormatSettings | undefined;
19
+ onFormatChange?: ((val: FormatSettings) => void) | undefined;
20
+ /**
21
+ * 是否准备就绪
22
+ */
23
+ isReady?: boolean | undefined;
24
+ /**
25
+ * 底部功能类型
26
+ */
27
+ bottomTypes?: ILcdpUeditorProps['bottomTypes'];
28
+ /**
29
+ * 导出文件名
30
+ */
31
+ exportFileName?: string | undefined;
32
+ }) => JSX.Element;
33
+ export default ToolBottomBar;
@@ -0,0 +1,235 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/ToolBottomBar/index.tsx
30
+ var ToolBottomBar_exports = {};
31
+ __export(ToolBottomBar_exports, {
32
+ default: () => ToolBottomBar_default
33
+ });
34
+ module.exports = __toCommonJS(ToolBottomBar_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_debounce = __toESM(require("lodash/debounce"));
37
+ var import_icons = __toESM(require("@ant-design/icons"));
38
+ var import_antd = require("antd");
39
+ var import_ExportPDF = __toESM(require("../icon/ExportPDF"));
40
+ var import_TextFileIcon = __toESM(require("../icon/TextFileIcon"));
41
+ var import_TextIcon = __toESM(require("../icon/TextIcon"));
42
+ var import_TextCopy = __toESM(require("../icon/TextCopy"));
43
+ var import_exportPDF = require("../tools/exportPDF");
44
+ var import_FormatModal = __toESM(require("./FormatModal"));
45
+ var import_generateStylesFromSettings = require("../tools/generateStylesFromSettings");
46
+ var import_index = require("./index.less");
47
+ var import_ProgressModal = __toESM(require("./ProgressModal"));
48
+ var MENU_OPTIONS = {
49
+ a3: "A3",
50
+ a4: "A4",
51
+ a5: "A5",
52
+ a0: "铺满"
53
+ };
54
+ var STYLE_ID = "ueditor-custom-styles";
55
+ var ToolBottomBar = (props) => {
56
+ const { ueditorInst, prefixCls, containerRef, defaultFormatSetting, onFormatChange, isReady, bottomTypes, exportFileName } = props;
57
+ const { id: uiId } = ueditorInst.ui || {};
58
+ const [chineseTextCount, setChineseTextCount] = (0, import_react.useState)(0);
59
+ const [totalTextCount, setTotalTextCount] = (0, import_react.useState)(0);
60
+ const [innerFullScreen, setInnerFullScreen] = (0, import_react.useState)(false);
61
+ const [isCopying, setIsCopying] = (0, import_react.useState)(false);
62
+ const [pageWidth, setPageWidth] = (0, import_react.useState)(void 0);
63
+ const timer = (0, import_react.useRef)(void 0);
64
+ const progressModalRef = (0, import_react.useRef)(null);
65
+ const debounceContentChange = (0, import_debounce.default)(() => {
66
+ var _a;
67
+ try {
68
+ const plainTxt = ueditorInst.getContentTxt() || "";
69
+ const chineseTextCount2 = ((_a = plainTxt.match(/[\u4e00-\u9fa5]/g)) == null ? void 0 : _a.length) || 0;
70
+ const totalTextCount2 = plainTxt.length;
71
+ setChineseTextCount(chineseTextCount2);
72
+ setTotalTextCount(totalTextCount2);
73
+ } catch (e) {
74
+ }
75
+ }, 300);
76
+ (0, import_react.useEffect)(() => {
77
+ if (isReady) {
78
+ ueditorInst.addListener("beforefullscreenchange", (_, v) => {
79
+ setInnerFullScreen(v);
80
+ });
81
+ ueditorInst.addListener("contentChange", () => {
82
+ debounceContentChange();
83
+ });
84
+ setTimeout(() => {
85
+ debounceContentChange();
86
+ }, 1e3);
87
+ }
88
+ }, [ueditorInst, isReady]);
89
+ (0, import_react.useEffect)(() => {
90
+ return () => {
91
+ if (timer.current) {
92
+ clearTimeout(timer.current);
93
+ }
94
+ };
95
+ }, []);
96
+ const getStatusBarItem = (params) => {
97
+ const { icon, content, onClick, extraNode, className = "" } = params;
98
+ return /* @__PURE__ */ import_react.default.createElement("span", { className: `ueditor-rich-status-bar-item ${className}`, onClick }, /* @__PURE__ */ import_react.default.createElement("span", { className: "ueditor-rich-status-bar-icon" }, icon), /* @__PURE__ */ import_react.default.createElement("span", { className: "ueditor-rich-status-bar-content" }, content), extraNode && /* @__PURE__ */ import_react.default.createElement("span", { className: "ueditor-rich-status-bar-extra" }, extraNode));
99
+ };
100
+ const copyAll = () => {
101
+ const txt = ueditorInst.getPlainTxt();
102
+ const copy = (t) => {
103
+ const input = document.createElement("textarea");
104
+ input.value = t;
105
+ document.body.appendChild(input);
106
+ input.select();
107
+ document.execCommand("copy");
108
+ document.body.removeChild(input);
109
+ setIsCopying(true);
110
+ };
111
+ if (txt) {
112
+ try {
113
+ navigator.clipboard.writeText(txt).then(() => {
114
+ setIsCopying(true);
115
+ }).catch(() => {
116
+ copy(txt);
117
+ });
118
+ } catch (e) {
119
+ copy(txt);
120
+ }
121
+ timer.current = setTimeout(() => {
122
+ setIsCopying(false);
123
+ }, 1e3);
124
+ }
125
+ };
126
+ const handleApply = (settings, isUpdate = true) => {
127
+ var _a, _b, _c;
128
+ const cssStyles = (0, import_generateStylesFromSettings.generateStylesFromSettings)(settings);
129
+ const frame = ueditorInst.frame || ((_a = containerRef == null ? void 0 : containerRef.current) == null ? void 0 : _a.querySelector(`#${uiId}_iframeholder > iframe`));
130
+ if ((_b = frame == null ? void 0 : frame.contentDocument) == null ? void 0 : _b.documentElement) {
131
+ let styleEl = (_c = frame == null ? void 0 : frame.contentDocument) == null ? void 0 : _c.getElementById(STYLE_ID);
132
+ if (!styleEl) {
133
+ styleEl = document.createElement("style");
134
+ styleEl.id = STYLE_ID;
135
+ frame.contentDocument.head.appendChild(styleEl);
136
+ }
137
+ styleEl.textContent = cssStyles;
138
+ }
139
+ if (isUpdate) {
140
+ onFormatChange == null ? void 0 : onFormatChange(settings);
141
+ }
142
+ };
143
+ (0, import_react.useEffect)(() => {
144
+ if (defaultFormatSetting) {
145
+ handleApply(defaultFormatSetting, false);
146
+ }
147
+ }, [defaultFormatSetting]);
148
+ const onProgress = (progress, title) => {
149
+ var _a;
150
+ (_a = progressModalRef.current) == null ? void 0 : _a.updateProgress(progress, title);
151
+ };
152
+ return /* @__PURE__ */ import_react.default.createElement(import_antd.ConfigProvider, { prefixCls }, /* @__PURE__ */ import_react.default.createElement("div", { className: "ueditor-rich-status-bar" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "ueditor-rich-status-bar-box" }, (bottomTypes == null ? void 0 : bottomTypes.includes("charCount")) && getStatusBarItem({
153
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.default, { component: import_TextIcon.default, className: "ueditor-rich-status-bar-icon-svg" }),
154
+ content: `${totalTextCount} 字符`,
155
+ className: "ueditor-rich-status-bar-text"
156
+ }), (bottomTypes == null ? void 0 : bottomTypes.includes("chineseCount")) && getStatusBarItem({
157
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.default, { component: import_TextFileIcon.default, className: "ueditor-rich-status-bar-icon-svg" }),
158
+ content: `${chineseTextCount} 中文`,
159
+ className: "ueditor-rich-status-bar-text"
160
+ })), /* @__PURE__ */ import_react.default.createElement("div", { className: "ueditor-rich-status-bar-box" }, (bottomTypes == null ? void 0 : bottomTypes.includes("pageWidth")) && /* @__PURE__ */ import_react.default.createElement(
161
+ import_antd.Dropdown,
162
+ {
163
+ trigger: ["click"],
164
+ overlay: /* @__PURE__ */ import_react.default.createElement(
165
+ import_antd.Menu,
166
+ {
167
+ onClick: ({ key }) => {
168
+ const newClass = `ueditor-rich-status-content-${key}`;
169
+ const oldClass = `ueditor-rich-status-content-${pageWidth}`;
170
+ if (containerRef == null ? void 0 : containerRef.current) {
171
+ const frame = containerRef.current.querySelector(`#${uiId}_iframeholder`);
172
+ const frameContainer = ueditorInst.container || containerRef.current.querySelector(`#${uiId}`);
173
+ if (frame) {
174
+ frame.classList.remove(oldClass);
175
+ frame.classList.add(newClass);
176
+ }
177
+ if (frameContainer) {
178
+ if (key === "a0") {
179
+ frameContainer.classList.remove("ueditor-rich-status-not-full");
180
+ } else {
181
+ frameContainer.classList.add("ueditor-rich-status-not-full");
182
+ }
183
+ }
184
+ }
185
+ setPageWidth(key);
186
+ }
187
+ },
188
+ Object.keys(MENU_OPTIONS).map((k) => /* @__PURE__ */ import_react.default.createElement(import_antd.Menu.Item, { key: k }, /* @__PURE__ */ import_react.default.createElement("span", null, "页面宽度 ", MENU_OPTIONS[k])))
189
+ )
190
+ },
191
+ getStatusBarItem({
192
+ content: `页面宽度${pageWidth ? ` ${MENU_OPTIONS[pageWidth]}` : ""}`,
193
+ extraNode: /* @__PURE__ */ import_react.default.createElement(import_icons.DownOutlined, null)
194
+ })
195
+ ), (bottomTypes == null ? void 0 : bottomTypes.includes("formatSetting")) && /* @__PURE__ */ import_react.default.createElement(
196
+ import_FormatModal.default,
197
+ {
198
+ onApply: handleApply,
199
+ initialSettings: defaultFormatSetting
200
+ },
201
+ getStatusBarItem({
202
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.SettingOutlined, null),
203
+ content: "格式设置"
204
+ })
205
+ ), (bottomTypes == null ? void 0 : bottomTypes.includes("copy")) && getStatusBarItem({
206
+ icon: isCopying ? /* @__PURE__ */ import_react.default.createElement(import_icons.CheckOutlined, null) : /* @__PURE__ */ import_react.default.createElement(import_icons.default, { component: import_TextCopy.default, className: "ueditor-rich-status-bar-icon-svg" }),
207
+ content: "复制全文",
208
+ onClick: copyAll,
209
+ className: isCopying ? "isActive" : void 0
210
+ }), (bottomTypes == null ? void 0 : bottomTypes.includes("fullScreen")) && getStatusBarItem({
211
+ icon: innerFullScreen ? /* @__PURE__ */ import_react.default.createElement(import_icons.FullscreenExitOutlined, null) : /* @__PURE__ */ import_react.default.createElement(import_icons.FullscreenOutlined, null),
212
+ content: innerFullScreen ? "退出全屏" : "全屏预览",
213
+ onClick: () => {
214
+ ueditorInst.ui.setFullScreen(!innerFullScreen);
215
+ }
216
+ }), (bottomTypes == null ? void 0 : bottomTypes.includes("exportPdf")) && getStatusBarItem({
217
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.default, { component: import_ExportPDF.default, className: "ueditor-rich-status-bar-icon-svg" }),
218
+ content: "导出文档",
219
+ onClick: async () => {
220
+ var _a, _b;
221
+ if (containerRef == null ? void 0 : containerRef.current) {
222
+ const frame = ueditorInst.frame || containerRef.current.querySelector(`#${uiId}_iframeholder > iframe`);
223
+ if ((_a = frame == null ? void 0 : frame.contentDocument) == null ? void 0 : _a.body) {
224
+ await (0, import_exportPDF.domloadPdf)((_b = frame == null ? void 0 : frame.contentDocument) == null ? void 0 : _b.body, pageWidth || "a0", exportFileName, onProgress);
225
+ onProgress(100, "导出完成");
226
+ }
227
+ setTimeout(() => {
228
+ var _a2;
229
+ (_a2 = progressModalRef.current) == null ? void 0 : _a2.updateVisible(false);
230
+ }, 500);
231
+ }
232
+ }
233
+ }), /* @__PURE__ */ import_react.default.createElement(import_ProgressModal.default, { ref: progressModalRef }))));
234
+ };
235
+ var ToolBottomBar_default = ToolBottomBar;
@@ -0,0 +1,75 @@
1
+ .ueditor-bottom-bar-with-status {
2
+ .edui-default {
3
+ display: none;
4
+ }
5
+ }
6
+ .ueditor-rich-status-bar {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: space-between;
10
+ padding: 4px 12px;
11
+ background-color: #f0f0f0;
12
+ border-top: 1px solid #e0e0e0;
13
+ min-height: 32px;
14
+ .ueditor-rich-status-bar-box {
15
+ display: flex;
16
+ gap: 16px;
17
+ color: #666;
18
+ .ueditor-rich-status-bar-item:not(.ueditor-rich-status-bar-text) {
19
+ display: flex;
20
+ align-items: center;
21
+ cursor: pointer;
22
+ border-radius: 4px;
23
+ padding: 4px 10px;
24
+ &:hover {
25
+ background-color: rgba(0, 0, 0, 0.05);
26
+ color: #1a73e8;
27
+ }
28
+ &.isActive {
29
+ color: #52c41a;
30
+ }
31
+ }
32
+ .ueditor-rich-status-bar-text {
33
+ display: flex;
34
+ align-items: center;
35
+ }
36
+ .ueditor-rich-status-bar-icon {
37
+ margin-right: 4px;
38
+ font-size: 14px;
39
+ display: flex;
40
+ align-items: center;
41
+ }
42
+ .ueditor-rich-status-bar-extra {
43
+ margin-left: 12px;
44
+ color: rgba(0, 0, 0, 0.25);
45
+ font-size: 12px;
46
+ display: flex;
47
+ align-items: center;
48
+ }
49
+ }
50
+ }
51
+
52
+ .edui-default .edui-editor {
53
+ &.ueditor-rich-status-not-full {
54
+ background-color: #fafbfc;
55
+ .edui-editor-iframeholder {
56
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
57
+ margin: 20px auto;
58
+ background-color: #fff;
59
+ }
60
+ }
61
+ }
62
+
63
+ .edui-default .edui-editor-iframeholder {
64
+ &.ueditor-rich-status-content {
65
+ &-a3 {
66
+ width: 80% !important;
67
+ }
68
+ &-a4 {
69
+ width: 60% !important;
70
+ }
71
+ &-a5 {
72
+ width: 40% !important;
73
+ }
74
+ }
75
+ }
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const ExportFile: () => JSX.Element;
3
+ export default ExportFile;
@@ -0,0 +1,57 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/icon/ExportPDF.tsx
30
+ var ExportPDF_exports = {};
31
+ __export(ExportPDF_exports, {
32
+ default: () => ExportPDF_default
33
+ });
34
+ module.exports = __toCommonJS(ExportPDF_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var ExportFile = () => {
37
+ return /* @__PURE__ */ import_react.default.createElement(
38
+ "svg",
39
+ {
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ width: "14",
42
+ height: "14",
43
+ viewBox: "0 0 24 24",
44
+ fill: "none",
45
+ stroke: "currentColor",
46
+ strokeWidth: "2",
47
+ strokeLinecap: "round",
48
+ strokeLinejoin: "round",
49
+ className: "lucide lucide-file-down"
50
+ },
51
+ /* @__PURE__ */ import_react.default.createElement("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
52
+ /* @__PURE__ */ import_react.default.createElement("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" }),
53
+ /* @__PURE__ */ import_react.default.createElement("path", { d: "M12 18v-6" }),
54
+ /* @__PURE__ */ import_react.default.createElement("path", { d: "m9 15 3 3 3-3" })
55
+ );
56
+ };
57
+ var ExportPDF_default = ExportFile;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const TextIcon: () => JSX.Element;
3
+ export default TextIcon;
@@ -0,0 +1,39 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/icon/TextCopy.tsx
30
+ var TextCopy_exports = {};
31
+ __export(TextCopy_exports, {
32
+ default: () => TextCopy_default
33
+ });
34
+ module.exports = __toCommonJS(TextCopy_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var TextIcon = () => {
37
+ return /* @__PURE__ */ import_react.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-copy" }, /* @__PURE__ */ import_react.default.createElement("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" }));
38
+ };
39
+ var TextCopy_default = TextIcon;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const TextIcon: () => JSX.Element;
3
+ export default TextIcon;
@@ -0,0 +1,39 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/icon/TextFileIcon.tsx
30
+ var TextFileIcon_exports = {};
31
+ __export(TextFileIcon_exports, {
32
+ default: () => TextFileIcon_default
33
+ });
34
+ module.exports = __toCommonJS(TextFileIcon_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var TextIcon = () => {
37
+ return /* @__PURE__ */ import_react.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-file-text" }, /* @__PURE__ */ import_react.default.createElement("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M10 9H8" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M16 13H8" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M16 17H8" }));
38
+ };
39
+ var TextFileIcon_default = TextIcon;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const TextIcon: () => JSX.Element;
3
+ export default TextIcon;
@@ -0,0 +1,39 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/icon/TextIcon.tsx
30
+ var TextIcon_exports = {};
31
+ __export(TextIcon_exports, {
32
+ default: () => TextIcon_default
33
+ });
34
+ module.exports = __toCommonJS(TextIcon_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var TextIcon = () => {
37
+ return /* @__PURE__ */ import_react.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-type" }, /* @__PURE__ */ import_react.default.createElement("polyline", { points: "4 7 4 4 20 4 20 7" }), /* @__PURE__ */ import_react.default.createElement("line", { x1: "9", x2: "15", y1: "20", y2: "20" }), /* @__PURE__ */ import_react.default.createElement("line", { x1: "12", x2: "12", y1: "4", y2: "20" }));
38
+ };
39
+ var TextIcon_default = TextIcon;