/
widget.js
51 lines (42 loc) · 1.52 KB
/
widget.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
/**
* @module table/utils/ui/widget
*/
import { isWidget } from '@ckeditor/ckeditor5-widget/src/utils';
import { findAncestor } from '../common';
/**
* Returns a table widget editing view element if one is selected.
*
* @param {module:engine/view/selection~Selection|module:engine/view/documentselection~DocumentSelection} selection
* @returns {module:engine/view/element~Element|null}
*/
export function getSelectedTableWidget( selection ) {
const viewElement = selection.getSelectedElement();
if ( viewElement && isTableWidget( viewElement ) ) {
return viewElement;
}
return null;
}
/**
* Returns a table widget editing view element if one is among the selection's ancestors.
*
* @param {module:engine/view/selection~Selection|module:engine/view/documentselection~DocumentSelection} selection
* @returns {module:engine/view/element~Element|null}
*/
export function getTableWidgetAncestor( selection ) {
const parentTable = findAncestor( 'table', selection.getFirstPosition() );
if ( parentTable && isTableWidget( parentTable.parent ) ) {
return parentTable.parent;
}
return null;
}
// Checks if a given view element is a table widget.
//
// @param {module:engine/view/element~Element} viewElement
// @returns {Boolean}
function isTableWidget( viewElement ) {
return !!viewElement.getCustomProperty( 'table' ) && isWidget( viewElement );
}