x-star-editor 0.3.1 → 0.3.2

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.
@@ -1,6 +1,6 @@
1
1
  import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
2
  import { createKeybindingsHandler } from 'tinykeys';
3
- import { createSelection, getRange } from "./container";
3
+ import { createSelection } from "./container";
4
4
 
5
5
  /**
6
6
  * 处理函数上下文
@@ -116,56 +116,22 @@ export var getDefaultKeyboardEventHandlers = function getDefaultKeyboardEventHan
116
116
  type: 'redo'
117
117
  });
118
118
  },
119
- ArrowLeft: function ArrowLeft(e) {
120
- e.preventDefault();
121
- var _getRange = getRange(selection),
122
- startOffset = _getRange.startOffset,
123
- endOffset = _getRange.endOffset;
124
- if (startOffset < endOffset) {
125
- dispatch({
126
- type: 'select',
127
- selection: createSelection(startOffset)
128
- });
129
- } else if (startOffset) {
130
- dispatch({
131
- type: 'select',
132
- selection: createSelection(startOffset - 1)
133
- });
134
- }
135
- },
136
- 'Shift+ArrowLeft': function ShiftArrowLeft(e) {
137
- e.preventDefault();
119
+ ArrowRight: function ArrowRight(e) {
138
120
  var anchorOffset = selection.anchorOffset,
139
121
  focusOffset = selection.focusOffset;
140
- if (focusOffset) {
122
+ if (anchorOffset === focusOffset && sourceCode[focusOffset] === '\n') {
123
+ e.preventDefault();
141
124
  dispatch({
142
125
  type: 'select',
143
- selection: createSelection(anchorOffset, focusOffset - 1)
144
- });
145
- }
146
- },
147
- ArrowRight: function ArrowRight(e) {
148
- e.preventDefault();
149
- var _getRange2 = getRange(selection),
150
- startOffset = _getRange2.startOffset,
151
- endOffset = _getRange2.endOffset;
152
- if (startOffset < endOffset) {
153
- dispatch({
154
- type: 'select',
155
- selection: createSelection(endOffset)
156
- });
157
- } else if (startOffset < sourceCode.length) {
158
- dispatch({
159
- type: 'select',
160
- selection: createSelection(startOffset + 1)
126
+ selection: createSelection(focusOffset + 1)
161
127
  });
162
128
  }
163
129
  },
164
130
  'Shift+ArrowRight': function ShiftArrowRight(e) {
165
- e.preventDefault();
166
131
  var anchorOffset = selection.anchorOffset,
167
132
  focusOffset = selection.focusOffset;
168
- if (focusOffset < sourceCode.length) {
133
+ if (sourceCode[focusOffset] === '\n') {
134
+ e.preventDefault();
169
135
  dispatch({
170
136
  type: 'select',
171
137
  selection: createSelection(anchorOffset, focusOffset + 1)
@@ -331,6 +331,9 @@ export var viewerRender = function viewerRender(root, schema) {
331
331
  */
