[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
pmb
/
assets
/
tinymce
/
src
/
core
/
src
/
main
/
js
/
[
Home
]
File: EditorView.js
/** * EditorView.js * * Released under LGPL License. * Copyright (c) 1999-2016 Ephox Corp. All rights reserved * * License: http://www.tinymce.com/license * Contributing: http://www.tinymce.com/contributing */ define( 'tinymce.core.EditorView', [ 'ephox.katamari.api.Fun', 'ephox.katamari.api.Option', 'ephox.sugar.api.dom.Compare', 'ephox.sugar.api.node.Element', 'ephox.sugar.api.properties.Css', 'ephox.sugar.api.search.Traverse' ], function (Fun, Option, Compare, Element, Css, Traverse) { var getProp = function (propName, elm) { var rawElm = elm.dom(); return rawElm[propName]; }; var getComputedSizeProp = function (propName, elm) { return parseInt(Css.get(elm, propName), 10); }; var getClientWidth = Fun.curry(getProp, 'clientWidth'); var getClientHeight = Fun.curry(getProp, 'clientHeight'); var getMarginTop = Fun.curry(getComputedSizeProp, 'margin-top'); var getMarginLeft = Fun.curry(getComputedSizeProp, 'margin-left'); var getBoundingClientRect = function (elm) { return elm.dom().getBoundingClientRect(); }; var isInsideElementContentArea = function (bodyElm, clientX, clientY) { var clientWidth = getClientWidth(bodyElm); var clientHeight = getClientHeight(bodyElm); return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight; }; var transpose = function (inline, elm, clientX, clientY) { var clientRect = getBoundingClientRect(elm); var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0; var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0; var x = clientX - deltaX; var y = clientY - deltaY; return { x: x, y: y }; }; // Checks if the specified coordinate is within the visual content area excluding the scrollbars var isXYInContentArea = function (editor, clientX, clientY) { var bodyElm = Element.fromDom(editor.getBody()); var targetElm = editor.inline ? bodyElm : Traverse.documentElement(bodyElm); var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY); return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y); }; var fromDomSafe = function (node) { return Option.from(node).map(Element.fromDom); }; var isEditorAttachedToDom = function (editor) { var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer(); return fromDomSafe(rawContainer).map(function (container) { return Compare.contains(Traverse.owner(container), container); }).getOr(false); }; return { isXYInContentArea: isXYInContentArea, isEditorAttachedToDom: isEditorAttachedToDom }; } );