import { Assertions, GeneralSteps, Logger, Pipeline, Step } from '@ephox/agar'; import { Cell } from '@ephox/katamari'; import { Hierarchy, Element, Selectors } from '@ephox/sugar'; import CaretPosition from 'tinymce/core/caret/CaretPosition'; import BoundaryCaret from 'tinymce/core/keyboard/BoundaryCaret'; import BoundaryLocation from 'tinymce/core/keyboard/BoundaryLocation'; import Zwsp from 'tinymce/core/text/Zwsp'; import { UnitTest } from '@ephox/bedrock'; UnitTest.asynctest('browser.tinymce.core.keyboard.BoundaryCaretTest', function () { const success = arguments[arguments.length - 2]; const failure = arguments[arguments.length - 1]; const ZWSP = Zwsp.ZWSP; const isInlineTarget = function (elm) { return Selectors.is(Element.fromDom(elm), 'a[href],code'); }; const createLocation = function (elm, elementPath, offset) { const container = Hierarchy.follow(elm, elementPath); const pos = CaretPosition(container.getOrDie().dom(), offset); const location = BoundaryLocation.readLocation(isInlineTarget, elm.dom(), pos); return location; }; const sTestRenderCaret = function (html, elementPath, offset, expectedHtml, expectedPath, expectedOffset) { return Step.sync(function () { const elm = Element.fromHtml('
' + ZWSP + 'a
', [0, 0], 1), sTestRenderCaret('', [0, 0, 0], 0, '', [0, 0, 0], 1), sTestRenderCaret('', [0, 0, 0], 1, '', [0, 0, 0], 1), sTestRenderCaret('', [0], 1, 'a' + ZWSP + '
', [0, 1], 1), sTestRenderCaret('', [0], 1, '' + ZWSP + 'a
a' + ZWSP + '