OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
core
/
main
/
ts
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 05:40:27 AM
rwxr-xr-x
📄
DragDropOverrides.ts
7.64 KB
02/20/2020 05:40:30 AM
rw-r--r--
📄
EditorRemove.ts
2.73 KB
02/20/2020 05:40:30 AM
rw-r--r--
📄
EditorSettings.ts
7.92 KB
02/20/2020 05:40:32 AM
rw-r--r--
📄
EditorView.ts
2.47 KB
02/20/2020 05:40:32 AM
rw-r--r--
📄
ErrorReporter.ts
2.43 KB
02/20/2020 05:40:33 AM
rw-r--r--
📄
ForceBlocks.ts
3.71 KB
02/20/2020 05:40:33 AM
rw-r--r--
📄
Mode.ts
4.53 KB
02/20/2020 05:40:34 AM
rw-r--r--
📄
NodeChange.ts
5.19 KB
02/20/2020 05:40:34 AM
rw-r--r--
📄
SelectionOverrides.ts
16.08 KB
02/20/2020 05:40:35 AM
rw-r--r--
📁
annotate
-
02/20/2020 05:41:49 AM
rwxr-xr-x
📁
api
-
02/20/2020 06:12:10 AM
rwxr-xr-x
📁
bookmark
-
02/20/2020 05:42:16 AM
rwxr-xr-x
📁
caret
-
02/20/2020 05:42:30 AM
rwxr-xr-x
📁
commands
-
02/20/2020 05:42:34 AM
rwxr-xr-x
📁
content
-
02/20/2020 05:42:42 AM
rwxr-xr-x
📁
delete
-
02/20/2020 05:42:54 AM
rwxr-xr-x
📁
dom
-
02/20/2020 05:43:08 AM
rwxr-xr-x
📁
file
-
02/20/2020 05:43:14 AM
rwxr-xr-x
📁
fmt
-
02/20/2020 05:43:26 AM
rwxr-xr-x
📁
focus
-
02/20/2020 05:43:32 AM
rwxr-xr-x
📁
geom
-
02/20/2020 05:43:36 AM
rwxr-xr-x
📁
html
-
02/20/2020 05:43:38 AM
rwxr-xr-x
📁
init
-
02/20/2020 05:43:46 AM
rwxr-xr-x
📁
keyboard
-
02/20/2020 05:44:00 AM
rwxr-xr-x
📁
newline
-
02/20/2020 05:44:07 AM
rwxr-xr-x
📁
selection
-
02/20/2020 05:44:24 AM
rwxr-xr-x
📁
text
-
02/20/2020 05:44:30 AM
rwxr-xr-x
📁
ui
-
02/20/2020 05:44:34 AM
rwxr-xr-x
📁
undo
-
02/20/2020 05:44:41 AM
rwxr-xr-x
📁
util
-
02/20/2020 05:44:48 AM
rwxr-xr-x
Editing: EditorView.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 { Fun, Option } from '@ephox/katamari'; import { Compare, Element, Css, Traverse } from '@ephox/sugar'; import Editor from './api/Editor'; const getProp = function (propName, elm) { const rawElm = elm.dom(); return rawElm[propName]; }; const getComputedSizeProp = function (propName, elm) { return parseInt(Css.get(elm, propName), 10); }; const getClientWidth = Fun.curry(getProp, 'clientWidth'); const getClientHeight = Fun.curry(getProp, 'clientHeight'); const getMarginTop = Fun.curry(getComputedSizeProp, 'margin-top'); const getMarginLeft = Fun.curry(getComputedSizeProp, 'margin-left'); const getBoundingClientRect = function (elm) { return elm.dom().getBoundingClientRect(); }; const isInsideElementContentArea = function (bodyElm, clientX, clientY) { const clientWidth = getClientWidth(bodyElm); const clientHeight = getClientHeight(bodyElm); return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight; }; const transpose = function (inline, elm, clientX, clientY) { const clientRect = getBoundingClientRect(elm); const deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0; const deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0; const x = clientX - deltaX; const y = clientY - deltaY; return { x, y }; }; // Checks if the specified coordinate is within the visual content area excluding the scrollbars const isXYInContentArea = function (editor: Editor, clientX, clientY) { const bodyElm = Element.fromDom(editor.getBody()); const targetElm = editor.inline ? bodyElm : Traverse.documentElement(bodyElm); const transposedPoint = transpose(editor.inline, targetElm, clientX, clientY); return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y); }; const fromDomSafe = function (node) { return Option.from(node).map(Element.fromDom); }; const isEditorAttachedToDom = function (editor: Editor) { const rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer(); return fromDomSafe(rawContainer).map(function (container) { return Compare.contains(Traverse.owner(container), container); }).getOr(false); }; export default { isXYInContentArea, isEditorAttachedToDom };