332
332
  export var postViewerRender = function postViewerRender(root, options) {
333
333
  var components = _objectSpread(_objectSpread({}, options.customHTMLElements), {}, {
334
+ input: function input(props) {
335
+ return jsx('input', props);
336
+ },
334
337
  custom: function custom(props) {
335
338
  var _options$customBlocks;
336
339
  return jsx((_options$customBlocks = options.customBlocks[props.meta]) !== null && _options$customBlocks !== void 0 ? _options$customBlocks : 'div', {
@@ -37,6 +37,10 @@ export interface XStarEditorProps {
37
37
  * 查看器属性
38
38
  */
39
39
  viewerProps?: Omit<XStarMdViewerProps, 'height' | 'value' | 'enableWebWorker'>;
40
+ /**
41
+ * 自定义查看器渲染函数
42
+ */
43
+ viewerRender?: (value: string) => React.ReactNode;
40
44
  /**
41
45
  * 文本变化回调函数
42
46
  */
@@ -6,17 +6,40 @@ import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
6
6
  import { prefix } from "../utils/global";
7
7
  import XStarMdEditor, { useMdEditorRef } from "../x-star-md-editor";
8
8
  import XStarMdViewer, { useMdViewerRef } from "../x-star-md-viewer";
9
- var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
10
- var className = _ref.className,
9
+ var ViewerRenderWrapper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
10
+ var children = _ref.children,
11
+ className = _ref.className,
11
12
  style = _ref.style,
12
- height = _ref.height,
13
- locale = _ref.locale,
14
- initialValue = _ref.initialValue,
15
- enableWebWorker = _ref.enableWebWorker,
16
- editorProps = _ref.editorProps,
17
- viewerProps = _ref.viewerProps,
18
- _onChange = _ref.onChange,
19
- onInsertFile = _ref.onInsertFile;
13
+ height = _ref.height;
14
+ var containerRef = useRef(null);
15
+ useImperativeHandle(ref, function () {
16
+ return {
17
+ getViewerContainer: function getViewerContainer() {
18
+ return containerRef.current;
19
+ }
20
+ };
21
+ }, []);
22
+ return /*#__PURE__*/React.createElement("div", {
23
+ ref: containerRef,
24
+ className: classNames("".concat(prefix, "md-viewer"), className),
25
+ style: _objectSpread(_objectSpread({}, style), {}, {
26
+ height: height
27
+ })
28
+ }, children);
29
+ });
30
+ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
31
+ var className = _ref2.className,
32
+ style = _ref2.style,
33
+ height = _ref2.height,
34
+ locale = _ref2.locale,
35
+ _ref2$initialValue = _ref2.initialValue,
36
+ initialValue = _ref2$initialValue === void 0 ? '' : _ref2$initialValue,
37
+ enableWebWorker = _ref2.enableWebWorker,
38
+ editorProps = _ref2.editorProps,
39
+ viewerProps = _ref2.viewerProps,
40
+ viewerRender = _ref2.viewerRender,
41
+ _onChange = _ref2.onChange,
42
+ onInsertFile = _ref2.onInsertFile;
20
43
  var editorRef = useMdEditorRef();
21
44
  var viewerRef = useMdViewerRef();
22
45
  var containerRef = useRef(null);
@@ -94,10 +117,10 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
94
117
  if (ignore || !editor || !viewer) {
95
118
  return;
96
119
  }
97
- var _ref2 = e.currentTarget === editor ? [editor, viewer] : [viewer, editor],
98
- _ref3 = _slicedToArray(_ref2, 2),
99
- fromElement = _ref3[0],
100
- toElement = _ref3[1];
120
+ var _ref3 = e.currentTarget === editor ? [editor, viewer] : [viewer, editor],
121
+ _ref4 = _slicedToArray(_ref3, 2),
122
+ fromElement = _ref4[0],
123
+ toElement = _ref4[1];
101
124
  var _getOffsetTops = getOffsetTops(fromElement, toElement),
102
125
  _getOffsetTops2 = _slicedToArray(_getOffsetTops, 2),
103
126
  fromOffsetTops = _getOffsetTops2[0],
@@ -149,7 +172,12 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
149
172
  _onChange === null || _onChange === void 0 ? void 0 : _onChange(value);
150
173
  },
151
174
  onInsertFile: onInsertFile
152
- })), /*#__PURE__*/React.createElement(XStarMdViewer, _extends({
175
+ })), viewerRender ? /*#__PURE__*/React.createElement(ViewerRenderWrapper, {
176
+ ref: viewerRef,
177
+ className: viewerProps === null || viewerProps === void 0 ? void 0 : viewerProps.className,
178
+ style: viewerProps === null || viewerProps === void 0 ? void 0 : viewerProps.style,
179
+ height: height
180
+ }, viewerRender(value)) : /*#__PURE__*/React.createElement(XStarMdViewer, _extends({
153
181
  ref: viewerRef
154
182
  }, viewerProps, {
155
183
  height: height,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x-star-editor",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "An editor developed by turingstar",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",