OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
themes
/
silver
/
main
/
ts
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 06:33:47 AM
rwxr-xr-x
📄
Autocompleter.ts
5.13 KB
02/20/2020 06:45:58 AM
rw-r--r--
📄
ContextToolbar.ts
8 KB
02/20/2020 06:45:59 AM
rw-r--r--
📄
Events.ts
3.03 KB
02/20/2020 06:46:00 AM
rw-r--r--
📄
InlinePopup.ts
1.55 KB
02/20/2020 06:46:01 AM
rw-r--r--
📄
Render.ts
10.12 KB
02/20/2020 06:46:01 AM
rw-r--r--
📄
Theme.ts
1.4 KB
02/20/2020 06:46:02 AM
rw-r--r--
📁
alien
-
02/20/2020 06:33:51 AM
rwxr-xr-x
📁
api
-
02/20/2020 06:33:51 AM
rwxr-xr-x
📁
backstage
-
02/20/2020 06:33:58 AM
rwxr-xr-x
📁
modes
-
02/20/2020 06:34:02 AM
rwxr-xr-x
📁
ui
-
02/20/2020 06:40:48 AM
rwxr-xr-x
Editing: InlinePopup.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 { Range } from '@ephox/dom-globals'; import { Option } from '@ephox/katamari'; // TODO: Obviously, move out of UI const isValidTextRange = (rng: Range): boolean => { return rng.collapsed && rng.startContainer.nodeType === 3; }; const whiteSpace = /[\u00a0 \t\r\n]/; const parse = (text: string, index: number, ch: string, minChars): Option<string> => { // Identify the `char` in, and start the text from that point forward. If there is ever any whitespace, fail let i; for (i = index - 1; i >= 0; i--) { if (whiteSpace.test(text.charAt(i))) { return Option.none(); } if (text.charAt(i) === ch) { break; } } if (i === -1 || index - i < minChars) { return Option.none(); } return Option.some(text.substring(i + 1, index)); }; const getContext = (initRange: Range, ch: string, text: string, index: number, minChars: number): Option<{ rng: Range, text: string }> => { if (!isValidTextRange(initRange)) { return Option.none(); } return parse(text, index, ch, minChars).map((newText) => { const rng = initRange.cloneRange(); rng.setStart(initRange.startContainer, initRange.startOffset - newText.length - 1); rng.setEnd(initRange.startContainer, initRange.startOffset); return { text: newText, rng }; }); }; export { getContext };