@zero-library/common 2.0.6 → 2.0.8

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/dist/index.cjs.js CHANGED
@@ -44,6 +44,7 @@ var TiptapLink = require('@tiptap/extension-link');
44
44
  var state = require('@tiptap/pm/state');
45
45
  var view = require('@tiptap/pm/view');
46
46
  var react$1 = require('@floating-ui/react');
47
+ var TurndownService = require('turndown');
47
48
  var core = require('@tiptap/core');
48
49
 
49
50
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -82,6 +83,7 @@ var TableCell__default = /*#__PURE__*/_interopDefault(TableCell);
82
83
  var TableHeader__default = /*#__PURE__*/_interopDefault(TableHeader);
83
84
  var TableRow__default = /*#__PURE__*/_interopDefault(TableRow);
84
85
  var TiptapLink__default = /*#__PURE__*/_interopDefault(TiptapLink);
86
+ var TurndownService__default = /*#__PURE__*/_interopDefault(TurndownService);
85
87
 
86
88
  // src/components/File/styles.module.less
87
89
  var styles_module_default = {
@@ -701,6 +703,7 @@ var downloadFile = (url, name) => {
701
703
  document.body.appendChild(a);
702
704
  a.click();
703
705
  document.body.removeChild(a);
706
+ window.URL.revokeObjectURL(url);
704
707
  };
705
708
  var addUrlLastSlash = (url = "") => {
706
709
  const u = new URL(url, "https://logosdata.cn");
@@ -1018,6 +1021,9 @@ axios__default.default.interceptors.request.use(
1018
1021
  );
1019
1022
  axios__default.default.interceptors.response.use(
1020
1023
  function(response) {
1024
+ if (isBlob(response.data)) {
1025
+ return response;
1026
+ }
1021
1027
  if (response.data?.code !== OK && response.data?.code !== OK2) {
1022
1028
  const isPermission = response.data?.code === PERMISSION_DENIED;
1023
1029
  if (response.config?.showError !== false) {
@@ -4947,6 +4953,7 @@ var SearchAndReplace = core.Extension.create({
4947
4953
  }
4948
4954
  });
4949
4955
  var searchAndReplace_default = SearchAndReplace;
4956
+ var turndown = new TurndownService__default.default();
4950
4957
  var MainToolbarContent = ({
4951
4958
  onHighlighterClick,
4952
4959
  onLinkClick,
@@ -5006,7 +5013,7 @@ var MobileToolbarContent = ({ type, onBack }) => /* @__PURE__ */ jsxRuntime.jsxs
5006
5013
  /* @__PURE__ */ jsxRuntime.jsx(ToolbarSeparator, {}),
5007
5014
  type === "highlighter" ? /* @__PURE__ */ jsxRuntime.jsx(HighlightContent, {}) : /* @__PURE__ */ jsxRuntime.jsx(LinkContent, {})
5008
5015
  ] });
5009
- var MarkdownEditor_default = ({ value = "", onChange, onScrollPage, searchValue, disabled, extraNav, showToolbar = true, onQuote }) => {
5016
+ var MarkdownEditor_default = ({ value = "", onChange, onScrollPage, searchValue, disabled, extraNav, showToolbar = true, onQuote, onDownloadFile }) => {
5010
5017
  const isMobile = useMobile();
5011
5018
  const windowSize = useWindowSize();
5012
5019
  const lastContentRef = React16.useRef("");
@@ -5067,13 +5074,17 @@ var MarkdownEditor_default = ({ value = "", onChange, onScrollPage, searchValue,
5067
5074
  // })
5068
5075
  ],
5069
5076
  content: "",
5070
- onUpdate: ({ editor: editor2 }) => {
5071
- const markdownOutput = editor2.storage.markdown.getMarkdown();
5077
+ onUpdate: () => {
5078
+ const markdownOutput = getMarkdown();
5072
5079
  if (markdownOutput === lastContentRef.current) return;
5073
5080
  lastContentRef.current = markdownOutput;
5074
5081
  onChange?.(markdownOutput);
5075
5082
  }
5076
5083
  });
5084
+ const getMarkdown = () => {
5085
+ if (!editor) return "";
5086
+ return turndown.turndown(editor.getHTML());
5087
+ };
5077
5088
  const bodyRect = useCursorVisibility({
5078
5089
  editor,
5079
5090
  overlayHeight: toolbarRef.current?.getBoundingClientRect().height ?? 0
@@ -5181,11 +5192,17 @@ var MarkdownEditor_default = ({ value = "", onChange, onScrollPage, searchValue,
5181
5192
  ) : /* @__PURE__ */ jsxRuntime.jsx(MobileToolbarContent, { type: mobileView === "highlighter" ? "highlighter" : "link", onBack: () => setMobileView("main") })
5182
5193
  }
5183
5194
  ) });
5195
+ const downloadFile2 = () => {
5196
+ onDownloadFile?.(getMarkdown(), "docx");
5197
+ };
5184
5198
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: classNames2__default.default("height-full", "editor-parent"), children: /* @__PURE__ */ jsxRuntime.jsxs(react.EditorContext.Provider, { value: { editor }, children: [
5185
5199
  showToolbar && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5186
5200
  /* @__PURE__ */ jsxRuntime.jsxs(antd.Flex, { justify: "end", align: "center", children: [
5187
5201
  NsToolBar({ isBubble: false }),
5188
- extraNav && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "m-l-16 m-r-16", children: extraNav })
5202
+ extraNav && /* @__PURE__ */ jsxRuntime.jsxs(antd.Flex, { align: "center", className: "m-l-16 m-r-16", children: [
5203
+ onDownloadFile && /* @__PURE__ */ jsxRuntime.jsx(antd.Tag, { bordered: false, color: "default", className: "cursor-pointer", onClick: downloadFile2, children: "\u4E0B\u8F7D" }),
5204
+ extraNav
5205
+ ] })
5189
5206
  ] }),
5190
5207
  !isMobile && /* @__PURE__ */ jsxRuntime.jsx(react.BubbleMenu, { editor, children: NsToolBar({ isBubble: true }) })
5191
5208
  ] }),