slate-react 0.102.0 → 0.104.0
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/components/editable.d.ts.map +1 -1
- package/dist/index.es.js +59 -13
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +59 -13
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +59 -13
- package/dist/slate-react.min.js +1 -1
- package/dist/utils/dom.d.ts +4 -0
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/environment.d.ts +1 -0
- package/dist/utils/environment.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../../../../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AAQd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAEL,QAAQ,
|
|
1
|
+
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../../../../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AAQd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAEL,QAAQ,EAOT,MAAM,cAAc,CAAA;AAuCrB;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE;QACV,iBAAiB,EAAE,SAAS,CAAA;QAC5B,mBAAmB,CAAC,EAAE,IAAI,CAAA;QAC1B,iBAAiB,CAAC,EAAE,IAAI,CAAA;QACxB,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,GAAG,EAAE,GAAG,CAAA;KACT,CAAA;CACF;AAED;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE;QACV,iBAAiB,EAAE,IAAI,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE,CAAA;IACxC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,GAAG,CAAC,OAAO,CAAA;IACpD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,GAAG,CAAC,OAAO,CAAA;IAClE,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC3E,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,GAAG,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAEhD;;GAEG;AAEH,eAAO,MAAM,QAAQ,UAAW,aAAa,gBA0lD5C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,GAAG,CAAA;IACb,UAAU,EAAE;QACV,wBAAwB,EAAE,OAAO,CAAA;QACjC,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,eAAe,EAAE,OAAO,CAAA;QACxB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC3B,KAAK,EAAE,KAAK,CAAC,aAAa,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,kBAAkB,8BAG5B,sBAAsB,gBAOxB,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAa,CAAA;AA4BtE;;GAEG;AAEH,eAAO,MAAM,cAAc,gHAIO,IAAI,GAAG,OAAO,yBAc/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,yFAUjC,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,iBAAiB,uDAEJ,IAAI,GAAG,OAAO,yBAevC,CAAA"}
|
package/dist/index.es.js
CHANGED
|
@@ -93,6 +93,7 @@ var useSlateStatic = () => {
|
|
|
93
93
|
return editor;
|
|
94
94
|
};
|
|
95
95
|
|
|
96
|
+
var _navigator$userAgent$, _navigator$userAgent$2;
|
|
96
97
|
var REACT_MAJOR_VERSION = parseInt(React.version.split('.')[0], 10);
|
|
97
98
|
var IS_IOS = typeof navigator !== 'undefined' && typeof window !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
|
98
99
|
var IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);
|
|
@@ -115,6 +116,8 @@ var IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navig
|
|
|
115
116
|
// Check if DOM is available as React does internally.
|
|
116
117
|
// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js
|
|
117
118
|
var CAN_USE_DOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');
|
|
119
|
+
// Check if the browser is Safari and older than 17
|
|
120
|
+
var IS_SAFARI_LEGACY = typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Version\/(\d+)/.test(navigator.userAgent) && ((_navigator$userAgent$ = navigator.userAgent.match(/Version\/(\d+)/)) !== null && _navigator$userAgent$ !== void 0 && _navigator$userAgent$[1] ? parseInt((_navigator$userAgent$2 = navigator.userAgent.match(/Version\/(\d+)/)) === null || _navigator$userAgent$2 === void 0 ? void 0 : _navigator$userAgent$2[1], 10) < 17 : false);
|
|
118
121
|
// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
|
|
119
122
|
// Chrome Legacy doesn't support `beforeinput` correctly
|
|
120
123
|
var HAS_BEFORE_INPUT_SUPPORT = (!IS_CHROME_LEGACY || !IS_ANDROID_CHROME_LEGACY) && !IS_EDGE_LEGACY &&
|
|
@@ -374,6 +377,17 @@ var isTrackedMutation = (editor, mutation, batch) => {
|
|
|
374
377
|
// Target add/remove is tracked. Track the mutation if we track the parent mutation.
|
|
375
378
|
return isTrackedMutation(editor, parentMutation, batch);
|
|
376
379
|
};
|
|
380
|
+
/**
|
|
381
|
+
* Retrieves the deepest active element in the DOM, considering nested shadow DOMs.
|
|
382
|
+
*/
|
|
383
|
+
var getActiveElement = () => {
|
|
384
|
+
var activeElement = document.activeElement;
|
|
385
|
+
while ((_activeElement = activeElement) !== null && _activeElement !== void 0 && _activeElement.shadowRoot && (_activeElement$shadow = activeElement.shadowRoot) !== null && _activeElement$shadow !== void 0 && _activeElement$shadow.activeElement) {
|
|
386
|
+
var _activeElement, _activeElement$shadow, _activeElement2;
|
|
387
|
+
activeElement = (_activeElement2 = activeElement) === null || _activeElement2 === void 0 || (_activeElement2 = _activeElement2.shadowRoot) === null || _activeElement2 === void 0 ? void 0 : _activeElement2.activeElement;
|
|
388
|
+
}
|
|
389
|
+
return activeElement;
|
|
390
|
+
};
|
|
377
391
|
|
|
378
392
|
/**
|
|
379
393
|
* An auto-incrementing identifier for keys.
|
|
@@ -2845,6 +2859,7 @@ var Editable = props => {
|
|
|
2845
2859
|
var ref = useRef(null);
|
|
2846
2860
|
var deferredOperations = useRef([]);
|
|
2847
2861
|
var [placeholderHeight, setPlaceholderHeight] = useState();
|
|
2862
|
+
var processing = useRef(false);
|
|
2848
2863
|
var {
|
|
2849
2864
|
onUserInput,
|
|
2850
2865
|
receivedUserInput
|
|
@@ -2880,15 +2895,28 @@ var Editable = props => {
|
|
|
2880
2895
|
// released. This causes issues in situations where another change happens
|
|
2881
2896
|
// while a selection is being dragged.
|
|
2882
2897
|
var onDOMSelectionChange = useMemo(() => throttle(() => {
|
|
2898
|
+
var el = ReactEditor.toDOMNode(editor, editor);
|
|
2899
|
+
var root = el.getRootNode();
|
|
2900
|
+
if (IS_SAFARI_LEGACY && !processing.current && IS_WEBKIT && root instanceof ShadowRoot) {
|
|
2901
|
+
processing.current = true;
|
|
2902
|
+
var active = getActiveElement();
|
|
2903
|
+
if (active) {
|
|
2904
|
+
document.execCommand('indent');
|
|
2905
|
+
} else {
|
|
2906
|
+
Transforms.deselect(editor);
|
|
2907
|
+
}
|
|
2908
|
+
processing.current = false;
|
|
2909
|
+
return;
|
|
2910
|
+
}
|
|
2883
2911
|
var androidInputManager = androidInputManagerRef.current;
|
|
2884
2912
|
if ((IS_ANDROID || !ReactEditor.isComposing(editor)) && (!state.isUpdatingSelection || androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing()) && !state.isDraggingInternally) {
|
|
2885
|
-
var
|
|
2913
|
+
var _root = ReactEditor.findDocumentOrShadowRoot(editor);
|
|
2886
2914
|
var {
|
|
2887
2915
|
activeElement
|
|
2888
|
-
} =
|
|
2889
|
-
var
|
|
2890
|
-
var domSelection =
|
|
2891
|
-
if (activeElement ===
|
|
2916
|
+
} = _root;
|
|
2917
|
+
var _el = ReactEditor.toDOMNode(editor, editor);
|
|
2918
|
+
var domSelection = _root.getSelection();
|
|
2919
|
+
if (activeElement === _el) {
|
|
2892
2920
|
state.latestElement = activeElement;
|
|
2893
2921
|
IS_FOCUSED.set(editor, true);
|
|
2894
2922
|
} else {
|
|
@@ -3075,6 +3103,24 @@ var Editable = props => {
|
|
|
3075
3103
|
// to the real event sadly. (2019/11/01)
|
|
3076
3104
|
// https://github.com/facebook/react/issues/11211
|
|
3077
3105
|
var onDOMBeforeInput = useCallback(event => {
|
|
3106
|
+
var el = ReactEditor.toDOMNode(editor, editor);
|
|
3107
|
+
var root = el.getRootNode();
|
|
3108
|
+
if (IS_SAFARI_LEGACY && processing !== null && processing !== void 0 && processing.current && IS_WEBKIT && root instanceof ShadowRoot) {
|
|
3109
|
+
var ranges = event.getTargetRanges();
|
|
3110
|
+
var range = ranges[0];
|
|
3111
|
+
var newRange = new window.Range();
|
|
3112
|
+
newRange.setStart(range.startContainer, range.startOffset);
|
|
3113
|
+
newRange.setEnd(range.endContainer, range.endOffset);
|
|
3114
|
+
// Translate the DOM Range into a Slate Range
|
|
3115
|
+
var slateRange = ReactEditor.toSlateRange(editor, newRange, {
|
|
3116
|
+
exactMatch: false,
|
|
3117
|
+
suppressThrow: false
|
|
3118
|
+
});
|
|
3119
|
+
Transforms.select(editor, slateRange);
|
|
3120
|
+
event.preventDefault();
|
|
3121
|
+
event.stopImmediatePropagation();
|
|
3122
|
+
return;
|
|
3123
|
+
}
|
|
3078
3124
|
onUserInput();
|
|
3079
3125
|
if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {
|
|
3080
3126
|
var _EDITOR_TO_USER_SELEC;
|
|
@@ -3124,18 +3170,18 @@ var Editable = props => {
|
|
|
3124
3170
|
} = selection;
|
|
3125
3171
|
var [node, offset] = ReactEditor.toDOMPoint(editor, anchor);
|
|
3126
3172
|
var anchorNode = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.closest('a');
|
|
3127
|
-
var
|
|
3173
|
+
var _window = ReactEditor.getWindow(editor);
|
|
3128
3174
|
if (native && anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {
|
|
3129
3175
|
var _lastText$textContent;
|
|
3130
3176
|
// Find the last text node inside the anchor.
|
|
3131
|
-
var lastText =
|
|
3177
|
+
var lastText = _window === null || _window === void 0 ? void 0 : _window.document.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();
|
|
3132
3178
|
if (lastText === node && ((_lastText$textContent = lastText.textContent) === null || _lastText$textContent === void 0 ? void 0 : _lastText$textContent.length) === offset) {
|
|
3133
3179
|
native = false;
|
|
3134
3180
|
}
|
|
3135
3181
|
}
|
|
3136
3182
|
// Chrome has issues with the presence of tab characters inside elements with whiteSpace = 'pre'
|
|
3137
3183
|
// causing abnormal insert behavior: https://bugs.chromium.org/p/chromium/issues/detail?id=1219139
|
|
3138
|
-
if (native && node.parentElement && (
|
|
3184
|
+
if (native && node.parentElement && (_window === null || _window === void 0 || (_window$getComputedSt = _window.getComputedStyle(node.parentElement)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.whiteSpace) === 'pre') {
|
|
3139
3185
|
var block = Editor.above(editor, {
|
|
3140
3186
|
at: anchor.path,
|
|
3141
3187
|
match: n => Element$1.isElement(n) && Editor.isBlock(editor, n)
|
|
@@ -3151,14 +3197,14 @@ var Editable = props => {
|
|
|
3151
3197
|
if (!type.startsWith('delete') || type.startsWith('deleteBy')) {
|
|
3152
3198
|
var [targetRange] = event.getTargetRanges();
|
|
3153
3199
|
if (targetRange) {
|
|
3154
|
-
var
|
|
3200
|
+
var _range = ReactEditor.toSlateRange(editor, targetRange, {
|
|
3155
3201
|
exactMatch: false,
|
|
3156
3202
|
suppressThrow: false
|
|
3157
3203
|
});
|
|
3158
|
-
if (!selection || !Range.equals(selection,
|
|
3204
|
+
if (!selection || !Range.equals(selection, _range)) {
|
|
3159
3205
|
native = false;
|
|
3160
3206
|
var selectionRef = !isCompositionChange && editor.selection && Editor.rangeRef(editor, editor.selection);
|
|
3161
|
-
Transforms.select(editor,
|
|
3207
|
+
Transforms.select(editor, _range);
|
|
3162
3208
|
if (selectionRef) {
|
|
3163
3209
|
EDITOR_TO_USER_SELECTION.set(editor, selectionRef);
|
|
3164
3210
|
}
|
|
@@ -3557,8 +3603,8 @@ var Editable = props => {
|
|
|
3557
3603
|
at: end
|
|
3558
3604
|
});
|
|
3559
3605
|
if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {
|
|
3560
|
-
var
|
|
3561
|
-
Transforms.select(editor,
|
|
3606
|
+
var _range2 = Editor.range(editor, _start);
|
|
3607
|
+
Transforms.select(editor, _range2);
|
|
3562
3608
|
}
|
|
3563
3609
|
}
|
|
3564
3610
|
}, [editor, attributes.onClick, readOnly]),
|