import { describe, it } from '@ephox/bedrock-client';
import { Arr } from '@ephox/katamari';
import { LegacyUnit } from '@ephox/wrap-mcagar';
import { assert } from 'chai';
import * as Dimensions from 'tinymce/core/dom/Dimensions';
import * as ViewBlock from '../../module/test/ViewBlock';
describe('browser.tinymce.core.dom.DimensionsTest', () => {
const viewBlock = ViewBlock.bddSetup();
const setupHtml = (html: string) => {
viewBlock.update(html);
return viewBlock.get();
};
it('getClientRects', () => {
const viewElm = setupHtml('abc123');
assert.lengthOf(Dimensions.getClientRects([ viewElm.firstChild as Text ]), 1);
assert.lengthOf(Dimensions.getClientRects([ viewElm.lastChild as HTMLSpanElement ]), 1);
LegacyUnit.equalDom(Dimensions.getClientRects([ viewElm.firstChild as Text ])[0].node, viewElm.firstChild as Text);
assert.isAbove(Dimensions.getClientRects([ viewElm.firstChild as HTMLSpanElement ])[0].left, 3);
assert.isAbove(Dimensions.getClientRects([ viewElm.lastChild as Text ])[0].left, 3);
});
it('getClientRects from array', () => {
const viewElm = setupHtml('ab');
const clientRects = Dimensions.getClientRects(Arr.from(viewElm.childNodes));
assert.lengthOf(clientRects, 2);
LegacyUnit.equalDom(clientRects[0].node, viewElm.childNodes[0]);
LegacyUnit.equalDom(clientRects[1].node, viewElm.childNodes[1]);
});
it('TINY-8532: getClientRects with comment nodes', () => {
const viewElm = setupHtml('ab');
const clientRects = Dimensions.getClientRects(Arr.from(viewElm.childNodes));
assert.lengthOf(clientRects, 2);
LegacyUnit.equalDom(clientRects[0].node, viewElm.childNodes[0]);
LegacyUnit.equalDom(clientRects[1].node, viewElm.childNodes[2]);
});
});