Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 99 additions & 17 deletions types/ckeditor/ckeditor-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,13 @@ function test_CKEDITOR() {
CKEDITOR.replaceAll((textarea, config) => false);
}

function test_CKEDITOR_events() {
CKEDITOR.on('instanceCreated', function(event) {
// $ExpectType editor
event.editor;
});
}

function test_config() {
var config1: CKEDITOR.config = {
toolbar: 'basic',
Expand All @@ -55,18 +62,18 @@ function test_config() {
var config3: CKEDITOR.config = {
toolbarGroups: [
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
{ name: 'links', groups: [ 'links' ] },
{ name: 'insert', groups: [ 'insert' ] },
{ name: 'tools', groups: [ 'tools' ] },
{ name: 'document', groups: [ 'mode' ] },
{ name: 'about', groups: [ 'about' ] },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'paragraph' ] },
'/',
{ name: 'styles', groups: [ 'styles' ] },
{ name: 'colors', groups: [ 'colors' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
{ name: 'links', groups: [ 'links' ] },
{ name: 'insert', groups: [ 'insert' ] },
{ name: 'tools', groups: [ 'tools' ] },
{ name: 'document', groups: [ 'mode' ] },
{ name: 'about', groups: [ 'about' ] },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'paragraph' ] },
'/',
{ name: 'styles', groups: [ 'styles' ] },
{ name: 'colors', groups: [ 'colors' ] },
],
}
}
Expand Down Expand Up @@ -211,7 +218,7 @@ function test_dom_event() {
domEvent.getTarget().addClass('clicked');
});
element.on('click', ev=> {
var domEvent = ev.data;
var domEvent = ev.data as CKEDITOR.dom.event;
domEvent.preventDefault();
});
}
Expand Down Expand Up @@ -340,12 +347,14 @@ function test_adding_dialog_by_definition() {
});
}

