unit libjquery; {$mode objfpc} {$modeswitch externalclass} interface uses js, web; Type TJQueryTopLeft = record top,left : integer; end; TJQuery = class; TCallback = Procedure (args : JSValue); TCallbackEvent = Procedure (args : JSValue) of object; TCallbacks = class external name 'Callbacks' Public function add(aCallBack : TCallBack) : TCallbacks; function add(aCallBack : Array of TCallBack) : TCallbacks; function add(aCallBack : TCallBackEvent) : TCallbacks; function add(aCallBack : Array of TCallBackEvent) : TCallbacks; function disable : TCallBacks; function disabled : Boolean; function empty : TCallBacks; function fire(arguments : JSValue) : TCallbacks; varargs; function fired : Boolean; function fireWith(context : JSValue; arguments : JSValue) : TCallbacks; function has(aCallBack : TCallBack) : Boolean; function has(aCallBack : TCallBackEvent) : Boolean; function lock : TCallBacks; function locked : boolean; function remove(aCallBack : TCallBack) : TCallbacks; function remove(aCallBack : Array of TCallBack) : TCallbacks; function remove(aCallBack : TCallBackEvent) : TCallbacks; function remove(aCallBack : Array of TCallBackEvent) : TCallbacks; end; { TJQuery } TJQueryAddClassHandler = Reference to Function (aIndex : Integer; AClass : String) : String; TJQueryAttrHandler = Reference to Function (aIndex : Integer; aAttr : String) : JSValue; TJQueryCSSHandler = Reference to Function (aIndex : Integer; AClass : String) : JSValue ; TJQueryEachHandler = Reference to Function (aIndex : Integer; AElement : TJSElement) : Boolean; TJQueryFilterHandler = Reference to Function (aIndex : Integer; AElement : TJSElement) : Boolean; TJQueryHeightHandler = Reference to Function (aIndex : Integer; AHeight : jsValue) : JSValue ; TJQueryHTMLHandler = Reference to Function(aIndex : Integer; aHTML : String) : String; TJQueryMapHandler = Reference to Function (aIndex : Integer; AElement : TJSElement) : TJSObject; TJQueryOffsetHandler = Reference to Function (aIndex : Integer; aCoords : TJQueryTopLeft) : TJQueryTopLeft; TJQueryPropHandler = Reference to Function(aIndex : Integer; oldProp : JSValue) : JSValue; TJQueryQueueHandler = Reference to procedure; TJQueryTextHandler = Reference to Function(aIndex : Integer; aString : String) : String; TJQueryToggleClassHandler = Reference to Function(aIndex : Integer; aClassName : string; AState : Boolean) : String; TJQueryValHandler = Reference to Function(aIndex :integer; aValue : String) : String; TJQueryWidthHandler = Reference to Function (aIndex : Integer; AHeight : jsValue) : JSValue ; TJQueryDeQueueFunction = Reference to Procedure; TJQueryAddQueueHandler = Reference to Procedure (aFunc : TJQueryDeQueueFunction); TAjaxEvent = class external name 'AjaxEvent' (TJSEvent); TDeferredDoneHandler = reference to function : Boolean; TJQueryDeferred = class external name 'Deferred' (TJSObject) Public Function done(aHandler :TDeferredDoneHandler) : TJQueryDeferred; overload; Function done(aHandlers : Array of TDeferredDoneHandler) : TJQueryDeferred; overload; end; TJQXHR = class; TJQXHRDoneHandler = reference to function(aData : jsValue; textStatus : String; aJQXHR : TJQXHR) : boolean; TJQXHRFailHandler = reference to function(aJQXHR : TJQXHR; textStatus : String; AErrorThrown : jsValue) : boolean; TJQXHRAlwaysHandler = reference to function(arg1 : TJSObject; textStatus : String; arg2 : TJSObject) : boolean; TJQXHR = class external name 'jqXHR' (TJQueryDeferred) private FReadyState: NativeInt; external name 'readyState'; //FResponse: JSValue; external name 'response'; FResponseText: string; external name 'responseText'; FresponseXML: TJSDocument; external name 'responseXML'; //FUpload: TJSXMLHttpRequestUpload; external name 'upload'; FStatus : NativeInt; external name 'status'; FStatusText : String; external name 'statustext'; public function getResponseHeader(aName : string) : String; function getAllResponseHeaders : String; procedure overrideMimeType(aType : String); procedure setRequestHeader(aName, AValue : string); procedure done(aHandler : TJQXHRDoneHandler); overload; procedure always(aHandler : TJQXHRAlwaysHandler); overload; procedure fail(aHandler : TJQXHRFailHandler); overload; procedure _then(aSuccess : TJQXHRDoneHandler; aFail : TJQXHRFailHandler); overload; procedure abort; procedure abort(AStatusText : String); property readyState : NativeInt read FReadyState; property ResponseHeaders[aName : string] : string Read getResponseHeader; property responseXML : TJSDocument read FresponseXML; property responseText : string read FResponseText; property status : NativeInt read FStatus; property statusText : string read FStatusText; end; TJSAjaxSettings = class; TJQueryAjaxSettingsHandler = Reference to Function (aHXR : TJQXHR; aOptions : TJSAjaxSettings) : Boolean; TJQueryAjaxSettingsDataFilter = Reference to function (aData: String; aType : string) : JSValue; TJQueryAjaxSettingsErrorHandler = Reference to Function (aHXR : TJQXHR; aOptions : TJSAjaxSettings; aStatus, aError : String) : Boolean; TJQueryAjaxSettingsSuccessHandler = Reference to Function (data : JSValue; aStatus : String; aHXR : TJQXHR) : Boolean; TJQueryAjaxSettsingsXHRHandler = reference to function : JSValue; TJSAjaxSettings = class external name 'Object' (TJSObject) accepts : TJSObject; async : boolean; beforeSend : TJQueryAjaxSettingsHandler; cache : boolean; complete : TJQueryAjaxSettingsHandler; contents : TJSObject; contentType : String; context : TJSObject; converters : TJSObject; crossDomain : boolean; data : JSValue; dataFilter : TJQueryAjaxSettingsDataFilter; dataType : String; error : TJQueryAjaxSettingsErrorHandler; global: boolean; headers : TJSObject; ifModified : Boolean; isLocal : Boolean; json : String; jsonpCallback : String; method : string; mimeType : string; password : string; processData : Boolean; scriptCharset : String; statusCode : TJSObject; success : TJQueryAjaxSettingsSuccessHandler; timeout : NativeInt; traditional : boolean; url : string; username : string; xhr : TJQueryAjaxSettsingsXHRHandler; xhrFields : TJSObject; end; TJQueryAjaxTransportCompleteHandler = function (aStatus : NativeInt; aStatusText : string; responses, Headers : TJSObject) : Boolean; TJQueryAjaxTransportSendHandler = reference to function(headers: TJSObject; onComplete : TJQueryAjaxTransportCompleteHandler) : boolean; TJQueryAjaxTransportAbortHandler = reference to function () : Boolean; TJQueryAjaxTransport = record send : TJQueryAjaxTransportSendHandler; abort : TJQueryAjaxTransportAbortHandler; end; TJQueryAjaxTransportHandler = reference to Function (aOptions,aOriginalOptions : TJSObject; aXHR : TJQXHR) : TJQueryAjaxTransport; TJQueryAjaxPrefilterHandler = reference to procedure (aOptions,aOriginalOptions : TJSObject; aXHR : TJQXHR); TJQueryAjaxEventHandler = Reference to Function (aEvent : TAjaxEvent; aHXR : TJQXHR; aOptions : TJSAjaxSettings) : Boolean; TJQueryAjaxErrorHandler = Reference to Function (aEvent : TAjaxEvent; aHXR : TJQXHR; aOptions : TJSAjaxSettings; aError : String) : Boolean; TJQueryAjaxSuccessHandler = Reference to function (aData : TJSObject; aStatus : String; aXHR : TJQXHR) : Boolean; TJQueryAjaxLoadHandler = Reference to function (aResponseText,aStatus : String; aXHR : TJQXHR) : Boolean; TJQueryAjaxScriptHandler = Reference to function (aScript,aStatus : String; aXHR : TJQXHR) : Boolean; TJQueryAjaxHandler = Reference to procedure; TPrependCallback = reference to Function(elementOfArray : NativeInt; Html : String) : JSValue; TJQuery = class external name 'jQuery' (TJSObject) private FCSSHooks: TJSObject; external name 'cssHooks'; FCSSNumber: TJSObject; external name 'cssNumber'; FReady: TJSPromise; external name 'ready'; function getEl(aIndex : Integer) : TJSElement; external name 'get'; Public function add(Const aSelector : String) : TJQuery;overload; function add(Const aSelector : String; AContext : TJSElement) : TJQuery;overload; function add(Const aElement : TJSElement) : TJQuery;overload; function add(Const aElement : Array of TJSElement) : TJQuery;overload; function add(Const aQuery : TJQuery) : TJQuery;overload; function addBack(Const aSelector : String) : TJQuery;overload; function addBack : TJQuery;overload; function addClass(Const aClass : String) : TJQuery;overload; function addClass(Const aClassFunction : TJQueryAddClassHandler) : TJQuery; overload; function ajaxComplete(aHandler : TJQueryAjaxEventHandler) : TJQuery; function ajaxError(aHandler : TJQueryAjaxEventHandler) : TJQuery; function ajaxSend(aHandler : TJQueryAjaxEventHandler) : TJQuery; function ajaxStart(aHandler : TJQueryAjaxHandler) : TJQuery; function ajaxStop(aHandler : TJQueryAjaxHandler) : TJQuery; function ajaxSuccess(aHandler : TJQueryAjaxEventHandler) : TJQuery; class function ajax(aURL : String; aSettings : TJSObject) : tJQXHR; overload; class function ajax(aSettings : TJSObject) : tJQXHR; overload; class function ajax(aSettings : TJSAjaxSettings) : tJQXHR; overload; class procedure ajaxPrefilter(dataTypes : string; aHandler : TJQueryAjaxPrefilterHandler);overload; class procedure ajaxSetup(aSettings : TJSAjaxSettings); overload; class procedure ajaxSetup(aSettings : TJSObject); overload; class procedure ajaxTransport(aDataType : string; AHandler : TJQueryAjaxTransportHandler); function attr(Const attributeName : string) : string;overload; function attr(Const attributeName : string; Const Value : String) : TJQuery;overload; function attr(Const attributes : TJSObject) : TJQuery;overload; function attr(Const attributeName : string; aHandler : TJQueryAttrHandler) : TJQuery;overload; class function Callbacks : TCallbacks;overload; class function Callbacks(const aFlags : string) : TCallbacks;overload; function children(Const aSelector : String) : TJQuery;overload; function children : TJQuery;overload; function clearQueue : TJQuery;overload; function clearQueue(const aQueueName : String) : TJQuery;overload; function click : TJQuery; overload; function click (aHandler : TJSRawEventHandler) : TJQuery; overload; function click (aHandler : TJSEventHandler) : TJQuery; overload; function click (aData : TJSObject; aHandler : TJSEventHandler) : TJQuery; overload; function click (aData : TJSObject; aHandler : TJSRawEventHandler) : TJQuery; overload; function closest(Const aSelector : String) : TJQuery;overload; function closest(Const aSelector : String; AContext : TJSElement) : TJQuery;overload; function closest(Const aQuery : TJQuery) : TJQuery;overload; function closest(Const aElement : TJSElement) : TJQuery;overload; function contents : TJQuery; function css(Const aPropertyName : TJSObject) : string; overload; function css(Const aPropertyName : String) : string; overload; function css(Const aPropertyNames : Array of String) : string;overload; function css(Const aPropertyName, Avalue : String) : TJQuery;overload; function css(Const aPropertyName : String; Avalue : Integer) : TJQuery;overload; function css(Const aPropertyName : String; AHandler : TJQueryCSSHandler) : TJQuery;overload; class function data(aElement : TJSElement; const aKey : String; aValue : jsValue) : TJSObject;overload; class function data(aElement : TJSElement; const aKey : String) : TJSObject;overload; class function data(aElement : TJSElement) : TJSObject;overload; function data(aKey : String; aValue : JSValue) : TJQuery;overload; function data(aObj : TJSObject) : TJQuery;overload; function data(aKey : String) : TJSObject;overload; function data : TJSObject;overload; function dequeue : TJQuery;overload; function dequeue(const aQueueName : String) : TJQuery;overload; class function dequeue(aElement : TJSElement) : TJQuery;overload; class function dequeue(aElement : TJSElement; const aQueueName : String) : TJQuery;overload; function _end : TJQuery; external name 'end'; function eq(AIndex : Integer) : TJQuery; function each(aHandler : TJQueryEachHandler) : TJQuery; class function escapeSelector(const S : String) : String; function filter(Const aSelector : String) : TJQuery;overload; function filter(aHandler : TJQueryFilterHandler) : TJQuery;overload; function filter(Const aQuery : TJQuery) : TJQuery;overload; function filter(Const aElement : TJSElement) : TJQuery;overload; function filter(Const aElements : Array of TJSElement) : TJQuery;overload; function find(Const aSelector : String) : TJQuery;overload; function find(Const aQuery : TJQuery) : TJQuery;overload; function find(Const aElement : TJSElement) : TJQuery;overload; function first : TJQuery; function get(aIndex : Integer) : TJSElement;overload; class function get : TJQXHR;overload; class function get(url : String) : TJQXHR;overload; class function get(url,Data : String) : TJQXHR;overload; class function get(url : String; Data : TJSObject) : TJQXHR;overload; class function get(url : String; Data : TJSObject; success : TJQueryAjaxSuccessHandler) : TJQXHR;overload; class function get(url,Data : String; success : TJQueryAjaxSuccessHandler) : TJQXHR;overload; class function get(url : String; Data : TJSObject; success : TJQueryAjaxSuccessHandler; aDataType : string) : TJQXHR;overload; class function get(url,Data : String; success : TJQueryAjaxSuccessHandler; aDataType : string) : TJQXHR;overload; class function get(aSettings : TJSAjaxSettings) : TJQXHR; overload; class function get(aSettings : TJSObject) : TJQXHR; overload; class function getJSON(url : String) : TJQXHR;overload; class function getJSON(url,Data : String) : TJQXHR;overload; class function getJSON(url : String; Data : TJSObject) : TJQXHR;overload; class function getJSON(url : String; Data : TJSObject; success : TJQueryAjaxSuccessHandler) : TJQXHR;overload; class function getJSON(url,Data : String; success : TJQueryAjaxSuccessHandler) : TJQXHR;overload; class function getJSON(url : String; Data : TJSObject; success : TJQueryAjaxSuccessHandler; aDataType : string) : TJQXHR;overload; class function getJSON(url,Data : String; success : TJQueryAjaxSuccessHandler; aDataType : string) : TJQXHR;overload; class function getScript(url : String) : TJQXHR;overload; class function getScript(url : String; aSuccess : TJQueryAjaxScriptHandler) : TJQXHR;overload; function has(Const aSelector : String) : TJQuery; function has(Const aQuery : TJQuery) : TJQuery; function hasClass(Const aClassName : String) : Boolean; class function hasData(aElement : TJSElement) : Boolean; function height: Integer; function height(aValue: Integer) : TJQuery; function height(aValue: String) : TJQuery; function height(aHandler: TJQueryHeightHandler) : TJQuery; function html : String; function html(Const aHTML : String) : TJQuery; function html(Const aHandler : TJQueryHTMLHandler) : TJQuery; function innerHeight: Integer; function innerHeight(aValue: Integer) : TJQuery; function innerHeight(aValue: String) : TJQuery; function innerHeight(aHandler: TJQueryHeightHandler) : TJQuery; function innerWidth: Integer; function innerWidth(aValue: Integer) : TJQuery; function innerWidth(aValue: String) : TJQuery; function innerWidth(aHandler: TJQueryWidthHandler) : TJQuery; function _is(Const aSelector : String) : TJQuery; external name 'is'; function _is(Const aQuery : TJQuery) : TJQuery; external name 'is'; function _is(aHandler : TJQueryFilterHandler) : TJQuery; external name 'is'; function _is(Const aElement : TJSElement) : TJQuery; external name 'is'; function _is(Const aElements : Array of TJSElement) : TJQuery; external name 'is'; function last : TJQuery; class function load(url : String) : TJQXHR;overload; class function load(url,Data : String) : TJQXHR;overload; class function load(url : String; Data : TJSObject) : TJQXHR;overload; class function load(url : String; Data : TJSObject; success : TJQueryAjaxLoadHandler) : TJQXHR;overload; class function load(url,Data : String; success : TJQueryAjaxLoadHandler) : TJQXHR;overload; function map(aHandler : TJQueryMapHandler) : TJQuery; function next : TJQuery;overload; function next(const aSelector : String) : TJQuery;overload; function nextAll : TJQuery;overload; function nextAll(const aSelector : String) : TJQuery;overload; function nextUntil : TJQuery;overload; function nextUntil(const aSelector : String) : TJQuery;overload; function nextUntil(const aSelector,aFilter : String) : TJQuery;overload; function nextUntil(const aElement : TJSElement) : TJQuery;overload; function nextUntil(const aElement : TJSElement; aFilter : String) : TJQuery;overload; function nextUntil(const aQuery : TJQuery) : TJQuery;overload; function nextUntil(const aQuery : TJQuery; aFilter : String) : TJQuery;overload; function _not(const aSelector : String) : TJQuery; external name 'not';overload; function _not(const aSelector : TJSElement) : TJQuery; external name 'not';overload; function _not(const aSelector : Array of TJSElement) : TJQuery; external name 'not';overload; function _not(const aSelector : TJQuery) : TJQuery; external name 'not';overload; function _not(const aSelector : TJQueryFilterHandler) : TJQuery;external name 'not';overload; function noConflict : TJSObject;overload; function noConflict(removeAll: Boolean) : TJSObject;overload; function offSet: Integer;overload; function offSet(const aOffset : TJQueryTopLeft): TJQuery;overload; function offSet(aHandler : TJQueryOffsetHandler): TJQuery;overload; Function offsetParent : TJQuery; Function off : TJQuery; overload; Function off(events : String) : TJQuery; overload; Function off(events : String; aHandler : TJSEventHandler) : TJQuery; overload; Function off(events : String; selector : String; aHandler : TJSEventHandler) : TJQuery; overload; Function off(events : String; selector : String; data : JSValue; aHandler : TJSEventHandler) : TJQuery; overload; Function On_(events : String; aHandler : TJSEventHandler) : TJQuery; external name 'on'; overload; Function On_(events : String; selector : String; aHandler : TJSEventHandler) : TJQuery; external name 'on'; overload; Function On_(events : String; selector : String; data : JSValue; aHandler : TJSEventHandler) : TJQuery; external name 'on'; overload; Function On_(events : TJSObject; selector : String; data : JSValue) : TJQuery; external name 'on'; overload; Function On_(events : TJSObject; data : JSValue) : TJQuery; external name 'on'; overload; Function On_(events : TJSObject) : TJQuery; external name 'on'; overload; function outerHeight(IncludeMargin : Boolean): Integer;overload; function outerHeight: Integer;overload; function outerHeight(aValue: Integer) : TJQuery;overload; function outerHeight(aValue: String) : TJQuery;overload; function outerHeight(aHandler: TJQueryHeightHandler) : TJQuery;overload; function outerWidth(IncludeMargin : Boolean): Integer;overload; function outerWidth: Integer;overload; function outerWidth(aValue: Integer) : TJQuery;overload; function outerWidth(aValue: String) : TJQuery;overload; function outerWidth(aHandler: TJQueryWidthHandler) : TJQuery;overload; class function param (aObject : String) : String;overload; class function param (aObject : TJSObject) : String;overload; class function param (aObject : TJQuery) : String;overload; class function param (aObject : String; traditional : Boolean) : String;overload; class function param (aObject : TJSObject; traditional : Boolean) : String;overload; class function param (aObject : TJQuery; traditional : Boolean) : String;overload; Function parent : TJQuery; Function parent (const ASelector: String) : TJQuery; Function parents : TJQuery; Function parents (const ASelector: String) : TJQuery; function parentsUntil : TJQuery; function parentsUntil(const aSelector : String) : TJQuery; function parentsUntil(const aSelector,aFilter : String) : TJQuery; function parentsUntil(const aElement : TJSElement) : TJQuery; function parentsUntil(const aElement : TJSElement; aFilter : String) : TJQuery; function parentsUntil(const aQuery : TJQuery) : TJQuery; function parentsUntil(const aQuery : TJQuery; aFilter : String) : TJQuery; function position : TJQueryTopLeft; class function post(url : String) : TJQXHR;overload; class function post(url,Data : String) : TJQXHR;overload; class function post(url : String; Data : TJSObject) : TJQXHR;overload; class function post(url : String; Data : TJSObject; success : TJQueryAjaxSuccessHandler) : TJQXHR;overload; class function post(url,Data : String; success : TJQueryAjaxSuccessHandler) : TJQXHR;overload; class function post(url : String; Data : TJSObject; success : TJQueryAjaxSuccessHandler; aDataType : string) : TJQXHR;overload; class function post(url,Data : String; success : TJQueryAjaxSuccessHandler; aDataType : string) : TJQXHR;overload; class function post(aSettings : TJSAjaxSettings) : TJQXHR; overload; class function post(aSettings : TJSObject) : TJQXHR; overload; function prepend(content : String) : TJQuery; overload; function prepend(Content1,Content2 : String) : TJQuery; overload; function prepend(aHandler : TPrependCallback) : TJQuery; overload; Function prev : TJQuery;overload; Function prev(Const aSelector : String) : TJQuery;overload; Function prevAll : TJQuery;overload; Function prevAll(Const aSelector : String) : TJQuery;overload; function prevUntil : TJQuery;overload; function prevUntil(const aSelector : String) : TJQuery;overload; function prevUntil(const aSelector,aFilter : String) : TJQuery;overload; function prevUntil(const aElement : TJSElement) : TJQuery;overload; function prevUntil(const aElement : TJSElement; aFilter : String) : TJQuery;overload; function prevUntil(const aQuery : TJQuery) : TJQuery;overload; function prevUntil(const aQuery : TJQuery; aFilter : String) : TJQuery;overload; function prop(const aPropertyName : String) : JSValue;overload; function prop(const aPropertyName : String;AValue : JSValue) : TJQuery;overload; function prop(const TJSObject) : TJQuery;overload; function prop(const aPropertyName : String; aHandler : TJQueryPropHandler) : TJQuery;overload; class function queue(element : TJSElement) : TJSarray;overload; class function queue(element : TJSElement; const aQueueName : String) : TJSarray;overload; class function queue(element : TJSElement; const aQueueName : string; anewQueue : TJSarray) : TJQuery;overload; class function queue(element : TJSElement; const aQueueName : String ; aHandler : TJQueryQueueHandler) : TJQuery;overload; function queue : TJSarray;overload; function queue(aQueueName : string) : TJSarray;overload; function queue(anArray : TJSArray) : TJQuery;overload; function queue(aQueueName : string; anArray : TJSarray) : TJQuery;overload; function queue(aQueueName : string; aHandler : TJQueryAddQueueHandler) : TJQuery;overload; function remove(Const Selector : string) : TJQuery; overload; function remove() : TJQuery;overload; function removeAttr(Const attributeName : string) : TJQuery; function removeClass(Const aClass : String) : TJQuery;overload; function removeClass(Const aClassFunction : TJQueryAddClassHandler) : TJQuery;overload; class function removeData(aElement : TJSElement; Const aName : String) : TJQuery;overload; class function removeData(aElement : TJSElement) : TJQuery;overload; function removeData(const aName : string) : TJQuery;overload; function removeData(const aNames : array of string) : TJQuery;overload; function removeData : TJQuery;overload; function removeProp(Const aPropertyName : string) : TJQuery; function scrollLeft : Integer;overload; function scrollLeft(aValue : Integer) : TJQuery;overload; function scrollTop : Integer;overload; function scrollTop(aValue : Integer) : TJQuery;overload; function serialize : string; function serializeArray : TJSObjectDynArrayArray; Function siblings : TJQuery;overload; Function siblings(Const aSelector : String) : TJQuery;overload; Function slice(aStart : integer) : TJQuery;overload; Function slice(aStart,aEnd : integer) : TJQuery;overload; Function sub : TJQuery; function text : String;overload; function text(Const aText : string): TJQuery;overload; function text(Const aText : Integer): TJQuery;overload; function text(Const aText : Double): TJQuery;overload; function text(Const aText : Boolean): TJQuery;overload; function text(aHandler : TJQueryTextHandler) : TJQuery;overload; function toggleClass(Const aClass : String) : TJQuery;overload; function toggleClass(Const aClass : String; aState : Boolean) : TJQuery;overload; function toggleClass(Const aHandler : TJQueryToggleClassHandler) : TJQuery;overload; function toggleClass(Const aHandler : TJQueryToggleClassHandler; AState : Boolean) : TJQuery;overload; function trigger(aEventName : string) : TJQuery; varargs; function trigger(aEvent : TJSEvent) : TJQuery; varargs; function val : JSValue;overload; function val(Const aValue : String) : TJQuery;overload; function val(Const aValue : Integer) : TJQuery;overload; function val(Const aValue : Array of String) : TJQuery;overload; function val(aHandler : TJQueryValHandler) : TJQuery;overload; Function when(APromise : TJSPromise) : TJSPromise;overload; Function when : TJSPromise;overload; function Width: Integer;overload; function Width(aValue: Integer) : TJQuery;overload; function Width(aValue: String) : TJQuery;overload; function Width(aHandler: TJQueryWidthHandler) : TJQuery;overload; Property ready : TJSPromise Read FReady; // These should actually be class properties ? property cssHooks : TJSObject Read FCSSHooks; property cssNumber : TJSObject read FCSSNumber; Property Elements[AIndex : Integer] : TJSElement read getEl; default; end; Function JQuery(Const aSelector : String) : TJQuery; external name 'jQuery'; Function JQuery(Const aSelector : String; Context : TJSElement) : TJQuery; external name 'jQuery'; Function JQuery(Const aElement : TJSElement) : TJQuery; external name 'jQuery'; Function JQuery(Const aElement : Array of TJSElement) : TJQuery; external name 'jQuery'; Function JQuery(Const aElement : TJSObject) : TJQuery; external name 'jQuery'; Function JQuery(Const aQuery : TJQuery) : TJQuery; external name 'jQuery'; Function JQuery() : TJQuery; external name 'jQuery'; Var gJQuery : TJQuery; external name 'jQuery'; Implementation end.