vap1 0.3.6 → 0.3.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/components/Box/SelectBar.d.ts +4 -0
- package/components/Box/SelectBar.js +1 -1
- package/components/SearchBar/ByField.d.ts +6 -3
- package/components/SearchBar/ByField.js +5 -5
- package/components/SearchBar/ByKeyword.js +7 -1
- package/components/UForm/_input.js +2 -2
- package/components/Upload/UploadImage.d.ts +1 -0
- package/components/Upload/UploadImage.js +6 -5
- package/components/_adapt/Tabs.d.ts +15 -0
- package/components/_adapt/Tabs.js +38 -3
- package/components/_common/CountUp.d.ts +3 -1
- package/components/_common/CountUp.js +5 -1
- package/deps/app-audit/ESTable.js +1 -0
- package/deps/app-audit/LookUp.d.ts +27 -0
- package/deps/app-audit/LookUp.js +324 -0
- package/deps/app-audit/index.d.ts +1 -0
- package/deps/app-audit/index.js +7 -0
- package/deps/app-data/Const.d.ts +6 -0
- package/deps/app-data/Const.js +10 -0
- package/deps/app-data/SourceTable.js +137 -0
- package/deps/{apis → app-data}/useSource.js +18 -8
- package/deps/editor/Article.d.ts +20 -0
- package/deps/editor/Article.js +53 -0
- package/deps/editor/Editor.d.ts +43 -0
- package/deps/editor/Editor.js +110 -0
- package/deps/editor/EditorModal.d.ts +32 -0
- package/deps/editor/EditorModal.js +89 -0
- package/deps/editor/index.d.ts +4 -0
- package/deps/editor/index.js +9 -0
- package/deps/{registerEditor.js → editor/registerEditor.js} +4 -4
- package/deps/editor/support/buttons/ImageButton.d.ts +5 -0
- package/deps/editor/support/buttons/ImageButton.js +138 -0
- package/deps/editor/support/buttons/index.d.ts +1 -0
- package/deps/editor/support/buttons/index.js +5 -0
- package/deps/editor/support/element/ImageElement.d.ts +3 -0
- package/deps/editor/support/element/ImageElement.js +228 -0
- package/deps/editor/support/element/TableElement.d.ts +0 -0
- package/deps/editor/support/element/TableElement.js +0 -0
- package/deps/editor/support/element/VideoElement.d.ts +0 -0
- package/deps/editor/support/element/VideoElement.js +0 -0
- package/deps/editor/support/element/_Base.d.ts +9 -0
- package/deps/editor/support/element/_Base.js +9 -0
- package/deps/editor/support/element/_Element.d.ts +2 -0
- package/deps/{_editor/base/Element.js → editor/support/element/_Element.js} +9 -6
- package/deps/editor/support/element/_Leaf.d.ts +3 -0
- package/deps/{_editor/base/Leaf.js → editor/support/element/_Leaf.js} +2 -2
- package/deps/editor/support/index.d.ts +4 -0
- package/deps/editor/support/index.js +89 -0
- package/deps/{_editor → editor}/tools/Button.d.ts +1 -1
- package/deps/{_editor → editor}/tools/Button.js +7 -3
- package/deps/{_editor → editor}/tools/ToolBar.d.ts +1 -1
- package/deps/{_editor → editor}/tools/ToolBar.js +1 -1
- package/deps/{_editor → editor}/tools/_BlockButton.d.ts +1 -1
- package/deps/{_editor → editor}/tools/_BlockButton.js +3 -3
- package/deps/{_editor → editor}/tools/_InsertButton.d.ts +1 -2
- package/deps/editor/tools/_InsertButton.js +36 -0
- package/deps/{_editor → editor}/tools/_MarkButton.d.ts +1 -1
- package/deps/{_editor → editor}/tools/_MarkButton.js +4 -4
- package/deps/{_editor → editor}/tools/_TxtButton.d.ts +1 -1
- package/deps/{_editor → editor}/tools/_TxtButton.js +37 -50
- package/deps/{_editor/base → editor}/types.d.ts +47 -56
- package/deps/editor/types.js +2 -0
- package/deps/editor/utils/ParseHtml.d.ts +0 -0
- package/deps/editor/utils/index.d.ts +7 -0
- package/deps/editor/utils/index.js +60 -0
- package/hooks/_list.d.ts +2 -1
- package/hooks/useAjaxQuery.d.ts +7 -3
- package/hooks/useAjaxQuery.js +46 -25
- package/hooks/useApiBase.js +25 -26
- package/index.d.ts +1 -0
- package/package.json +1 -1
- package/uform/FormViewer.d.ts +6 -6
- package/uform/hooks/useEditor.js +0 -1
- package/utils/Format.d.ts +8 -1
- package/utils/Format.js +10 -2
- package/utils/Global.d.ts +4 -0
- package/utils/Global.js +1 -0
- package/utils/TipUtil.d.ts +4 -0
- package/utils/TipUtil.js +6 -4
- package/deps/_editor/advance/_Image.d.ts +0 -2
- package/deps/_editor/advance/_Image.js +0 -102
- package/deps/_editor/base/Element.d.ts +0 -5
- package/deps/_editor/base/Leaf.d.ts +0 -3
- package/deps/_editor/base/Support.d.ts +0 -2
- package/deps/_editor/base/Support.js +0 -78
- package/deps/_editor/base/types.js +0 -10
- package/deps/_editor/tools/_InsertButton.js +0 -69
- package/deps/api-audit.d.ts +0 -1
- package/deps/api-audit.js +0 -6
- package/deps/api-data.js +0 -1
- package/deps/editor.d.ts +0 -34
- package/deps/editor.js +0 -137
- /package/deps/{_editor/advance/_Audio.d.ts → app-audit/ESTable.d.ts} +0 -0
- /package/deps/{_editor/advance/_Table.d.ts → app-data/SourceTable.d.ts} +0 -0
- /package/deps/{apis → app-data}/useSource.d.ts +0 -0
- /package/deps/{_editor → editor}/i18n.d.ts +0 -0
- /package/deps/{_editor → editor}/i18n.js +0 -0
- /package/deps/{registerEditor.d.ts → editor/registerEditor.d.ts} +0 -0
- /package/deps/{_editor/advance/_Video.d.ts → editor/support/buttons/AudioButton.d.ts} +0 -0
- /package/deps/{_editor/advance/_Audio.js → editor/support/buttons/AudioButton.js} +0 -0
- /package/deps/{_editor/utils/ParseHtml.d.ts → editor/support/buttons/TableButton.d.ts} +0 -0
- /package/deps/{_editor/advance/_Table.js → editor/support/buttons/TableButton.js} +0 -0
- /package/deps/{api-data.d.ts → editor/support/buttons/VideoButton.d.ts} +0 -0
- /package/deps/{_editor/advance/_Video.js → editor/support/buttons/VideoButton.js} +0 -0
- /package/deps/{_editor → editor}/utils/ParseHtml.js +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ImageButton = exports.insertImage = void 0;
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
28
|
+
var slate_react_1 = require("slate-react");
|
|
29
|
+
var UploadImage_1 = require("../../../../components/Upload/UploadImage");
|
|
30
|
+
var UForm_1 = require("../../../../components/UForm");
|
|
31
|
+
var utils_1 = require("../../../../utils");
|
|
32
|
+
var slate_1 = require("slate");
|
|
33
|
+
var index_1 = require("../../../../index");
|
|
34
|
+
var useToggle_1 = require("../../../../hooks/useToggle");
|
|
35
|
+
var insertImage = function (editor, url) {
|
|
36
|
+
var image = { type: 'image', url: url, children: [{ text: '' }] };
|
|
37
|
+
slate_1.Transforms.insertNodes(editor, image);
|
|
38
|
+
slate_1.Transforms.insertNodes(editor, { type: 'paragraph', children: [{ text: '' }], });
|
|
39
|
+
};
|
|
40
|
+
exports.insertImage = insertImage;
|
|
41
|
+
var UploadImageModal = function (_a) {
|
|
42
|
+
var open = _a.open, onCancel = _a.onCancel, onOk = _a.onOk, value = _a.value;
|
|
43
|
+
var currentUrl = (0, react_1.useRef)();
|
|
44
|
+
return react_1.default.createElement(index_1.Modal, { width: 640,
|
|
45
|
+
// styles={{ body: { padding: 0, height: 400 } }}
|
|
46
|
+
bodyStyle: { padding: 0, height: 500 }, title: "\u4E0A\u4F20\u56FE\u7247", open: open, onCancel: onCancel, onOk: function () {
|
|
47
|
+
if (currentUrl.current == null) {
|
|
48
|
+
index_1.message.error('请上传图片');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
onOk(currentUrl.current);
|
|
52
|
+
} },
|
|
53
|
+
react_1.default.createElement(UploadImage_1.UploadImage, { allowClear: false, width: 640, height: 400, onChange: function (data) {
|
|
54
|
+
currentUrl.current = (0, UploadImage_1.getImageUrl)(data.fileId);
|
|
55
|
+
} }));
|
|
56
|
+
};
|
|
57
|
+
var ImageButton = function (_a) {
|
|
58
|
+
var icon = _a.icon, ik = _a.ik, cmd = _a.cmd, disabled = _a.disabled;
|
|
59
|
+
var uploadState = (0, useToggle_1.useToggle)();
|
|
60
|
+
var inputState = (0, useToggle_1.useToggle)();
|
|
61
|
+
var selectState = (0, useToggle_1.useToggle)();
|
|
62
|
+
var editor = (0, slate_react_1.useSlate)();
|
|
63
|
+
var clazz = ['se-icon', 'vicon', 'vicon-' + icon];
|
|
64
|
+
if (disabled) {
|
|
65
|
+
clazz.push('se-icon-disabled');
|
|
66
|
+
}
|
|
67
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
68
|
+
react_1.default.createElement(index_1.Dropdown, { placement: "bottomLeft", arrow: true, trigger: ['click'], menu: {
|
|
69
|
+
items: [
|
|
70
|
+
{ key: 1, label: "上传图片", onClick: uploadState[1] },
|
|
71
|
+
// { key: 2, label: "从图库中选择", onClick: selectState[1] },
|
|
72
|
+
{ key: 3, label: "输入图片URL", onClick: inputState[1] },
|
|
73
|
+
// {
|
|
74
|
+
// key: 3, label: "输入图片URL", onClick: () => {
|
|
75
|
+
// // editor.insertData({})
|
|
76
|
+
// insertImage(editor, 'http://www.vrv.com.cn/images/banner_03.png')
|
|
77
|
+
// }
|
|
78
|
+
// },
|
|
79
|
+
]
|
|
80
|
+
} },
|
|
81
|
+
react_1.default.createElement("span", { className: clazz.join(' '), title: utils_1.i18n.txt(ik) })),
|
|
82
|
+
react_1.default.createElement(UploadImageModal, { open: uploadState[0], onCancel: (uploadState[1]), onOk: function (url) {
|
|
83
|
+
uploadState[1]();
|
|
84
|
+
(0, exports.insertImage)(editor, url);
|
|
85
|
+
} }),
|
|
86
|
+
react_1.default.createElement(UForm_1.UFormModal, { title: "\u8F93\u5165\u56FE\u7247\u5730\u5740", open: inputState[0], onCancel: inputState[1], default: {}, fields: [
|
|
87
|
+
{ field: 'url', title: '图片地址', required: true, type: 'url' }
|
|
88
|
+
], onOk: function (data) {
|
|
89
|
+
inputState[1]();
|
|
90
|
+
(0, exports.insertImage)(editor, data.url);
|
|
91
|
+
} }));
|
|
92
|
+
};
|
|
93
|
+
exports.ImageButton = ImageButton;
|
|
94
|
+
// const isImageUrl = url => {
|
|
95
|
+
// if (!url) return false
|
|
96
|
+
// if (!StringUtil.isURL(url)) return false
|
|
97
|
+
// // const ext = new URL(url).pathname.split('.').pop()
|
|
98
|
+
// // return imageExtensions.includes(ext)
|
|
99
|
+
// return true;
|
|
100
|
+
// }
|
|
101
|
+
// const insertImage = (editor, url) => {
|
|
102
|
+
// console.log('inserimg')
|
|
103
|
+
// const text = { text: '' }
|
|
104
|
+
// const image: ImageElement = { type: 'image', url, children: [text] }
|
|
105
|
+
// Transforms.insertNodes(editor, image)
|
|
106
|
+
// Transforms.insertNodes(editor, {
|
|
107
|
+
// type: 'paragraph',
|
|
108
|
+
// children: [{ text: '' }],
|
|
109
|
+
// })
|
|
110
|
+
// }
|
|
111
|
+
// export const withInsert = (editor: Editor) => {
|
|
112
|
+
// const { insertData, isVoid } = editor
|
|
113
|
+
// editor.isVoid = element => {
|
|
114
|
+
// return element.type === 'image' ? true : isVoid(element)
|
|
115
|
+
// }
|
|
116
|
+
// editor.insertData = data => {
|
|
117
|
+
// const text = data.getData('text/plain');
|
|
118
|
+
// const { files } = data
|
|
119
|
+
// if (files && files.length > 0) {
|
|
120
|
+
// for (const file of files) {
|
|
121
|
+
// const reader = new FileReader()
|
|
122
|
+
// const [mime] = file.type.split('/')
|
|
123
|
+
// if (mime === 'image') {
|
|
124
|
+
// reader.addEventListener('load', () => {
|
|
125
|
+
// const url = reader.result
|
|
126
|
+
// insertImage(editor, url)
|
|
127
|
+
// })
|
|
128
|
+
// reader.readAsDataURL(file)
|
|
129
|
+
// }
|
|
130
|
+
// }
|
|
131
|
+
// } else if (isImageUrl(text)) {
|
|
132
|
+
// insertImage(editor, text)
|
|
133
|
+
// } else {
|
|
134
|
+
// insertData(data)
|
|
135
|
+
// }
|
|
136
|
+
// }
|
|
137
|
+
// return editor
|
|
138
|
+
// }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ImageButton } from './ImageButton';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ImageButton = void 0;
|
|
4
|
+
var ImageButton_1 = require("./ImageButton");
|
|
5
|
+
Object.defineProperty(exports, "ImageButton", { enumerable: true, get: function () { return ImageButton_1.ImageButton; } });
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.Image = void 0;
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
var index_1 = require("../../../../index");
|
|
20
|
+
var slate_react_1 = require("slate-react");
|
|
21
|
+
var slate_1 = require("slate");
|
|
22
|
+
var slate_react_2 = require("slate-react");
|
|
23
|
+
// type ImageProps = {}
|
|
24
|
+
var ImageView = function (_a) {
|
|
25
|
+
var attributes = _a.attributes, children = _a.children, element = _a.element;
|
|
26
|
+
return react_1.default.createElement("div", null);
|
|
27
|
+
};
|
|
28
|
+
var ImageEdit = function (_a) {
|
|
29
|
+
var attributes = _a.attributes, children = _a.children, element = _a.element;
|
|
30
|
+
var editor = (0, slate_react_1.useSlateStatic)();
|
|
31
|
+
var path = slate_react_1.ReactEditor.findPath(editor, element);
|
|
32
|
+
// console.log(element, attributes)
|
|
33
|
+
// if(element)
|
|
34
|
+
var selected = (0, slate_react_2.useSelected)();
|
|
35
|
+
// const focused = useFocused()
|
|
36
|
+
return react_1.default.createElement("div", __assign({}, attributes, { className: 'sv-img' + (selected ? ' se-del' : '') }),
|
|
37
|
+
children,
|
|
38
|
+
react_1.default.createElement("div", { contentEditable: false, className: 'sv-img-content' + (element.align ? (' sv-img-' + element.align) : '') },
|
|
39
|
+
selected && react_1.default.createElement(index_1.Button, { danger: true, type: 'primary', onClick: function () { return slate_1.Transforms.removeNodes(editor, { at: path }); }, size: "small" }, "\u5220\u9664"),
|
|
40
|
+
react_1.default.createElement("img", { src: element.url })));
|
|
41
|
+
};
|
|
42
|
+
// const ImageEdit = ({ attributes, children, element }) => {
|
|
43
|
+
// const editor = useSlateStatic()
|
|
44
|
+
// const path = ReactEditor.findPath(editor, element)
|
|
45
|
+
// const selected = useSelected()
|
|
46
|
+
// const focused = useFocused()
|
|
47
|
+
// return (
|
|
48
|
+
// <div {...attributes}>
|
|
49
|
+
// {children}
|
|
50
|
+
// <div
|
|
51
|
+
// contentEditable={false}
|
|
52
|
+
// className={css`
|
|
53
|
+
// position: relative;
|
|
54
|
+
// `}
|
|
55
|
+
// >
|
|
56
|
+
// <img
|
|
57
|
+
// src={element.url}
|
|
58
|
+
// className={css`
|
|
59
|
+
// display: block;
|
|
60
|
+
// max-width: 100%;
|
|
61
|
+
// max-height: 20em;
|
|
62
|
+
// box-shadow: ${selected && focused ? '0 0 0 3px #B4D5FF' : 'none'};
|
|
63
|
+
// `}
|
|
64
|
+
// />
|
|
65
|
+
// <Button
|
|
66
|
+
// active
|
|
67
|
+
// onClick={() => Transforms.removeNodes(editor, { at: path })}
|
|
68
|
+
// className={css`
|
|
69
|
+
// display: ${selected && focused ? 'inline' : 'none'};
|
|
70
|
+
// position: absolute;
|
|
71
|
+
// top: 0.5em;
|
|
72
|
+
// left: 0.5em;
|
|
73
|
+
// background-color: white;
|
|
74
|
+
// `}
|
|
75
|
+
// >
|
|
76
|
+
// <Icon>delete</Icon>
|
|
77
|
+
// </Button>
|
|
78
|
+
// </div>
|
|
79
|
+
// </div>
|
|
80
|
+
// }
|
|
81
|
+
var Image = function (props) {
|
|
82
|
+
if (props.isEditor)
|
|
83
|
+
return react_1.default.createElement(ImageEdit, __assign({}, props));
|
|
84
|
+
return react_1.default.createElement(ImageView, __assign({}, props));
|
|
85
|
+
// const editor = useSlateStatic()
|
|
86
|
+
// const path = ReactEditor.findPath(editor, element)
|
|
87
|
+
// // console.log(path)
|
|
88
|
+
// // const selected = useSelected()
|
|
89
|
+
// // const focused = useFocused()
|
|
90
|
+
// return <div {...attributes}>
|
|
91
|
+
// {/* {children} */}
|
|
92
|
+
// <div
|
|
93
|
+
// contentEditable={false}
|
|
94
|
+
// // className={css`
|
|
95
|
+
// // position: relative;
|
|
96
|
+
// // `}
|
|
97
|
+
// >
|
|
98
|
+
// <img
|
|
99
|
+
// src={element.url}
|
|
100
|
+
// // className={css`
|
|
101
|
+
// // display: block;
|
|
102
|
+
// // max-width: 100%;
|
|
103
|
+
// // max-height: 20em;
|
|
104
|
+
// // box-shadow: ${selected && focused ? '0 0 0 3px #B4D5FF' : 'none'};
|
|
105
|
+
// // `}
|
|
106
|
+
// />
|
|
107
|
+
// <a
|
|
108
|
+
// // active
|
|
109
|
+
// onClick={() => Transforms.removeNodes(editor, { at: path })}
|
|
110
|
+
// // className={css`
|
|
111
|
+
// // display: ${selected && focused ? 'inline' : 'none'};
|
|
112
|
+
// // position: absolute;
|
|
113
|
+
// // top: 0.5em;
|
|
114
|
+
// // left: 0.5em;
|
|
115
|
+
// // background-color: white;
|
|
116
|
+
// // `}
|
|
117
|
+
// >
|
|
118
|
+
// {/* <Icon>delete</Icon> */}
|
|
119
|
+
// </a>
|
|
120
|
+
// </div>
|
|
121
|
+
// </div>
|
|
122
|
+
};
|
|
123
|
+
exports.Image = Image;
|
|
124
|
+
// import React from 'react'
|
|
125
|
+
// import { Transforms } from 'slate'
|
|
126
|
+
// import { useSlateStatic, ReactEditor, useReadOnly } from 'slate-react'
|
|
127
|
+
// import { Button } from 'antd'
|
|
128
|
+
// import { Editor } from 'slate'
|
|
129
|
+
// import type { CommandType } from '../../types'
|
|
130
|
+
// const ImageViewer = ({ attributes, element, children, style }) => {
|
|
131
|
+
// return <div {...attributes} className='v-image' style={style}>
|
|
132
|
+
// <img src={element.url} />
|
|
133
|
+
// </div>
|
|
134
|
+
// }
|
|
135
|
+
// const markValue = (editor: Editor, cmd: CommandType) => {
|
|
136
|
+
// const marks = Editor.marks(editor);
|
|
137
|
+
// if (marks && marks[cmd]) {
|
|
138
|
+
// return marks[cmd];
|
|
139
|
+
// }
|
|
140
|
+
// return null;
|
|
141
|
+
// }
|
|
142
|
+
// const setValue = (editor: Editor, cmd: CommandType, value: string | number | null) => {
|
|
143
|
+
// if (value == null || value == '') {
|
|
144
|
+
// const notSelected = editor.selection?.focus.offset == editor.selection?.anchor.offset;
|
|
145
|
+
// if (notSelected) {
|
|
146
|
+
// editor.select(editor.selection.focus.path);
|
|
147
|
+
// }
|
|
148
|
+
// Editor.removeMark(editor, cmd)
|
|
149
|
+
// } else {
|
|
150
|
+
// Editor.addMark(editor, cmd, value)
|
|
151
|
+
// }
|
|
152
|
+
// }
|
|
153
|
+
// const ImageEditor = ({ attributes, element, children, style }) => {
|
|
154
|
+
// const editor = useSlateStatic()
|
|
155
|
+
// const path = ReactEditor.findPath(editor, element);
|
|
156
|
+
// return <div {...attributes} className='v-image' style={style}>
|
|
157
|
+
// <img src={element.url}
|
|
158
|
+
// // className={css`
|
|
159
|
+
// // display: block;
|
|
160
|
+
// // max-width: 100%;
|
|
161
|
+
// // max-height: 20em;
|
|
162
|
+
// // box-shadow: ${selected && focused ? '0 0 0 3px #B4D5FF' : 'none'};
|
|
163
|
+
// // `}
|
|
164
|
+
// />
|
|
165
|
+
// {children}
|
|
166
|
+
// <div contentEditable={false}
|
|
167
|
+
// // className={css`
|
|
168
|
+
// // position: relative;
|
|
169
|
+
// // `}
|
|
170
|
+
// >
|
|
171
|
+
// <Button
|
|
172
|
+
// icon="delete"
|
|
173
|
+
// // active
|
|
174
|
+
// onClick={() => Transforms.removeNodes(editor, { at: path })}
|
|
175
|
+
// // className={css`
|
|
176
|
+
// // display: ${selected && focused ? 'inline' : 'none'};
|
|
177
|
+
// // position: absolute;
|
|
178
|
+
// // top: 0.5em;
|
|
179
|
+
// // left: 0.5em;
|
|
180
|
+
// // background-color: white;
|
|
181
|
+
// // `}
|
|
182
|
+
// >
|
|
183
|
+
// </Button>
|
|
184
|
+
// </div>
|
|
185
|
+
// </div>
|
|
186
|
+
// }
|
|
187
|
+
// export const Image = (props) => {
|
|
188
|
+
// const isReadOnly = useReadOnly();
|
|
189
|
+
// if (!isReadOnly && props.isEditor) {
|
|
190
|
+
// return <ImageEditor {...props} />
|
|
191
|
+
// }
|
|
192
|
+
// return <ImageViewer {...props} />
|
|
193
|
+
// // const editor = useSlateStatic()
|
|
194
|
+
// // const path = ReactEditor.findPath(editor, element);
|
|
195
|
+
// // // editor.above
|
|
196
|
+
// // const selected = useSelected()
|
|
197
|
+
// // return <div {...attributes} className='v-image' style={style}>
|
|
198
|
+
// // <img src={element.url}
|
|
199
|
+
// // // className={css`
|
|
200
|
+
// // // display: block;
|
|
201
|
+
// // // max-width: 100%;
|
|
202
|
+
// // // max-height: 20em;
|
|
203
|
+
// // // box-shadow: ${selected && focused ? '0 0 0 3px #B4D5FF' : 'none'};
|
|
204
|
+
// // // `}
|
|
205
|
+
// // />
|
|
206
|
+
// // {children}
|
|
207
|
+
// // <div
|
|
208
|
+
// // contentEditable={false}
|
|
209
|
+
// // // className={css`
|
|
210
|
+
// // // position: relative;
|
|
211
|
+
// // // `}
|
|
212
|
+
// // >
|
|
213
|
+
// // <Button
|
|
214
|
+
// // icon="delete"
|
|
215
|
+
// // // active
|
|
216
|
+
// // onClick={() => Transforms.removeNodes(editor, { at: path })}
|
|
217
|
+
// // // className={css`
|
|
218
|
+
// // // display: ${selected && focused ? 'inline' : 'none'};
|
|
219
|
+
// // // position: absolute;
|
|
220
|
+
// // // top: 0.5em;
|
|
221
|
+
// // // left: 0.5em;
|
|
222
|
+
// // // background-color: white;
|
|
223
|
+
// // // `}
|
|
224
|
+
// // >
|
|
225
|
+
// // </Button>
|
|
226
|
+
// // </div>
|
|
227
|
+
// // </div>
|
|
228
|
+
// }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RenderElementProps } from "slate-react";
|
|
2
|
+
import type { FC, CSSProperties } from 'react';
|
|
3
|
+
import type { Element } from 'slate';
|
|
4
|
+
import type { CustomElement, EditorElement } from '../../types';
|
|
5
|
+
export type ElementRender<T extends Element = CustomElement> = FC<Omit<RenderElementProps, 'element'> & {
|
|
6
|
+
element: T;
|
|
7
|
+
isEditor?: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const getStyle: (element: EditorElement) => CSSProperties;
|
|
@@ -16,14 +16,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.Element = void 0;
|
|
18
18
|
var react_1 = __importDefault(require("react"));
|
|
19
|
-
var
|
|
19
|
+
var ImageElement_1 = require("./ImageElement");
|
|
20
|
+
var _Base_1 = require("./_Base");
|
|
20
21
|
var Element = function (props) {
|
|
21
22
|
var attributes = props.attributes, children = props.children;
|
|
22
23
|
var element = props.element;
|
|
23
|
-
var style =
|
|
24
|
-
// @ts-ignore
|
|
25
|
-
if (element.align)
|
|
26
|
-
style.textAlign = element.align;
|
|
24
|
+
var style = (0, _Base_1.getStyle)(element);
|
|
27
25
|
switch (element.type) {
|
|
28
26
|
case 'blockQuote':
|
|
29
27
|
return react_1.default.createElement("blockquote", __assign({ style: style }, attributes), children);
|
|
@@ -46,7 +44,12 @@ var Element = function (props) {
|
|
|
46
44
|
case 'hr':
|
|
47
45
|
return react_1.default.createElement("hr", __assign({ style: style }, attributes));
|
|
48
46
|
case 'image':
|
|
49
|
-
return react_1.default.createElement(
|
|
47
|
+
return react_1.default.createElement(ImageElement_1.Image, __assign({}, props, { isEditor: props.isEditor }));
|
|
48
|
+
case 'video':
|
|
49
|
+
case 'audio':
|
|
50
|
+
// return <div style={{ color: 'red' }}>视频还不支持</div>
|
|
51
|
+
return react_1.default.createElement("div", { style: { color: 'red' } }, "\u6682\u4E0D\u652F\u6301");
|
|
52
|
+
// return <Image {...props} style={style} isEditor={props.isEditor} />
|
|
50
53
|
default:
|
|
51
54
|
return react_1.default.createElement("p", __assign({ style: style }, attributes), children);
|
|
52
55
|
}
|
|
@@ -16,7 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.Leaf = void 0;
|
|
18
18
|
var react_1 = __importDefault(require("react"));
|
|
19
|
-
var
|
|
19
|
+
var utils_1 = require("../../utils");
|
|
20
20
|
var Leaf = function (props) {
|
|
21
21
|
var leaf = props.leaf;
|
|
22
22
|
var children = props.children;
|
|
@@ -36,7 +36,7 @@ var Leaf = function (props) {
|
|
|
36
36
|
if (leaf.fontSize)
|
|
37
37
|
style.fontSize = leaf.fontSize;
|
|
38
38
|
if (leaf.fontFamily && leaf.fontFamily > 0 && leaf.fontFamily < 5) {
|
|
39
|
-
style.fontFamily =
|
|
39
|
+
style.fontFamily = utils_1.FontFamilyTexts[leaf.fontFamily];
|
|
40
40
|
}
|
|
41
41
|
if (leaf.color)
|
|
42
42
|
style.color = leaf.color;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.supportAdvance = exports.Leaf = exports.Element = void 0;
|
|
20
|
+
var utils_1 = require("../../../utils");
|
|
21
|
+
var ImageButton_1 = require("./buttons/ImageButton");
|
|
22
|
+
var _Element_1 = require("./element/_Element");
|
|
23
|
+
Object.defineProperty(exports, "Element", { enumerable: true, get: function () { return _Element_1.Element; } });
|
|
24
|
+
var _Leaf_1 = require("./element/_Leaf");
|
|
25
|
+
Object.defineProperty(exports, "Leaf", { enumerable: true, get: function () { return _Leaf_1.Leaf; } });
|
|
26
|
+
// 后端代码可以先给我下,
|
|
27
|
+
var VOID_SET = new Set(['image', 'video', 'audio']);
|
|
28
|
+
var supportAdvance = function (editor) {
|
|
29
|
+
var insertData = editor.insertData, isVoid = editor.isVoid;
|
|
30
|
+
editor.isVoid = function (element) {
|
|
31
|
+
// console.log(element.type, VOID_SET.has(element.type))
|
|
32
|
+
if (VOID_SET.has(element.type))
|
|
33
|
+
return true;
|
|
34
|
+
return isVoid(element);
|
|
35
|
+
};
|
|
36
|
+
editor.insertData = function (data) {
|
|
37
|
+
var text = data.getData('text/plain');
|
|
38
|
+
var files = data.files;
|
|
39
|
+
if (files && files.length > 0) {
|
|
40
|
+
var _loop_1 = function (i, _i) {
|
|
41
|
+
var file = files.item(i);
|
|
42
|
+
var reader = new FileReader();
|
|
43
|
+
var _a = __read(file.type.split('/'), 1), mime = _a[0];
|
|
44
|
+
if (mime === 'image') {
|
|
45
|
+
reader.addEventListener('load', function () {
|
|
46
|
+
var url = reader.result;
|
|
47
|
+
(0, ImageButton_1.insertImage)(editor, url);
|
|
48
|
+
});
|
|
49
|
+
reader.readAsDataURL(file);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
for (var i = 0, _i = files.length; i < _i; i++) {
|
|
53
|
+
_loop_1(i, _i);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (utils_1.StringUtil.isURL(text)) {
|
|
57
|
+
(0, ImageButton_1.insertImage)(editor, text);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
insertData(data);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return editor;
|
|
64
|
+
// editor.insertData = data => {
|
|
65
|
+
// const text = data.getData('text/plain')
|
|
66
|
+
// console.log('insert', data);
|
|
67
|
+
// console.log('text', text);
|
|
68
|
+
// const { files } = data
|
|
69
|
+
// if (files && files.length > 0) {
|
|
70
|
+
// for (const file of files) {
|
|
71
|
+
// const reader = new FileReader()
|
|
72
|
+
// const [mime] = file.type.split('/')
|
|
73
|
+
// if (mime === 'image') {
|
|
74
|
+
// reader.addEventListener('load', () => {
|
|
75
|
+
// const url = reader.result
|
|
76
|
+
// insertImage(editor, url)
|
|
77
|
+
// })
|
|
78
|
+
// reader.readAsDataURL(file)
|
|
79
|
+
// }
|
|
80
|
+
// }
|
|
81
|
+
// } else if (isImageUrl(text)) {
|
|
82
|
+
// insertImage(editor, text)
|
|
83
|
+
// } else {
|
|
84
|
+
// insertData(data)
|
|
85
|
+
// }
|
|
86
|
+
// }
|
|
87
|
+
return editor;
|
|
88
|
+
};
|
|
89
|
+
exports.supportAdvance = supportAdvance;
|
|
@@ -22,6 +22,7 @@ var utils_1 = require("../../../utils");
|
|
|
22
22
|
var _BlockButton_1 = require("./_BlockButton");
|
|
23
23
|
var _MarkButton_1 = require("./_MarkButton");
|
|
24
24
|
var _InsertButton_1 = require("./_InsertButton");
|
|
25
|
+
var ImageButton_1 = require("../support/buttons/ImageButton");
|
|
25
26
|
var _TxtButton_1 = require("./_TxtButton");
|
|
26
27
|
var BUTTONS = {
|
|
27
28
|
bold: { type: 'mark', icon: 'bold', ik: i18n_1.EDITOR.BOLD },
|
|
@@ -54,7 +55,7 @@ var BUTTONS = {
|
|
|
54
55
|
var Button = function (_a) {
|
|
55
56
|
var type = _a.type, disabled = _a.disabled;
|
|
56
57
|
if (type == null) {
|
|
57
|
-
return react_1.default.createElement("span", { className: '
|
|
58
|
+
return react_1.default.createElement("span", { className: 'se-toolbar-split' });
|
|
58
59
|
}
|
|
59
60
|
if (!lodash_1.default.has(BUTTONS, type)) {
|
|
60
61
|
return utils_1.Const.NONE;
|
|
@@ -78,15 +79,18 @@ var Button = function (_a) {
|
|
|
78
79
|
return react_1.default.createElement(_TxtButton_1.FontSize, __assign({}, define, { cmd: type, disabled: disabled }));
|
|
79
80
|
case 'fontFamily':
|
|
80
81
|
return react_1.default.createElement(_TxtButton_1.FontFamily, __assign({}, define, { cmd: type, disabled: disabled }));
|
|
82
|
+
// 只要有点学习能力,学习一两个月时间后,弄点玩具级别的模型是不成问题的,
|
|
83
|
+
// 解释权在自己手上,后面逐步优化
|
|
81
84
|
}
|
|
82
85
|
return utils_1.Const.NONE;
|
|
83
86
|
}
|
|
84
87
|
else if (define.type == 'action') {
|
|
88
|
+
// console.log(type)
|
|
85
89
|
switch (type) {
|
|
86
90
|
case 'hr':
|
|
87
91
|
return react_1.default.createElement(_InsertButton_1.HR, __assign({}, define, { cmd: type, disabled: disabled }));
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
case 'image':
|
|
93
|
+
return react_1.default.createElement(ImageButton_1.ImageButton, __assign({}, define, { cmd: type, disabled: disabled }));
|
|
90
94
|
// case 'audio':
|
|
91
95
|
// return <Audio {...define} cmd={type} disabled={disabled}/>
|
|
92
96
|
// case 'video':
|
|
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.Toolbar = void 0;
|
|
7
7
|
var react_1 = __importDefault(require("react"));
|
|
8
8
|
var Button_1 = require("./Button");
|
|
9
|
-
var Toolbar = function (props) { return react_1.default.createElement("div", { className: "
|
|
9
|
+
var Toolbar = function (props) { return react_1.default.createElement("div", { className: "se-toolbar" }, props.buttons.map(function (lineGroup, i) { return react_1.default.createElement("div", { key: i, className: "se-toolbar-line" }, lineGroup.map(function (type, j) { return react_1.default.createElement(Button_1.Button, { key: type + j, type: type, disabled: props.disabled }); })); })); };
|
|
10
10
|
exports.Toolbar = Toolbar;
|