PHP Classes

File: public/js/tinymce/src/core/src/test/js/browser/dom/SelectionEventsTest.js

Recommend this page to a friend!
  Classes of Abed Nego Ragil Putra   GoLavaCMS   public/js/tinymce/src/core/src/test/js/browser/dom/SelectionEventsTest.js   Download  
File: public/js/tinymce/src/core/src/test/js/browser/dom/SelectionEventsTest.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: 4,762 bytes
 

Contents

Class file image Download
asynctest( 'browser.tinymce.core.dom.SelectionEventsTest', [ 'ephox.agar.api.Assertions', 'ephox.agar.api.GeneralSteps', 'ephox.agar.api.Logger', 'ephox.agar.api.Pipeline', 'ephox.agar.api.Step', 'ephox.katamari.api.Cell', 'ephox.katamari.api.Fun', 'ephox.mcagar.api.TinyApis', 'ephox.mcagar.api.TinyLoader', 'ephox.sugar.api.node.Element', 'global!document', 'tinymce.themes.modern.Theme' ], function (Assertions, GeneralSteps, Logger, Pipeline, Step, Cell, Fun, TinyApis, TinyLoader, Element, document, Theme) { var success = arguments[arguments.length - 2]; var failure = arguments[arguments.length - 1]; Theme(); var mBindEventMutator = function (editor, eventName, mutator) { return Step.stateful(function (value, next, die) { var eventArgs = Cell(); var handler = function (e) { mutator(editor, e); eventArgs.set(e); }; editor.on(eventName, handler); next({ eventArgs: eventArgs, handler: handler }); }); }; var mBindEvent = function (editor, eventName) { return mBindEventMutator(editor, eventName, Fun.noop); }; var mUnbindEvent = function (editor, eventName) { return Step.stateful(function (value, next, die) { editor.off(eventName, value.handler); next({}); }); }; var mAssertSetSelectionEventArgs = function (editor, expectedForward) { return Step.stateful(function (value, next, die) { Assertions.assertEq('Should be expected forward flag', expectedForward, value.eventArgs.get().forward); assertSelectAllRange(editor, value.eventArgs.get().range); next(value); }); }; var getSelectAllRng = function (editor) { var rng = document.createRange(); rng.setStartBefore(editor.getBody().firstChild); rng.setEndAfter(editor.getBody().firstChild); return rng; }; var sSetRng = function (editor, forward) { return Step.sync(function () { editor.selection.setRng(getSelectAllRng(editor), forward); }); }; var sGetRng = function (editor, forward) { return Step.sync(function () { editor.selection.getRng(); }); }; var selectAll = function (editor, eventArgs) { eventArgs.range = getSelectAllRng(editor); }; var assertSelectAllRange = function (editor, actualRng) { Assertions.assertDomEq( 'Should be expected startContainer', Element.fromDom(editor.getBody()), Element.fromDom(actualRng.startContainer) ); Assertions.assertDomEq( 'Should be expected endContainer', Element.fromDom(editor.getBody()), Element.fromDom(actualRng.endContainer) ); }; TinyLoader.setup(function (editor, onSuccess, onFailure) { var tinyApis = TinyApis(editor); Pipeline.async({}, [ tinyApis.sFocus, Logger.t('SetSelectionRange event', GeneralSteps.sequence([ mBindEvent(editor, 'SetSelectionRange'), tinyApis.sSetContent('<p>a</p>'), sSetRng(editor, undefined), mAssertSetSelectionEventArgs(editor, undefined), sSetRng(editor, true), mAssertSetSelectionEventArgs(editor, true), sSetRng(editor, false), mAssertSetSelectionEventArgs(editor, false), mUnbindEvent(editor, 'SetSelectionRange') ])), Logger.t('AfterSetSelectionRange event', GeneralSteps.sequence([ mBindEvent(editor, 'AfterSetSelectionRange'), tinyApis.sSetContent('<p>a</p>'), sSetRng(editor, undefined), Step.stateful(function (value, next, die) { Assertions.assertEq('', 'undefined', typeof value.eventArgs.get().forward); next(value); }), sSetRng(editor, true), mAssertSetSelectionEventArgs(editor, true), sSetRng(editor, false), mAssertSetSelectionEventArgs(editor, false), mUnbindEvent(editor, 'AfterSetSelectionRange') ])), Logger.t('GetSelectionRange event', GeneralSteps.sequence([ mBindEventMutator(editor, 'GetSelectionRange', selectAll), tinyApis.sSetContent('<p>a</p>'), tinyApis.sSetCursor([0, 0], 0), sGetRng(editor), Step.stateful(function (value, next, die) { assertSelectAllRange(editor, editor.selection.getRng()); assertSelectAllRange(editor, value.eventArgs.get().range); next(value); }), mUnbindEvent(editor, 'GetSelectionRange') ])) ], onSuccess, onFailure); }, { skin_url: '/project/src/skins/lightgray/dist/lightgray' }, success, failure); } );