PHP Classes

File: public/js/tinymce/src/themes/mobile/src/main/js/android/core/AndroidSetup.js

Recommend this page to a friend!
  Classes of Abed Nego Ragil Putra   GoLavaCMS   public/js/tinymce/src/themes/mobile/src/main/js/android/core/AndroidSetup.js   Download  
File: public/js/tinymce/src/themes/mobile/src/main/js/android/core/AndroidSetup.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: GoLavaCMS
Publish content on Web pages with SEO support
Author: By
Last change:
Date: 6 years ago
Size: 3,173 bytes
 

Contents

Class file image Download
define( 'tinymce.themes.mobile.android.core.AndroidSetup', [ 'ephox.katamari.api.Fun', 'ephox.katamari.api.Option', 'ephox.sugar.api.events.DomEvent', 'ephox.sugar.api.node.Element', 'ephox.sugar.api.properties.Attr', 'global!Math', 'tinymce.themes.mobile.android.focus.ResumeEditing', 'tinymce.themes.mobile.style.Styles', 'tinymce.themes.mobile.util.DataAttributes', 'tinymce.themes.mobile.util.Rectangles' ], function (Fun, Option, DomEvent, Element, Attr, Math, ResumeEditing, Styles, DataAttributes, Rectangles) { // This amount is added to the minimum scrolling distance when calculating how much to scroll // because the soft keyboard has appeared. var EXTRA_SPACING = 50; var data = 'data-' + Styles.resolve('last-outer-height'); var setLastHeight = function (cBody, value) { Attr.set(cBody, data, value); }; var getLastHeight = function (cBody) { return DataAttributes.safeParse(cBody, data); }; var getBoundsFrom = function (rect) { return { top: Fun.constant(rect.top()), bottom: Fun.constant(rect.top() + rect.height()) }; }; var getBounds = function (cWin) { var rects = Rectangles.getRectangles(cWin); return rects.length > 0 ? Option.some(rects[0]).map(getBoundsFrom) : Option.none(); }; var findDelta = function (outerWindow, cBody) { var last = getLastHeight(cBody); var current = outerWindow.innerHeight; return last > current ? Option.some(last - current) : Option.none(); }; var calculate = function (cWin, bounds, delta) { // The goal here is to shift as little as required. var isOutside = bounds.top() > cWin.innerHeight || bounds.bottom() > cWin.innerHeight; return isOutside ? Math.min(delta, bounds.bottom() - cWin.innerHeight + EXTRA_SPACING) : 0; }; var setup = function (outerWindow, cWin) { var cBody = Element.fromDom(cWin.document.body); var toEditing = function () { // TBIO-3816 throttling the resume was causing keyboard hide/show issues with undo/redo // throttling was introduced to work around a different keyboard hide/show issue, where // async uiChanged in Processor in polish was causing keyboard hide, which no longer seems to occur ResumeEditing.resume(cWin); }; var onResize = DomEvent.bind(Element.fromDom(outerWindow), 'resize', function () { findDelta(outerWindow, cBody).each(function (delta) { getBounds(cWin).each(function (bounds) { // If the top is offscreen, scroll it into view. var cScrollBy = calculate(cWin, bounds, delta); if (cScrollBy !== 0) { cWin.scrollTo(cWin.pageXOffset, cWin.pageYOffset + cScrollBy); } }); }); setLastHeight(cBody, outerWindow.innerHeight); }); setLastHeight(cBody, outerWindow.innerHeight); var destroy = function () { onResize.unbind(); }; return { toEditing: toEditing, destroy: destroy }; }; return { setup: setup }; } );