diff --git a/README.md b/README.md index ba380d9c93..a3629d424b 100755 --- a/README.md +++ b/README.md @@ -283,6 +283,7 @@ List of Definitions * [Zepto.js](http://zeptojs.com/) (by [Josh Baldwin](https://github.com/jbaldwin)) * [Zynga Scroller](https://github.com/zynga/scroller) (by [Boris Yankov](https://github.com/borisyankov)) * [ZeroClipboard](https://github.com/jonrohan/ZeroClipboard) (by [Eric J. Smith](https://github.com/ejsmith)) +* [CKEditor](https://github.com/ckeditor/ckeditor-dev) (by [Ondrej Sevcik](https://github.com/ondrejsevcik)) Requested Definitions --------------------- diff --git a/ckeditor/ckeditor-tests.ts b/ckeditor/ckeditor-tests.ts new file mode 100644 index 0000000000..976b857174 --- /dev/null +++ b/ckeditor/ckeditor-tests.ts @@ -0,0 +1,254 @@ +/// + +function test_CKEDITOR() { + CKEDITOR.basePath = 'test'; + CKEDITOR.replaceClass = 'rich_editor'; + CKEDITOR.skinName = 'moono'; + CKEDITOR.skinName = 'myskin,/customstuff/myskin/'; + var editor = new CKEDITOR.editor(); + if (editor.getSelection().getType() == CKEDITOR.SELECTION_ELEMENT) + if (editor.getSelection().getType() == CKEDITOR.SELECTION_NONE) + if (editor.getSelection().getType() == CKEDITOR.SELECTION_TEXT) + alert(CKEDITOR.basePath); + if (CKEDITOR.currentInstance) + alert(CKEDITOR.currentInstance.name); + alert(CKEDITOR.document.getBody().getName()); + alert(CKEDITOR.instances[0].name); + CKEDITOR.loadFullCoreTimeout = 5; + alert(CKEDITOR.revision); + alert(CKEDITOR.rnd); + if (CKEDITOR.status == 'loaded') { + CKEDITOR.loadFullCore(); + } + alert(CKEDITOR.timestamp); + CKEDITOR.addCss('.cke_editable h1,.cke_editable h2,.cke_editable h3 { border-bottom: 1px dotted red }'); + CKEDITOR.appendTo('editorSpace'); + alert(CKEDITOR.getUrl('skins/default/editor.css')); + alert(CKEDITOR.getUrl('/skins/default/editor.css')); + alert(CKEDITOR.getUrl('http://www.somesite.com/skins/default/editor.css')); + CKEDITOR.inline('content'); + if (CKEDITOR.loadFullCore) + CKEDITOR.loadFullCore(); + CKEDITOR.replace('myfield'); + var textarea = document.createElement('textarea'); + CKEDITOR.replace(textarea); + CKEDITOR.replaceAll(); + CKEDITOR.replaceAll('myClassName'); + CKEDITOR.replaceAll((textarea, config) => false); +} + +function test_dom_comment() { + var type = CKEDITOR.NODE_COMMENT; + var nativeNode = document.createComment('Example'); + var comment = new CKEDITOR.dom.comment(nativeNode); + var comment2 = new CKEDITOR.dom.comment('Example'); +} + +function test_dom_document() { + var document = new CKEDITOR.dom.document(window.document); + var type = CKEDITOR.NODE_DOCUMENT; + CKEDITOR.document.appendStyleSheet('/mystyles.css'); + var element = CKEDITOR.document.getBody(); + alert(element.getName()); + var element2 = CKEDITOR.document.getById('myElement'); + alert(element.getId()); + var element3 = CKEDITOR.document.getHead(); + alert(element.getName()); + var selection = CKEDITOR.instances[0].document.getSelection(); + alert(selection.getType()); + document.write( + '' + + 'Sample Doc' + + 'Document contents created by code' + + '' + ); +} + +function test_dom_documentFragment() { + var type = CKEDITOR.NODE_DOCUMENT_FRAGMENT; +} + +function test_dom_domObject() { + var element = new CKEDITOR.dom.element('span'); + alert(element.$.nodeType); + var nativeElement = element.$; + var doc = new CKEDITOR.dom.document(document); + alert(doc.equals(CKEDITOR.document)); + alert(doc == CKEDITOR.document); + var element2 = new CKEDITOR.dom.element('span'); + alert(element.getCustomData('hasCustomData')); + alert(element.getCustomData('nonExistingKey')); + var elementA = new CKEDITOR.dom.element(nativeElement); + elementA.getPrivate().value = 1; + var elementB = new CKEDITOR.dom.element(nativeElement).getPrivate().value; + var element3 = new CKEDITOR.dom.element('span'); + element.setCustomData('hasCustomData', true); +} + +function test_dom_element() { + var element = new CKEDITOR.dom.element('span'); + alert(element.$.nodeType); + element.addClass('classA'); + element.addClass('classB'); + element.addClass('classA'); + var p = new CKEDITOR.dom.element('p'); + var strong = new CKEDITOR.dom.element('strong'); + p.append(strong); + var em = p.append('em'); + var p = new CKEDITOR.dom.element('p'); + p.appendText('This is'); + p.appendText(' some text'); + element.breakParent(strong); + element.data('extra-info', 'test'); + alert(element.data('extra-info')); + element.data('extra-info', false); + var element5 = CKEDITOR.document.getById('myTextarea'); + element.focus(); + element.focusNext(); + element.focusPrevious(); + element.forEach(node=> { + console.log(node); + }); + var element2 = CKEDITOR.dom.element.createFromHtml(''); + alert(element.getAttribute('type')); + alert(element.getComputedStyle('display')); + element.appendTo(CKEDITOR.document.getBody()); + alert(element.getEditor().name); + var first = element.getFirst(); + alert(element.getHtml()); + alert(element.getId()); + alert(element.getName()); + alert('' + element.getNameAtt() + ''); + alert(element.getOuterHtml()); + alert(element.getTabIndex()); + alert(element.getText()); + alert(element.hasAttributes()); + alert(element.hasAttributes()); + element.hide(); + alert(element.is('span')); + alert(element.is('p', 'span')); + alert(element.is('p')); + alert(element.is('p', 'div')); + alert(element.is({ p: 1, span: 1 })); + element.removeAttribute('class'); + element.addClass('classA'); + element.addClass('classB'); + element.removeClass('classA'); + element.removeClass('classB'); + element.removeStyle('display'); + element.setAttribute('class', 'myClass'); + element.setAttribute('title', 'This is an example'); + element.setAttributes({ + 'class': 'myClass', + title: 'This is an example' + }); + p.setHtml('Inner HTML'); + element.setOpacity(0.75); + element.setStyle('background-color', '#ff0000'); + element.setStyle('margin-top', '10px'); + element.setStyle('float', 'right'); + element.setStyles({ + position: 'absolute', + float: 'right' + }); + element.setText('A > B & C < D'); + element.show(); + element.unselectable(); + alert(element.getName()); + alert(element == CKEDITOR.dom.element.get(element)); + var htmlElement = document.getElementById('myElement'); + alert(CKEDITOR.dom.element.get(htmlElement).getName()); +} + +function test_dom_event() { + var event = new CKEDITOR.dom.event(new Event()); + alert(event.getKey()); + alert(event.getKeystroke() == 65); + alert(event.getKeystroke() == CKEDITOR.CTRL + 65); + alert(event.getKeystroke() == CKEDITOR.CTRL + CKEDITOR.SHIFT + 65); + var element = new CKEDITOR.dom.element('div'); + element.on('mousemouse', ev=> { + var pageOffset = ev.data.getPageOffset(); + alert(pageOffset.x); + alert(pageOffset.y); + }); + element.on('click', ev=> { + var domEvent = ev.data; + domEvent.getTarget().addClass('clicked'); + }); + element.on('click', ev=> { + var domEvent = ev.data; + domEvent.preventDefault(); + }); +} + +function test_dom_iterator() { + var range = new CKEDITOR.dom.range(new CKEDITOR.dom.element('div')); + var iterator = range.createIterator(); + iterator.getNextParagraph(); + iterator.getNextParagraph(); +} + +function test_dom_node() { + var p = new CKEDITOR.dom.element('p'); + var strong = new CKEDITOR.dom.element('strong'); + strong.appendTo(p); + var node = new CKEDITOR.dom.node(new Node()); + node = node.getAscendant('b'); + node = node.getAscendant('b', true); + var element = CKEDITOR.document.getById('example'); + alert(element.getDocument().equals(CKEDITOR.document)); + element.getIndex(); + element.getIndex(true); + var last = element.getFirst().getNext(); + var parent = node.getParent(); + alert(parent.getName()); + var parents = node.getParents(); + var em = new CKEDITOR.dom.element('em'); + strong.insertAfter(em); + strong.insertBefore(em); + strong.insertBeforeMe(em); + element.isReadOnly(); +} + +function test_dom_nodeList() { + var nodeList = CKEDITOR.document.getBody().getChildren(); + alert(nodeList.count()); +} + +function test_dom_range() { + var editor = new CKEDITOR.editor(); + var range = new CKEDITOR.dom.range(editor.document); + range.selectNodeContents(editor.document.getBody()); + range.deleteContents(); + range.selectNodeContents(editor.document.getBody()); + alert(range.collapsed); + range.collapse(); + alert(range.collapsed); + range.selectNodeContents(range.document.getBody()); + range.selectNodeContents(editor.document.getBody()); + alert(range.endContainer.getName()); + range.selectNodeContents(editor.document.getBody()); + alert(range.endOffset); + range.selectNodeContents(editor.document.getBody()); + alert(range.startContainer.getName()); + range.selectNodeContents(editor.document.getBody()); + alert(range.startOffset); +} + +function test_dom_text() { + var nativeNode = document.createTextNode('Example'); + var text = new CKEDITOR.dom.text(nativeNode); + var text2 = new CKEDITOR.dom.text('Example'); +} + +function test_dom_window() { + var document = new CKEDITOR.dom.window(window); + var win = new CKEDITOR.dom.window(window); + var pos = win.getScrollPosition(); + alert(pos.x); + alert(pos.y); + var size = win.getViewPaneSize(); + alert(size.width); + alert(size.height); +} \ No newline at end of file diff --git a/ckeditor/ckeditor.d.ts b/ckeditor/ckeditor.d.ts new file mode 100644 index 0000000000..ba81a6a1b8 --- /dev/null +++ b/ckeditor/ckeditor.d.ts @@ -0,0 +1,954 @@ +// Type definitions for CKEditor +// Project: http://ckeditor.com/ +// Definitions by: Ondrej Sevcik +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +// WORK-IN-PROGRESS: Any contribution support welcomed. +// See https://github.com/borisyankov/DefinitelyTyped/issues/1827 for more informations. +declare module CKEDITOR { + + // Config options + var disableAutoInline: boolean; + var replaceClass: string; + var skinName: string; + + // Properties + var ALT: number; + var CTRL: number; + var DIALOG_RESIZE_BOTH: number; + var DIALOG_RESIZE_HEIGHT: number; + var DIALOG_RESIZE_NONE: number; + var DIALOG_RESIZE_WIDTH: number; + var ELEMENT_MODE_APPENDTO: number; + var ELEMENT_MODE_INLINE: number; + var ELEMENT_MODE_NONE: number; + var ELEMENT_MODE_REPLACE: number; + var END: number; + var ENTER_BR: number; + var ENTER_P: number; + var EVENT_PHASE_AT_TARGET: number; + var EVENT_PHASE_BUBBLING: number; + var EVENT_PHASE_CAPTURING: number; + var LINEUTILS_AFTER: number; + var LINEUTILS_BEFORE: number; + var LINEUTIS_INSIDE: number; + var NODE_COMMENT: number; + var NODE_DOCUMENT: number; + var NODE_DOCUMENT_FRAGMENT: number; + var NODE_ELEMENT: number; + var NODE_TEXT: number; + var SELECTION_ELEMENT: number; + var SELECTION_NONE: number; + var SELECTION_TEXT: number; + var SHIFT: number; + var SHRINK_ELEMENT: number; + var SHRINK_TEXT: number; + var START: number; + var TRISTATE_DISABLED: number; + var TRISTATE_OFF: number; + var TRISTATE_ON: number; + var UI_BUTTON: string; + var UI_MENUBUTTON: string; + var UI_PANEL: string; + var UI_PANELBUTTON: string; + var UI_RICHCOMBO: string; + var UI_SEPARATOR: string; + var basePath: string; + var currentInstance: editor; + var document: dom.document; + var instances: editor[]; + var loadFullCoreTimeout: number; + var revision: string; + var rnd: number; + var status: string; + var timestamp: string; + var version: string; + + + // Methods + function add(editor: editor): void; + function addCss(css: string): void; + function addTemplate(name: string, source: string): template; + function appendTo(element: string, config?: config, data?: string): editor; + function appendTo(element: HTMLTextAreaElement, config?: config, data?: string): editor; + function domReady(): void; + function editorConfig(config: config): void; + function getCss(): string; + function getTemplate(name: string): template; + function getUrl(resource: string): string; + function inline(element: string, instanceConfig?: config): editor; + function inline(element: HTMLTextAreaElement, instanceConfig?: config): editor; + function inlineAll(): void; + function loadFullCore(): void; + function replace(element: string, config?: config): editor; + function replace(element: HTMLTextAreaElement, config?: config): editor; + function replaceAll(className?: string): void; + function replaceAll(assertionFunction: (textarea: HTMLTextAreaElement, config: config) => boolean): void; + + + module dom { + + class comment { + + // Properties + type: number; + + // Methods + constructor(comment: string, ownerDocument?: document); + constructor(comment: Object, ownerDocument?: document); + getOuterHtml(): string; + + } + + + class document extends domObject { + + // Properties + type: number; + + // Methods + constructor(domDocument: Object); + appendStyleSheet(cssFileUrl: string): void; + appendStyleText(cssStyleText: string): Object; + createElement(name: string, attribsAndStyles?: { attributes: Object; styles: Object; }): element; + createText(text: string): element; + find(selector: string): nodeList; + findOne(selector: string): element; + focus(): void; + getActive(): element; + getBody(): element; + getByAddress(address: any[], normalized?: boolean): node; + getById(elementId: string): element; + getDocumentElement(): element; + getElementsByTag(tagName: string): nodeList; + getHead(): element; + getSelection(): selection; + getWindow(): window; + write(html: string): void; + + } + + + class documentFragment { + + // Properties + type: number; + + // Methods + constructor(nodeOrDoc: Object); + insertAfterNode(node: node): void; + + } + + + class domObject extends event { + + // Properties + $: HTMLElement; + + // Methods + constructor(nativeDomObject: Object); + clearCustomData(): void; + equals(object: any): boolean; + getCustomData(key: string): any; + getPrivate(): any; + getUniqueId(): number; + removeAllListeners(): void; + removeCustomData(key: string): Object; + setCustomData(key: string, value: Object): domObject; + + } + + + class element extends node { + + // Properties + type: number; + + // Methods + constructor(element: string, ownerDocument?: document); + constructor(element: HTMLElement, ownerDocument?: document); + addClass(className: string): void; + append(node: node, toStart?: boolean): node; + append(node: string, toStart?: boolean): node; + appendBogus(force: boolean): void; + appendHtml(html: string): void; + appendText(text: string): node; + breakParent(parent: element): void; + contains(node: node): boolean; + copyAttributes(dest: element, skipAttributes: Object): void; + data(name: string): string; + data(name: string, value: string): void; + data(name: string, value: boolean): void; + disableContextMenu(): void; + find(selector: string): nodeList; + findOne(selector: string): element; + focus(defer?: boolean): void; + focusNext(ignoreChildren?: boolean, indexToUse?: number): void; + focusPrevious(ignoreChildren?: boolean, indexToUse?: number): void; + forEach(callback: (node: node) => void, type?: number, skipRoot?: boolean): void; + getAttribute(name: string): string; + getBogus(): Object; + getChild(indices: number): node; + getChild(indices: number[]): node; + getChildCount(): number; + getChildren(): nodeList; + getClientRect(): any; + getComputedStyle(propertyName: string): string; + getDirection(useComputed: boolean): string; + getDocumentPosition(refDocument: document): position; + getDtd(): any; + getEditor(): editor; + getElementsByTag(tagName: string): nodeList; + getFirst(evaluator?: Function): node; + getFrameDocument(): document; + getHtml(): string; + getId(): string; + getLast(evaluator?: Function): node; + getName(): string; + getNameAtt(): string; + getOuterHtml(): string; + getPositionedAncestor(): element; + getSize(type: string, isBorderBox: boolean): void; + getStyle(name: string): string; + getTabIndex(): number; + getText(): string; + getValue(): string; + getWindow(): window; + hasAttributes(): boolean; + hasAttribute(name: string): boolean; + hasClass(className: string): boolean; + hide(): void; + is(...name: string[]): boolean; + is(name: any): boolean; + isBlockBoundary(customNodeNames: Object): boolean; + isEditable(textCursor?: boolean): boolean; + isEmptyInlineRemoveable(): boolean; + isIdentical(otherElement: element): boolean; + isVisible(): boolean; + mergeSiblings(inlineOnly?: boolean): void; + moveChildren(target: element, toStart?: boolean): void; + removeAttribute(name: string): void; + removeAttributes(attributes?: string[]): void; + removeClass(className: string): void; + removeStyle(name: string): void; + renameNode(newTag: string): void; + scrollIntoParent(parent: element, alignToTop: boolean, hscroll: boolean): void; + scrollIntoParent(parent: window, alignToTop: boolean, hscroll: boolean): void; + scrollIntoView(alignToTop?: boolean): void; + setAttribute(name: string, value: string): element; + setAttributes(attributesPairs: Object): element; + setHtml(html: string): string; + setOpacity(opacity: number): void; + setSize(type: string, size: number, isBorderBox: boolean): void; + setState(state: number, base?: Object, useAria?: Object): void; + setStyle(name: string, value: string): element; + setStyles(stylesPair: Object): element; + setText(text: string): string; + setValue(value: string): element; + show(): void; + unselectable(): void; + + //static method + static clearAllMarkers(database: Object): Object; + static clearMarkers(database: Object, element: Object, removeFromDatabase: Object): void; + static createFromHtml(html: string): element; + static get(element: string): element; + static get(element: any): element; + static setMarker(database: Object, element: Object, name: Object, value: Object): domObject; + + } + + + class elementPath { + constructor(startNode: element, root: element); + block: element; + blockLimit: element; + root: element; + elements: element[]; + compare(otherPath: elementPath): boolean; + contains(query: string, excludeRoot: boolean, fromTop: boolean): element; + contains(query: string[], excludeRoot: boolean, fromTop: boolean): element; + contains(query: (element: element) => boolean, excludeRoot: boolean, fromTop: boolean): element; + contains(query: Object, excludeRoot: boolean, fromTop: boolean): element; + contains(query: element, excludeRoot: boolean, fromTop: boolean): element; + isContextFor(tag: string): boolean; + direction(): string; + } + + + class range { + constructor(root: element); + constructor(root: document); + startContainer: any; + startOffset: number; + endContainer: any; + endOffset: number; + collapsed: boolean; + isDocRoot: boolean; + document: document; + root: element; + clone(): range; + collapse(toStart?: boolean): Boolean; + cloneContents(): documentFragment; + deleteContents(mergeThen?: boolean): void; + extractContents(mergeThen?: boolean): documentFragment; + createBookmark(serializable: boolean): Object; + createBookmark2(normalized: boolean): Object; + createIterator(): iterator; + moveToBookmark(bookmark: Object): void; + getBoundaryNodes(): { startNode: node; endNode: node; }; + getCommonAncestor(includeSelf: boolean, ignoreTextNode: boolean): element; + optimize(): void; + optimizeBookmark(): void; + trim(ignoreStart?: boolean, ignoreEnd?: boolean): void; + enlarge(unit: number, excludeBrs?: boolean): void; + shrink(mode: number, selectContents: boolean): void; + insertNode(node: node): void; + moveToPosition(node: node, position: Object): void; + moveToRange(range: range): void; + selectNodeContents(node: node): void; + setStart(startNode: node, startOffset: number): void; + setEnd(endNode: node, endOffset: number): void; + setStartAfter(node: node): void; + setStartBefore(node: node): void; + setStartAt(node: node, position: number): void; + setEndAt(node: node, position: number): void; + fixBlock(isStart: boolean, blockTag: Object): Object; + splitBlock(blockTag: Object): Object; + splitElement(toSplit: element): element; + removeEmptyBlocksAtEnd(atEnd: boolean): void; + startPath(): elementPath; + endPath(): elementPath; + checkBoundaryOfElement(element: element, checkType: number): boolean; + checkStartOfBlock(): boolean; + checkEndOfBlock(): boolean; + getPreviousNode(evaluator: Function, guard: Function, boundary: element): element; + getNextNode(evaluator: Function, guard: Function, boundary: element): element; + checkReadOnly(): boolean; + moveToElementEditablePosition(element: element, isMoveToEnd: boolean): boolean; + movetoClosestEditablePosition(element: element, isMoveToEnd: boolean): boolean; + moveToElementEditStart(target: Object): boolean; + moveToElementEditEnd(target: Object): boolean; + getEnclosedNode(): node; + getTouchedStartNode(): node; + getTouchedEndNode(): node; + getNextEditableNode(): Object; + getPreviousEditableNode(): Object; + scrollIntoView(): void; + } + + + interface rangeListIterator { + + } + + class selection { + document: document; + isFake: boolean; + isLocked: boolean; + rev: number; + root: element; + constructor(target: document); + constructor(target: element); + constructor(target: selection); + createBookmarks(serializable: Object): any[]; + createBookmarks2(normalized?: Object): any[]; + fake(element: element): void; + getCommonAncestor(): element; + getNative(): Object; + getRanges(onlyEditables?: boolean): any[]; + getSelectedElement(): element; + getSelectedText(): string; + getStartElement(): element; + getType(): number; + isHidden(): boolean; + lock(): void; + removeAllRanges(): void; + reset(): void; + scrollIntoView(): void; + selectBookmarks(bookmarks: any[]): selection; + selectElement(element: element): void; + selectRanges(ranges: any[]): void; + unlock(restore: Object): void; + } + + + class rangeList { + constructor(ranges: range[]); + constructor(range: range); + createIterator(): rangeListIterator; + createBokmark(serializable: boolean): Object[]; + createBookmark2(normalized: boolean): Object[]; + moveToBookmark(bookmarks: Object[]): void; + } + + + class iterator { + constructor(range: range); + getNextParagraph(blockTag?: string): element; + activeFilter: filter; + enforceRealBlocks: Boolean; + enlargeBr: Boolean; + filter: filter; + } + + + class node extends domObject { + constructor(domNode: Node); + appendTo(element: element): element; + clone(includeChildren: boolean, cloneId: boolean): node; + hasPrevious(): boolean; + hasNext(): boolean; + insertAfter(node: node): node; + insertBefore(node: node): node; + insertBeforeMe(node: node): node; + getAddress(normalized: boolean): Object[]; + getDocument(): document; + getIndex(normalized?: boolean): number; + getNextSourceNode(startFromSibling: Object, nodeType: Object, guard: Object): void; + getPreviousSourceNode(startFromSibling: Object, nodeType: Object, guard: Object): void; + getPrevious(evaluator?: Function): node; + getNext(evaluator?: Function): node; + getParent(allowFragmentParent?: boolean): element; + getParents(closerFirst?: boolean): node[]; + getCommonAncestor(node: Object): void; + getPosition(otherNode: Object): void; + getAscendant(reference: string, includeSelf?: boolean): node; + hasAscendant(name: Object, includeSelf: any): boolean; + move(preserveChildren?: boolean): node; + replace(nodeToReplace: node): void; + trim(): void; + ltrim(): void; + rtrim(): void; + isReadOnly(): boolean; + } + + + class nodeList { + constructor(nativeList: Object); + count(): number; + getItem(index: number): node; + } + + + class event { + constructor(domEvent: Event); + getKey(): number; + getKeystroke(): number; + preventDefault(stopPropagation: boolean): void; + stopPropagation(): void; + getTarget(): node; + getPhase(): number; + getPhaseOffset(): position; + on(eventName: string, listenerFunction: Function, scopeObj?: Object, listenerData?: Object, priority?: number): Object; + } + + + interface position { + x: number; + y: number; + } + + + interface widthAndHeight { + width: number; + height: number; + } + + + class text extends node { + constructor(text: Text, ownerDocument?: document); + constructor(text: string, ownerDocument?: document); + type: number; + getLength(): number; + getText(): string; + setText(text: string): void; + split(offset: number): text; + substring(indexA: number, indexB: number): void; + } + + + class window extends domObject { + constructor(domWindow: Object); + focus(): void; + getViewPaneSize(): widthAndHeight; + getScrollPosition(): position; + getFrame(): element; + } + + + class walker { + constructor(range: range); + end(): void; + next(): node; + previous(): node; + checkForward(): boolean; + checkBackward(): boolean; + lastForward(): node; + lastBackward(): node; + reset(): void; + //static methods till the end + blockBoundary(customNodeNames: Object): Function; + listItemBoundary(): Function; + bookmark(contentOnly?: boolean, isReject?: boolean): Function; + whitespaces(isReject?: boolean): Function; + invisible(isReject?: boolean): Function; + nodeType(type: number, isReject?: boolean): Function; + bogus(isReject?: boolean): Function; + temp(isReject?: boolean): Function; + ignored(isReject?: boolean): Function; + editable(isReject?: boolean): Function; + } + + } + + + module ajax { + + // Methods + function load(url: string, callback?: Function): string; + function loadXml(url: string, callback?: Function): xml; + + } + + + interface xml { + + } + + + class command extends event { + + // Properties + contextSensitive: boolean; + editorFocus: boolean; + modes: any; + previousState: number; + state: number; + uiItems: any[]; + + // Methods + constructor(editor: editor, commandDefinition: commandDefinition); + checkAllowed(noCache: boolean): boolean; + disable(): void; + enable(): void; + exec(data?: Object): boolean; + refresh(editor: editor, path: dom.elementPath): void; + setState(newState: number): boolean; + toggleState(): void; + + } + + + interface focusManager { + + } + + interface keystrokeHandler { + + } + + + interface config { + startupMode: string; + removeButtons: string; + toolbar?: any; + } + + + interface feature { + + } + + + interface style { + + } + + + interface editable { + + } + + + class menu { + constructor(); + add(item: any): void; + addListener(listenerFn: (startElement: dom.element, selection: dom.selection, path: dom.elementPath) => any); + hide(returnFocus?: boolean): void; + removeAll(): void; + show(offsetParent: dom.element, corner?: number, offsetX?: number, offsetY?: number): void; + } + + + module plugins { + + class contextMenu extends menu { + constructor(editor: editor); + addTarget(element: dom.element, nativeContextMenuOnCtrl?: boolean): void; + open(offsetParent: dom.element, corner?: number, offsetX?: number, offsetY?: number); + } + + + module link { + var emptyAnchorFix: boolean; + var fakeAnchor: boolean; + var synAnchorSelector: boolean; + function getEditorAnchors(editor: editor): dom.element[]; + function getSelectedLink(editor: editor): dom.elementPath; + function tryRestoreFakeAnchor(editor: editor, element: dom.element): dom.element; + } + + + module widget { + class repository { + + } + } + + } + + + class editor extends event { + activeEnterMode: number; + activeFilter: filter; + activeShiftEnterMode: number; + blockless: boolean; + config: config; + container: dom.element; + contextMenu: plugins.contextMenu; + dataProcessor: dataProcessor; + document: dom.document; + element: dom.element; + elementMode: number; + enterMode: number; + filter: filter; + focusManager: focusManager; + id: string; + keystrokeHandler: keystrokeHandler; + lang: any; + langCode: string; + mode: string; + name: string; + plugins: Object; + readOnly: boolean; + shiftEnterMode: number; + status: string; + tabIndex: number; + templates: Object; + title: any; + toolbar: Object; + ui: ui; + widgets: plugins.widget.repository; + window: dom.window; + constructor(instanceConfig?: Object, element?: dom.element, mode?: number); + addCommand(commandName: string, commandDefinition: commandDefinition): void; + addFeature(feature: feature): boolean; + addMenuGroup(name: string, order?: number): void; + addMenuItem(name: string, definition?: any): void; + addMenuItems(definitions: any[]): void; + addMode(mode: string, exec: () => void): void; + addRemoveFormatFilter(func: Function): void; + applyStyle(style: style): void; + attachStyleStateChange(style: style, callback: Function): void; + checkDirty(): boolean; + createFakeElement(realElement: Object, className: Object, realElementType: Object, isResizable: Object): void; + createFakeParserElement(realElement: Object, className: Object, realElementType: Object, isResizable: Object): void; + createRange(): dom.range; + destroy(noUpdate?: boolean): void; + editable(elementOrEditable: dom.element): void; + editable(elementOrEditable: editable): void; + elementPath(startNode?: dom.node): dom.elementPath; + execCommand(commandName: string, data?: Object): boolean; + focus(): void; + forceNextSelectionCheck(): void; + getClipboardData(options: Object, callback: Function): void; + getColorFromDialog(callback: Function, scope?: Object): void; + getCommand(commandName: string): command; + getData(noEvents: Object): string; + getMenuItem(name: string): Object; + getResizable(forContents: boolean): dom.element; + getSelection(forceRealSelection?: boolean): dom.selection; + getSnapshot(): string; + getStylesSet(callback: Function): void; + getUiColor(): string; + insertElement(element: dom.element): void; + insertHtml(html: string, mode?: string): void; + insertText(text: string): void; + loadSnapshot(snapshot: Object): void; + lockSelection(sel?: dom.selection): boolean; + openDialog(dialogName: string, callback: Function): dialog; + popup(url: string, width?: number, height?: number, options?: string): void; + popup(url: string, width?: string, height?: number, options?: string): void; + popup(url: string, width?: number, height?: string, options?: string): void; + popup(url: string, width?: string, height?: string, options?: string): void; + removeMenuItem(name: string): void; + removeStyle(style: style): void; + resetDirty(): void; + resetUndo(): void; + resize(width: number, height: number, isContentHeight?: boolean, resizeInner?: boolean): void; + resize(width: string, height: number, isContentHeight?: boolean, resizeInner?: boolean): void; + resize(width: number, height: string, isContentHeight?: boolean, resizeInner?: boolean): void; + resize(width: string, height: string, isContentHeight?: boolean, resizeInner?: boolean): void; + restoreRealElement(fakeElement: Object): dom.element; + selectionChange(checkNow?: boolean): void; + setActiveEnterMode(enterMode: number, shiftEnterMode: number): void; + setActiveFilter(filter: filter): void; + setData(data: string, callback: Function, internal: boolean): void; + setKeystroke(keystroke: number, behavior?: string): void; + setKeystroke(keystroke: any[], behavior?: string): void; + setKeystroke(keystroke: number, behavior?: boolean): void; + setKeystroke(keystroke: any[], behavior?: boolean): void; + setMode(newMode: string, callback: Function): void; + setReadOnly(isReadOnly?: boolean): void; + setUiColor(color: string): void; + unlockSelection(restore?: boolean): void; + updateElement(): void; + } + + + interface eventInfo { + data: any; + editor: editor; + listenerData: any; + name: string; + sender: any; + cancel(): void; + removeListener(): void; + stop(): void; + } + + + class filter { + + } + + + interface template { + + } + + + interface dataProcessor { + toDataFormat(html: string, fixForBody: string): void; + toHtml(data: string, fixForBody?: string): void; + } + + + class event { + constructor(); + useCapture: boolean; + capture(): void; + define(name: string, meta: Object); + fire(eventName: string, data?: Object, editor?: editor): any; + fireOnce(eventName: string, data?: Object, editor?: editor): any; + hasListeners(eventName: string): boolean; + on(eventName: string, listenerFunction: (eventInfo: eventInfo) => void, scopeObj?: Object, listenerData?: Object, priority?: number): void; + once(eventName: string, listenerFunction: Function, scopeObj?: Object, listenerData?: Object, priority?: number): void; + removeAllListeners(): void; + removeListener(eventName: string, listenerFunction: Function): void; + static implementOn(targetObject: Object): void; + } + + + interface commandDefinition { + async?: boolean; + canUndo?: boolean; + context?: boolean; + contextSensitive?: boolean; + editorFocus?: boolean; + modes?: Object; + startDisabled?: boolean; + exec(editor: editor, data?: Object): boolean; + refresh? (editor: editor, path: dom.elementPath): void; + } + + + class dtd { + + } + + + class ui extends event { + constructor(editor: editor); + add(name: string, type: Object, definition: Object): void; + addButton(name: string, definition: dialog.definition.button): void; + addHandler(type: Object, handler: Object): void; + } + + + module dialog { + + module definition { + + interface button extends uiElement { + disabled?: boolean; + label?: string; + } + + + interface uiElement { + align?: string; + className?: string; + commit?: Function; + id?: string; + onHide?: Function; + onLoad?: Function; + requiredcontent?: any; + setup?: Function; + style?: string; + title?: string; + type?: string; + } + + } + + } + + + module htmlParser { + + class basicWriter { + constructor(); + openTag(tagName: string, attributes: Object): void; + openTagClose(tagName: string, isSelfClose: boolean): void; + attribute(attName: string, attValue: string): void; + closeTag(tagName: string): void; + text(text: string): void; + comment(comment: string): void; + write(data: string): void; + reset(): void; + getHtml(reset: boolean): string; + } + + + class node { + constructor(); + remove(preserveChildren?: boolean): node; + replaceWith(node: node): void; + insertAfter(node: node): void; + insertBefore(node: node): void; + getAscendant(condition: string): element; + getAscendant(condition: Object): element; + getAscendant(condition: Function): element; + wrapWith(wrapper: element): element; + getIndex(): number; + } + + + class filter { + constructor(rules?: filterRulesDefinition); + id: number; + elementNameRules: filterRulesGroup; + attributeNameRules: filterRulesGroup; + elementsRules: Object; + attributesRules: Object; + textRules: filterRulesGroup; + commentRules: filterRulesGroup; + rootRules: filterRulesGroup; + addRules(rules: filterRulesDefinition, options?: number): void; + addRules(rules: filterRulesDefinition, options?: { priority?: number; applyToAll?: boolean; }): void; + applyTo(node: node): void; + } + + + interface filterRulesDefinition { + + } + + + class filterRulesGroup { + rules: Object[]; + add(rule: Function, priority: number, options: Object): void; + add(rule: Object[], priority: number, options: Object): void; + addMany(rules: Object[], priority: number, options: Object): void; + findIndex(priority: number): number; + exec(currentValue: Object): Object; + execOnName(currentName: string): string; + } + + + class cdata extends node { + constructor(value: string); + type: number; + writeHtml(writer: basicWriter): void; + } + + + class comment extends node { + constructor(value: string); + type: number; + filter(filter: filter): boolean; + writeHtml(writer: basicWriter, filter: filter): void; + } + + + class element extends node { + constructor(name: string, attributes: Object); + name: string; + attributes: Object; + children: Object[]; + type: number; + add(node: node): number; + clone(): element; + filter(filter: filter): boolean; + filterChildren(filter: filter): void; + writeHtml(writer: basicWriter, filter: filter): void; + writeChildrenHtml(writer: basicWriter, filter: filter): void; + replaceWithChildren(): void; + forEach(callback: (node: node, type?: number) => boolean): void; + getFirst(condition: string): node; + getFirst(condition: Object): node; + getFirst(condition: Function): node; + getHtml(): string; + setHtml(html: string): void; + getOuterHtml(): string; + split(index: number): element; + removeClass(className: string): void; + hasClass(className: string): boolean; + } + + + class fragment { + constructor(); + children: Object[]; + parent: Object; + type: number; + fromHtml(fragmentHtml: string, parent?: element, fixingBlock?: string): void; + fromHtml(fragmentHtml: string, parent?: string, fixingBlock?: string): void; + fromHtml(fragmentHtml: string, parent?: element, fixingBlock?: boolean): void; + fromHtml(fragmentHtml: string, parent?: string, fixingBlock?: boolean): void; + add(node: node, index?: number): void; + filter(filter: filter): void; + filterChildren(filter: filter, filterRoot?: 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; + } + + + class cssStyle { + constructor(element: element); + constructor(styleText: string); + populate(obj: element): void; + populate(obj: dom.element): void; + populate(obj: Object): void; + } + + + class text extends node { + constructor(value: string); + type: number; + filter(filter: filter): boolean; + writeHtml(writer: basicWriter, filter?: filter): void; + } + + } + + + interface dialog { + addFocusable(element: CKEDITOR.dom.element, index: number): void; + } + +} \ No newline at end of file