OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
core
/
main
/
ts
/
keyboard
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 05:44:43 AM
rwxr-xr-x
📄
ArrowKeys.ts
2.28 KB
02/20/2020 05:43:50 AM
rw-r--r--
📄
BoundaryCaret.ts
2.59 KB
02/20/2020 05:43:50 AM
rw-r--r--
📄
BoundaryLocation.ts
6.56 KB
02/20/2020 05:43:51 AM
rw-r--r--
📄
BoundarySelection.ts
4.54 KB
02/20/2020 05:43:52 AM
rw-r--r--
📄
CefNavigation.ts
9.07 KB
02/20/2020 05:43:52 AM
rw-r--r--
📄
CefUtils.ts
2.54 KB
02/20/2020 05:43:53 AM
rw-r--r--
📄
ContentEndpointNavigation.ts
2.99 KB
02/20/2020 05:43:54 AM
rw-r--r--
📄
DeleteBackspaceKeys.ts
3.49 KB
02/20/2020 05:43:54 AM
rw-r--r--
📄
EnterKey.ts
1.29 KB
02/20/2020 05:43:55 AM
rw-r--r--
📄
FormatShortcuts.ts
886 bytes
02/20/2020 05:43:55 AM
rw-r--r--
📄
HomeEndKeys.ts
980 bytes
02/20/2020 05:43:56 AM
rw-r--r--
📄
InlineUtils.ts
3.26 KB
02/20/2020 05:43:56 AM
rw-r--r--
📄
InputKeys.ts
1.55 KB
02/20/2020 05:43:57 AM
rw-r--r--
📄
InsertSpace.ts
2.3 KB
02/20/2020 05:43:57 AM
rw-r--r--
📄
KeyboardOverrides.ts
1011 bytes
02/20/2020 05:43:58 AM
rw-r--r--
📄
MatchKeys.ts
1.64 KB
02/20/2020 05:43:58 AM
rw-r--r--
📄
Nbsps.ts
5.95 KB
02/20/2020 05:43:59 AM
rw-r--r--
📄
SpaceKey.ts
1 KB
02/20/2020 05:43:59 AM
rw-r--r--
📄
TableNavigation.ts
6.86 KB
02/20/2020 05:44:00 AM
rw-r--r--
Editing: InsertSpace.ts
Close
/** * Copyright (c) Tiny Technologies, Inc. All rights reserved. * Licensed under the LGPL or a commercial license. * For LGPL see License.txt in the project root for license information. * For commercial licenses see https://www.tiny.cloud/ */ import { Option, Fun } from '@ephox/katamari'; import { Element } from '@ephox/sugar'; import CaretPosition from '../caret/CaretPosition'; import Editor from '../api/Editor'; import { insertNbspAtPosition, insertSpaceAtPosition } from '../caret/InsertText'; import InlineUtils from './InlineUtils'; import BoundaryLocation from './BoundaryLocation'; import { needsToHaveNbsp } from './Nbsps'; import CaretFinder from '../caret/CaretFinder'; const insertSpaceOrNbspAtPosition = (root: Element, pos: CaretPosition): Option<CaretPosition> => { return needsToHaveNbsp(root, pos) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos); }; const locationToCaretPosition = (root: Element) => (location) => { return location.fold( (element) => CaretFinder.prevPosition(root.dom(), CaretPosition.before(element)), (element) => CaretFinder.firstPositionIn(element), (element) => CaretFinder.lastPositionIn(element), (element) => CaretFinder.nextPosition(root.dom(), CaretPosition.after(element)) ); }; const insertInlineBoundarySpaceOrNbsp = (root: Element, pos: CaretPosition) => (checkPos: CaretPosition) => { return needsToHaveNbsp(root, checkPos) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos); }; const setSelection = (editor: Editor) => (pos: CaretPosition) => { editor.selection.setRng(pos.toRange()); editor.nodeChanged(); return true; }; const insertSpaceOrNbspAtSelection = (editor: Editor): boolean => { const pos = CaretPosition.fromRangeStart(editor.selection.getRng()); const root = Element.fromDom(editor.getBody()); if (editor.selection.isCollapsed()) { const isInlineTarget = Fun.curry(InlineUtils.isInlineTarget, editor); const caretPosition = CaretPosition.fromRangeStart(editor.selection.getRng()); return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), caretPosition) .bind(locationToCaretPosition(root)) .bind(insertInlineBoundarySpaceOrNbsp(root, pos)) .exists(setSelection(editor)); } else { return false; } }; export { insertSpaceOrNbspAtPosition, insertSpaceOrNbspAtSelection };