function test_adding_plugin() {
function test_plugins() {
CKEDITOR.plugins.add( 'abbr', {
init: function( editor: CKEDITOR.editor ) {
// empty logic
}
});

console.log(CKEDITOR.plugins.registered['abbr']);
}

function test_adding_widget() {
Expand Down Expand Up @@ -508,7 +517,80 @@ function test_editor_instance_event() {
}

function test_dtd() {
var brConsideredEmptyTag = CKEDITOR.dtd.$empty["br"];
var spanCanContainText = CKEDITOR.dtd["span"]["#"];
var divCanContainSpan = CKEDITOR.dtd["div"]["span"];
var brConsideredEmptyTag = CKEDITOR.dtd.$empty['br'];
var spanCanContainText = CKEDITOR.dtd['span']['#'];
var divCanContainSpan = CKEDITOR.dtd['div']['span'];
}

function test_getSelectedHtml() {
var textarea = document.createElement('textarea');
var editor = CKEDITOR.replace(textarea);

// $ExpectType documentFragment
var sel1 = editor.getSelectedHtml();
console.log(sel1);

// $ExpectType documentFragment
var sel2 = editor.getSelectedHtml(false);
console.log(sel2);

// $ExpectType string
var sel3 = editor.getSelectedHtml(true);
console.log(sel3);

// $ExpectType string | documentFragment
var sel4 = editor.getSelectedHtml(Math.random() > 0.5);
console.log(sel4);
}

function test_element() {
var el = CKEDITOR.document.getById('myElement');
el.addClass('class');
console.log(el.hasClass('class'));
el.removeClass('class');
}

function test_selection() {
var editor = new CKEDITOR.editor();
var testNode = CKEDITOR.document.getById('myElement');

var selection = editor.getSelection();
var ranges = selection.getRanges();
for (var i = 0, c = ranges.length; i < c; i++) {
var range = ranges[i];
range.setStartBefore(testNode);
range.setStartAfter(testNode);
range.setEndBefore(testNode);
range.setEndAfter(testNode);
}
}

function test_tools() {
var obj = { key: 'value' };
CKEDITOR.tools.clone(obj);
CKEDITOR.tools.copy(obj);
CKEDITOR.tools.prototypedCopy(obj);

console.log(CKEDITOR.tools.isArray([1])); // true
console.log(CKEDITOR.tools.isArray(obj)); // false
console.log(CKEDITOR.tools.isArray(null)); // false
console.log(CKEDITOR.tools.isArray(undefined)); // false

CKEDITOR.tools.override(parseInt, function(_parseInt) {
return function(value: any, radix?: number) {
return _parseInt(value, radix);
};
});
}

function test_htmlParser() {
var html = '<div><span>text</span></div>';
var fragment = CKEDITOR.htmlParser.fragment.fromHtml(html);
fragment.forEach(function(node) {
if (node instanceof CKEDITOR.htmlParser.element) {
node.forEach(function(node) {
console.log(node);
});
}
}, CKEDITOR.NODE_ELEMENT, true);
}
50 changes: 37 additions & 13 deletions types/ckeditor/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ declare namespace CKEDITOR {
var version: string;
var config: config;


// Methods
function add(editor: editor): void;
function addCss(css: string): void;
Expand All @@ -101,6 +100,17 @@ declare namespace CKEDITOR {
function replaceAll(className?: string): void;
function replaceAll(assertionFunction: (textarea: HTMLTextAreaElement, config: config) => boolean): void;

// Event interface
function capture(): void;
function define(name: string, meta: Object): void;
function fire(eventName: string, data?: Object, editor?: editor): any;
function fireOnce(eventName: string, data?: Object, editor?: editor): any;
function hasListeners(eventName: string): boolean;
function on(eventName: string, listenerFunction: (eventInfo: eventInfo) => void, scopeObj?: Object, listenerData?: Object, priority?: number): void;
function once(eventName: string, listenerFunction: (eventInfo: eventInfo) => void, scopeObj?: Object, listenerData?: Object, priority?: number): void;
function removeAllListeners(): void;
function removeListener(eventName: string, listenerFunction: (eventInfo: eventInfo) => void): void;

type listenerRegistration = {
removeListener: () => void;
}
Expand Down Expand Up @@ -321,11 +331,11 @@ declare namespace CKEDITOR {
deleteContents(mergeThen?: boolean): void;
extractContents(mergeThen?: boolean): documentFragment;
createBookmark(serializable?: boolean): bookmark;
createBookmark2(normalized: boolean): Object;
createBookmark2(normalized?: boolean): Object;
createIterator(): iterator;
moveToBookmark(bookmark: Object): void;
getBoundaryNodes(): { startNode: node; endNode: node; };
getCommonAncestor(includeSelf: boolean, ignoreTextNode: boolean): element;
getCommonAncestor(includeSelf?: boolean, ignoreTextNode?: boolean): element;
optimize(): void;
optimizeBookmark(): void;
trim(ignoreStart?: boolean, ignoreEnd?: boolean): void;
Expand All @@ -337,6 +347,8 @@ declare namespace CKEDITOR {
selectNodeContents(node: node): void;
setStart(startNode: node, startOffset: number): void;
setEnd(endNode: node, endOffset: number): void;
setEndAfter(node: node): void;
setEndBefore(node: node): void;
setStartAfter(node: node): void;
setStartBefore(node: node): void;
setStartAt(node: node, position: number): void;
Expand Down Expand Up @@ -380,8 +392,8 @@ declare namespace CKEDITOR {
constructor(target: document);
constructor(target: element);
constructor(target: selection);
createBookmarks(serializable: Object): any[];
createBookmarks2(normalized?: Object): any[];
createBookmarks(serializable: Object): bookmark[];
createBookmarks2(normalized: Object): Object[];
fake(element: element): void;
getCommonAncestor(): element;
getNative(): Object;
Expand All @@ -406,8 +418,8 @@ declare namespace CKEDITOR {
constructor(ranges: range[]);
constructor(range: range);
createIterator(): rangeListIterator;
createBokmark(serializable: boolean): Object[];
createBookmark2(normalized: boolean): Object[];
createBokmarks(serializable?: boolean): bookmark[];
createBookmarks2(normalized?: boolean): Object[];
moveToBookmark(bookmarks: Object[]): void;
}

Expand All @@ -431,7 +443,7 @@ declare namespace CKEDITOR {
insertAfter(node: node): node;
insertBefore(node: node): node;
insertBeforeMe(node: node): node;
getAddress(normalized: boolean): Object[];
getAddress(normalized?: boolean): Object[];
getDocument(): document;
getIndex(normalized?: boolean): number;
getNextSourceNode(startFromSibling: Object, nodeType: Object, guard: Object): void;
Expand All @@ -444,7 +456,7 @@ declare namespace CKEDITOR {
getPosition(otherNode: Object): void;
getAscendant(reference: string, includeSelf?: boolean): node;
hasAscendant(name: Object, includeSelf: any): boolean;
move(preserveChildren?: boolean): node;
remove(preserveChildren?: boolean): node;
replace(nodeToReplace: node): void;
trim(): void;
ltrim(): void;
Expand All @@ -464,7 +476,7 @@ declare namespace CKEDITOR {
constructor(domEvent: Event);
getKey(): number;
getKeystroke(): number;
preventDefault(stopPropagation: boolean): void;
preventDefault(stopPropagation?: boolean): void;
stopPropagation(): void;
getTarget(): node;
getPhase(): number;
Expand Down Expand Up @@ -878,7 +890,8 @@ declare namespace CKEDITOR {
applyToRange(range: Range, editor: editor): void;
}

interface editable extends dom.element {
class editable extends dom.element {
constructor(editor: editor, element: HTMLElement | dom.element);
hasFocus: boolean;
attachListener(obj: event | editable, eventName: string, listenerFunction: (ei: eventInfo) => void,
scopeobj?: {}, listenerData?: any, priority?: number): listenerRegistration;
Expand Down Expand Up @@ -1077,13 +1090,13 @@ declare namespace CKEDITOR {

function add(name: string, definition: IPluginDefinition): void;
function add(name: string): void;
function addExternal(name: string, path: string, fileName: string): void;
function addExternal(name: string, path: string, fileName?: string): void;
function get(name: string): any;
function getFilePath(name: string): string;
function getPath(name: string): string;
function load(name: string, callback: Function, scope?: Object): void;
function setLang(pluginName: string, languageCode: string, languageEntries: any): void;

var registered: {[key: string]: IPluginDefinition};
}

interface IMenuItemDefinition {
Expand Down Expand Up @@ -1155,6 +1168,9 @@ declare namespace CKEDITOR {
getData(noEvents?: Object): string;
getMenuItem(name: string): Object;
getResizable(forContents: boolean): dom.element;
getSelectedHtml(toString?: false): dom.documentFragment;
getSelectedHtml(toString: true): string;
getSelectedHtml(toString?: boolean): CKEDITOR.dom.documentFragment | string;
getSelection(forceRealSelection?: boolean): dom.selection;
getSnapshot(): string;
getStylesSet(callback: Function): void;
Expand Down Expand Up @@ -1838,9 +1854,11 @@ declare namespace CKEDITOR {
type: number;
add(node: node): number;
add(node: node, index: number): void;
addClass(className: string): void;
clone(): element;
filter(filter: filter): boolean;
filterChildren(filter: filter): void;
forEach(callback: (node: node, type?: number) => void|false, type?: number, skipRoot?: boolean): void;
writeHtml(writer: basicWriter, filter: filter): void;
writeChildrenHtml(writer: basicWriter, filter: filter): void;
replaceWithChildren(): void;
Expand Down Expand Up @@ -1871,6 +1889,7 @@ declare namespace CKEDITOR {
add(node: node, index?: number): void;
filter(filter: filter): void;
filterChildren(filter: filter, filterRoot?: boolean): void;
forEach(callback: (node: node, type?: number) => void|false, type?: number, skipRoot?: boolean): void;
writeHtml(writer: basicWriter, filter?: filter): void;
writeChildrenHtml(writer: basicWriter, filter?: filter, filterRoot?: boolean): void;
forEach(callback: (node: node, type?: number) => boolean, type?: number, skipRoot?: boolean): void;
Expand Down Expand Up @@ -1908,8 +1927,13 @@ declare namespace CKEDITOR {

namespace tools {
var callFunction: Function;
function clone(source: Object): Object;
function copy(source: Object): Object;
function enableHtml5Elements(doc: Object, withAppend?: Boolean): void;
function isArray<T>(object: any|null|undefined): object is T[];
function override<T extends Function>(originalFunction: T, functionBuilder: (originalFunction: T) => T): T;
function parseCssText(styleText: string, normalize?: Boolean, nativeNormalize?: Boolean): { [key: string]: string }
function prototypedCopy(source: Object): Object;
function writeCssText(style: { [key: string]: string }, sort?: Boolean): string;
}

Expand Down