web.pas 154 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986
  1. {
  2. This file is part of the Pas2JS run time library.
  3. Copyright (c) 2017-2020 by the Pas2JS development team.
  4. See the file COPYING.FPC, included in this distribution,
  5. for details about the copyright.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9. **********************************************************************}
  10. {$mode objfpc}
  11. {$modeswitch externalclass}
  12. unit Web;
  13. interface
  14. uses Types, JS;
  15. Type
  16. TJSEvent = Class;
  17. // Forward definitions
  18. TJSWindow = class;
  19. TJSDOMTokenList = class;
  20. TJSXPathResult = CLass;
  21. TJSNodeList = class;
  22. TJSDocument = class;
  23. TJSElement = class;
  24. TJSCSSStyleSheet = Class;
  25. TJSNodeFilter = Class;
  26. TJSIDBObjectStore = Class;
  27. TIDBDatabase = class;
  28. TJSIDBRequest = class;
  29. TJSEventTarget = class;
  30. TJSMouseEvent = Class;
  31. TJSWheelEvent = Class;
  32. TJSKeyBoardEvent = class;
  33. TJSPointerEvent = Class;
  34. TJSUIEvent = class;
  35. TJSTouchEvent = Class;
  36. TJSBlob = class;
  37. TJSPermissions = class;
  38. TJSFileSystemFileHandle = class;
  39. TJSFileSystemFileHandleArray = array of TJSFileSystemFileHandle;
  40. TJSFileSystemDirectoryHandle = class;
  41. TJSFileSystemDirectoryHandleArray = array of TJSFileSystemDirectoryHandle;
  42. TJSShowOpenFilePickerOptions = class;
  43. TJSShowSaveFilePickerOptions = class;
  44. { TEventListenerEvent }
  45. (*
  46. TEventListenerEvent = class external name 'EventListener_Event' (TJSObject)
  47. private
  48. FTarget: TJSEventTarget; external name 'target';
  49. public
  50. Property target: TJSEventTarget Read FTarget;
  51. end;
  52. *)
  53. TEventListenerEvent = TJSEvent;
  54. TJSEventHandler = reference to function(Event: TEventListenerEvent): boolean; safecall;
  55. TJSRawEventHandler = reference to Procedure(Event: TJSEvent); safecall;
  56. TJSEventTarget = class external name 'EventTarget' (TJSObject)
  57. public
  58. procedure addEventListener(aname : string; aListener : TJSEventHandler);
  59. procedure addEventListener(aname : string; aListener : TJSRawEventHandler);
  60. procedure addEventListener(aname : string; aListener : JSValue);
  61. function dispatchEvent(event : JSValue) : Boolean;
  62. procedure removeEventListener(aname : string; aListener : TJSEventHandler);
  63. procedure removeEventListener(aname : string; aListener : TJSRawEventHandler);
  64. procedure removeEventListener(aname : string; aListener : JSValue);
  65. end;
  66. TJSNode = class external name 'Node' (TJSEventTarget)
  67. Private
  68. FBaseURI : String; external name 'baseURI';
  69. FChildNodes: TJSNodeList; external name 'childNodes';
  70. FFirstChild : TJSNode; external name 'firstChild';
  71. FNextSibling : TJSNode; external name 'nextSibling';
  72. FNodeName : String; external name 'nodeName';
  73. FNodeType : NativeInt; external name 'nodeType';
  74. FOwnerDocument : TJSDocument; external name 'ownerDocument';
  75. FParentElement : TJSElement; external name 'parentElement';
  76. FParentNode : TJSNode; external name 'parentNode';
  77. FPreviousSibling : TJSNode; external name 'previousSibling';
  78. Public
  79. Const
  80. ELEMENT_NODE =1;
  81. TEXT_NODE =3;
  82. PROCESSING_INSTRUCTION_NODE = 7;
  83. COMMENT_NODE =8;
  84. DOCUMENT_NODE =9;
  85. DOCUMENT_TYPE_NODE = 10;
  86. DOCUMENT_FRAGMENT_NODE = 11;
  87. DOCUMENT_POSITION_DISCONNECTED = 1;
  88. DOCUMENT_POSITION_PRECEDING = 2;
  89. DOCUMENT_POSITION_FOLLOWING = 4;
  90. DOCUMENT_POSITION_CONTAINS = 8;
  91. DOCUMENT_POSITION_CONTAINED_BY = 16;
  92. DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32;
  93. Public
  94. nodeValue: string;
  95. innerText : string;
  96. textContent : string;
  97. function appendChild(aChild : TJSNode) : TJSNode;
  98. function cloneNode(deep: boolean): TJSNode;
  99. function compareDocumentPosition(aNode : TJSNode) : NativeInt;
  100. function contains(aNode : TJSNode) : boolean;
  101. function hasChildNodes : boolean;
  102. function insertBefore(newNode, referenceNode : TJSNode) : TJSNode;
  103. function isDefaultNameSpace(aNameSpaceURI : String) : Boolean;
  104. function isEqualNode(aNode : TJSNode) : boolean;
  105. function isSameNode(aNode : TJSNode) : boolean;
  106. function lookupNamespaceURI(aPrefix : string) : string;
  107. function lookupPrefix(aPrefix : string) : string;
  108. procedure normalize;
  109. function removeChild(aChild: TJSNode) : TJSNode;
  110. function replaceChild(aNewChild, aOldChild : TJSNode) : TJSNode;
  111. property baseURI : string read FBaseURI;
  112. property childNodes : TJSNodeList read FChildNodes;
  113. property firstChild : TJSNode Read FFirstChild;
  114. property nextSibling : TJSNode Read FNextSibling;
  115. property nodeName : String Read FNodeName;
  116. property nodeType : NativeInt Read FNodeType;
  117. property ownerDocument : TJSDocument read FOwnerDocument;
  118. property parentElement : TJSElement read FParentElement;
  119. property parentNode : TJSNode read FParentNode;
  120. property previousSibling : TJSNode Read FPreviousSibling;
  121. end;
  122. TJSNodeListCallBack = procedure (currentValue : TJSNode; currentIndex: NativeInt; list : TJSNodeList);
  123. TJSNodeListEvent = procedure (currentValue : TJSNode; currentIndex: NativeInt; list : TJSNodeList) of object;
  124. TJSNodeList = class external name 'NodeList' (TJSObject)
  125. Private
  126. FLength : NativeInt; external name 'length';
  127. Public
  128. procedure forEach(const aCallBack : TJSNodeListCallBack);
  129. procedure forEach(const aCallBack : TJSNodeListEvent);
  130. function item(aIndex : NativeInt) : TJSNode;
  131. Property length : NativeInt Read FLength;
  132. Property Nodes [aIndex : NativeInt] : TJSNode Read item; default;
  133. end;
  134. TJSAttr = class external name 'Attr' (TJSNode)
  135. Private
  136. fLocalName : String; external name 'localName';
  137. fNameSpaceURI : String external name 'namespaceURI';
  138. fPrefix : string; external name 'prefix';
  139. fName : string; external name 'name';
  140. fSpecified : Boolean; external name 'specified';
  141. public
  142. value : JSValue;
  143. property localName : String Read fLocalName;
  144. property namespaceURI : string Read fNameSpaceURI;
  145. property prefix : string read fPrefix;
  146. property name : string Read fName;
  147. property specified : boolean Read fSpecified; // Useless, always true
  148. end;
  149. TJSNamedNodeMap = class external name 'NamedNodeMap' (TJSObject)
  150. Public
  151. function getNamedItem(aName : string) : TJSAttr;
  152. Property Attrs[aIndex : String] : TJSattr Read getNamedItem; default;
  153. end;
  154. TJSHTMLCollection = class external name 'HTMLCollection' (TJSObject)
  155. Private
  156. FLength : NativeInt; external name 'length';
  157. public
  158. Function item(aIndex : Integer) : TJSNode;
  159. Function namedItem(aName : string) : TJSNode;
  160. property Items[aIndex : Integer] : TJSNode Read item; default;
  161. property NamedItems[aName : String] : TJSNode Read namedItem;
  162. Property length : NativeInt Read FLength;
  163. end;
  164. TJSDOMString = String;
  165. TDOMTokenlistCallBack = Procedure (Current : JSValue; currentIndex : NativeInt; list : TJSDOMTokenList);
  166. // Interface
  167. TJSDOMTokenList = class external name 'DOMTokenList' (TJSObject)
  168. Private
  169. FLength : NativeInt; external name 'length';
  170. public
  171. Procedure add(aToken : TJSDOMString); varargs;
  172. Procedure remove(aToken : TJSDOMString); varargs;
  173. function item(aIndex : NativeInt) : String;
  174. function contains(aToken : TJSDOMString) : Boolean;
  175. Procedure replace(aOldToken, ANewToken : TJSDOMString);
  176. function supports(aToken : TJSDOMString) : Boolean;
  177. function toggle(aToken : TJSDOMString) : Boolean;
  178. // entries,keys, values
  179. procedure forEach(const callback: TDOMTokenlistCallBack);
  180. property length : NativeInt read FLength;
  181. end;
  182. TJSDOMRect = class external name 'DOMRect' (TJSObject)
  183. public
  184. left,top,right,bottom,x,y,width,height : double;
  185. {$IFDEF FIREFOX}
  186. constructor New;
  187. {$ENDIF}
  188. end;
  189. TJSClientRect = record
  190. left,top,right,bottom : double;
  191. {$IFDEF FIREFOX}
  192. width, height: double;
  193. {$ENDIF}
  194. end;
  195. TJSClientRectArray = array of TJSClientRect;
  196. TJSElement = class external name 'Element' (TJSNode)
  197. Private
  198. FAttributes : TJSNamedNodeMap; external name 'attributes';
  199. FChildElementCount : NativeInt; external name 'childElementCount';
  200. FChildren : TJSHTMLCollection; external name 'children';
  201. FClassList : TJSDOMTokenList; external name 'classList';
  202. FCLientHeight : NativeInt; external name 'clientHeight';
  203. FCLientLeft : NativeInt; external name 'clientLeft';
  204. FCLientTop : NativeInt; external name 'clientTop';
  205. FCLientWidth : NativeInt; external name 'clientWidth';
  206. FFirstElementChild : TJSElement; external name 'firstElementChild';
  207. FLastElementChild : TJSElement; external name 'lastElementChild';
  208. FLocalName : string; external name 'localName';
  209. FNameSpaceURI : String; external name 'namespaceURI';
  210. FNextElementSibling : TJSElement; external name 'nextElementSibling';
  211. FPreviousElementSibling : TJSElement; external name 'previousElementSibling';
  212. FPrefix : String; external name 'prefix';
  213. FScrollHeight : NativeInt; external name 'scrollHeight';
  214. {$IFDEF FIREFOX}
  215. FScrollLeftMax : NativeInt; external name 'scrollLeftMax';
  216. FScrollTopMax : NativeInt; external name 'scrollTopMax';
  217. {$endif}
  218. FScrollWidth : NativeInt; external name 'scrollWidth';
  219. FTagName : string; external name 'tagName';
  220. Public
  221. name : string;
  222. className : string;
  223. id : string;
  224. innerHTML : String;
  225. outerHTML : string;
  226. scrollLeft : NativeInt;
  227. scrollTop : NativeInt;
  228. procedure append(aText : String); overload;
  229. procedure append(aNode : TJSElement); overload;
  230. procedure append(aText : String; aNode : TJSElement); varargs; overload;
  231. procedure append(aNode1,aNode2: TJSElement); varargs; overload;
  232. function getAttribute(aName : string) : string;
  233. function getAttributeNode(aName : string) : TJSAttr;
  234. function getAttributeNodeNS(aNameSpace, aName : string) : TJSAttr;
  235. function getAttributeNS(aNameSpace, aName : string) : string;
  236. function getBoundingClientRect : TJSDOMRect;
  237. function getClientRects : TJSClientRectArray;
  238. function getElementsByClassName(aClassName: string) : TJSHTMLCollection;
  239. function getElementsByTagNameNS(aNameSpace, aTagName : String): TJSHTMLCollection;
  240. function getElementsByTagName(aTagName : String): TJSHTMLCollection;
  241. function hasAttribute(aName : String) : Boolean;
  242. function hasAttributeNS(aNameSpace,aName : String) : Boolean;
  243. function hasAttributes : Boolean;
  244. function insertAdjacentElement(aPosition : string; aElement : TJSElement) : TJSElement;
  245. procedure insertAdjacentHTML(aPosition,aHTML : string);
  246. procedure insertAdjacentText(aPosition,aText : string);
  247. function matches(aSelectorString : String) : Boolean;
  248. function querySelector(aSelectors : String) : TJSElement;
  249. function querySelectorAll(aSelectors : String) : TJSNodeList;
  250. procedure remove; overload;
  251. procedure releasePointerCapture(evID : JSValue);
  252. procedure removeAttribute(aName: string);
  253. procedure removeAttributeNS(aNameSpace,aName: string);
  254. function removeAttributeNode(aAttr : TJSAttr) : TJSAttr;
  255. procedure setAttribute(aName : string; AValue : String);
  256. function setAttributeNode(aNode: TJSAttr) : TJSAttr;
  257. function setAttributeNodeNS(aNode: TJSAttr) : TJSAttr;
  258. procedure setAttributeNS(aNameSpace,aName : string; AValue : String);
  259. procedure setCapture(retargetToElement : Boolean);
  260. procedure setPointerCapture(pointerID : JSValue);
  261. procedure requestFullScreen;
  262. Property attributes : TJSNamedNodeMap read FAttributes;
  263. Property childElementCount : NativeInt Read FChildElementCount;
  264. Property children : TJSHTMLCollection Read FChildren;
  265. Property classList : TJSDOMTokenList read FClassList;
  266. property clientHeight : NativeInt read FClientHeight;
  267. property clientLeft : NativeInt read FClientLeft;
  268. property clientTop : NativeInt read FClientTop;
  269. property clientWidth : NativeInt read FClientWidth;
  270. property firstElementChild : TJSElement Read FFirstElementChild;
  271. property lastElementChild : TJSElement Read FLastElementChild;
  272. property localName : string Read FLocalName;
  273. property namespaceURI : String read FNameSpaceURI;
  274. property nextElementSibling : TJSElement Read FNextElementSibling;
  275. property previousElementSibling : TJSElement Read FPreviousElementSibling;
  276. property prefix : String read FPrefix;
  277. property scrollHeight : NativeInt Read FScrollHeight;
  278. {$IFDEF FIREFOX}
  279. property scrollLeftMax : NativeInt Read FScrollLeftMax;
  280. property scrollTopMax : NativeInt Read FScrollTopMax;
  281. {$ENDIF}
  282. property scrollWidth : NativeInt Read FScrollWidth;
  283. property tagName : String read FTagName;
  284. Property Attrs[aName : string] : String read getAttribute write setAttribute; default;
  285. end;
  286. TJSElementCreationOptions = record
  287. named : string;
  288. end;
  289. TJSDocumentType = class external name 'DocumentType' (TJSNode)
  290. private
  291. FName : String; external name 'name';
  292. FPublicID : String; external name 'publicId';
  293. FSystemID : String; external name 'systemId';
  294. public
  295. property name : String read FName;
  296. property publicId : String Read FPublicID;
  297. property systemId : String read FSystemID;
  298. end;
  299. TJSDOMImplementation = class external name 'DocumentImplementation' (TJSObject)
  300. Public
  301. function createDocument(aNamespaceURI, aQualifiedNameStr : String; aDocumentType : TJSDocumentType) : TJSDocument;
  302. function createDocumentType(aQualifiedNameStr,aPublicId,aSystemId : String) : TJSDocumentType;
  303. function createHTMLDocument(aTitle : String) : TJSDocument;
  304. end;
  305. TJSLocation = class external name 'Location' (TJSObject)
  306. Private
  307. FOrigin : string; external name 'origin';
  308. Public
  309. hash : string;
  310. host : string;
  311. hostname : string;
  312. href : string;
  313. password : string;
  314. pathname : string;
  315. port : string;
  316. protocol : string;
  317. search : string;
  318. username : string;
  319. procedure assign(aURL : String); overload;
  320. procedure reload(aForce : Boolean);
  321. procedure replace(aURL : String);
  322. property origin : string read FOrigin;
  323. end;
  324. TJSCSSStyleDeclaration = class; // forward
  325. TJSStyleSheet = class external name 'StyleSheet' (TJSEventTarget)
  326. Private
  327. FHRef : String; external name 'href';
  328. FOwnerNode : TJSNode; external name 'ownerNode';
  329. FParentStyleSheet : TJSStyleSheet; external name 'parentStyleSheet';
  330. FTitle : String; external name 'title';
  331. FType : String; external name 'type';
  332. Public
  333. disabled : String;
  334. Property href : String read FHRef;
  335. property ownerNode : TJSNode Read FOwnerNode;
  336. property parentStyleSheet : TJSStyleSheet read FParentStyleSheet;
  337. property title : string Read FTitle;
  338. property _type : String read FType;
  339. end;
  340. TJSCSSRule = class external name 'CSSRule' (TJSObject)
  341. Private
  342. FCSSText : String; external name 'cssText';
  343. FParentStyleSheet : TJSCSSStyleSheet; external name 'parentStyleSheet';
  344. FparentRule : TJSCSSRule; external name 'parentRule';
  345. Public
  346. property cssText : String Read FCSSText;
  347. property parentRule : TJSCSSRule read FparentRule;
  348. property parentStyleSheet : TJSCSSStyleSheet Read FParentStyleSheet;
  349. end;
  350. TJSCSSStyleRule = class external name 'CSSStyleRule' (TJSCSSRule)
  351. private
  352. FStyle: TJSCSSStyleDeclaration; external name 'style';
  353. public
  354. selectorText: String;
  355. property style: TJSCSSStyleDeclaration read FStyle;
  356. end;
  357. TJSCSSRuleList = Class external name 'CSSRuleList' (TJSObject)
  358. Private
  359. FLength : NativeInt; external name 'length';
  360. Public
  361. function item(index : NativeInt) : TJSCSSRule;
  362. property length : NativeInt Read FLength;
  363. Property items[aIndex : NativeInt] : TJSCSSRule read item; default;
  364. end;
  365. TJSCSSStyleSheet = class external name 'CSSStyleSheet' (TJSStyleSheet)
  366. Private
  367. FCSSRules : TJSCSSRuleList; external name 'cssRules';
  368. Public
  369. procedure deleteRule(aIndex : NativeInt);
  370. function insertRule(aRule : String; aIndex : NativeInt) : NativeInt;
  371. Property cssRules : TJSCSSRuleList read FCSSRules;
  372. end;
  373. TJSStyleSheetList = Class external name 'StyleSheetList' (TJSObject)
  374. Private
  375. FLength : NativeInt; external name 'length';
  376. Public
  377. function item(index : NativeInt) : TJSStyleSheet;
  378. property length : NativeInt Read FLength;
  379. Property items[aIndex : NativeInt] : TJSStyleSheet read item; default;
  380. end;
  381. { TJSDocumentFragment }
  382. TJSDocumentFragment = Class external name 'DocumentFragment' (TJSNode)
  383. private
  384. FchildElementCount: Integer; external name 'childElementCount';
  385. Fchildren: TJSHTMLCollection; external name 'children';
  386. FfirstElementChild: TJSElement; external name 'firstElementChild';
  387. FlastElementChild: TJSElement; external name 'lastElementChild';
  388. public
  389. constructor new;
  390. function querySelector(aSelector : String) : TJSElement;
  391. function querySelectorAll(aSelector : String) : TJSNodeList;
  392. property childElementCount : Integer read FchildElementCount;
  393. property children : TJSHTMLCollection read Fchildren;
  394. property firstElementChild : TJSElement read FfirstElementChild;
  395. property lastElementChild : TJSElement read FlastElementChild;
  396. end;
  397. TJSEventInit = record
  398. bubbles : boolean;
  399. cancelable : boolean;
  400. scoped : boolean;
  401. composed : boolean;
  402. end;
  403. TJSEvent = class external name 'Event' (TJSObject)
  404. Private
  405. FBubbles : Boolean; external name 'bubbles';
  406. FCancelable : Boolean; external name 'cancelable';
  407. FComposed : Boolean; external name 'composed';
  408. FCurrentTarget : TJSEventTarget; external name 'currentTarget';
  409. FCurrentTargetElement : TJSElement; external name 'currentTarget';
  410. FdefaultPrevented : Boolean; external name 'defaultPrevented';
  411. FEventPhase : NativeInt; external name 'eventPhase';
  412. FTarget : TJSEventTarget; external name 'target';
  413. FTargetElement : TJSElement; external name 'target';
  414. FTimeStamp : NativeInt; external name 'timestamp';
  415. FType : String; external name 'type';
  416. FIsTrusted : Boolean; external name 'isTrusted';
  417. Public
  418. Const
  419. NONE = 0;
  420. CAPTURING_PHASE = 1;
  421. AT_TARGET = 2;
  422. BUBBLING_PHASE = 3;
  423. public
  424. cancelBubble : Boolean;
  425. constructor new (aType : String; const aInit : TJSEventInit); overload;
  426. constructor new (aType : String); overload;
  427. procedure preventDefault;
  428. procedure stopImmediatePropagation;
  429. procedure stopPropagation;
  430. Property bubbles : Boolean Read FBubbles;
  431. Property cancelable : Boolean Read FCancelable;
  432. Property composed : Boolean Read FComposed;
  433. property currentTarget : TJSEventTarget Read FCurrentTarget;
  434. property currentTargetElement : TJSElement Read FCurrentTargetElement;
  435. property defaultPrevented : Boolean Read FdefaultPrevented;
  436. property eventPhase : NativeInt Read FEventPhase;
  437. property target : TJSEventTarget Read FTarget;
  438. property targetElement : TJSElement Read FTargetElement;
  439. Property timestamp : NativeInt Read FTimeStamp;
  440. property _type : string read FType;
  441. property isTrusted : Boolean Read FIsTrusted;
  442. end;
  443. TJSXPathExpression = class external name 'XPathExpression' (TJSObject)
  444. Public
  445. function evaluate(contextNode : TJSNode; aType : NativeInt; aResult : TJSXPathResult) : TJSXPathResult;
  446. function evaluateWithContext(contextNode : TJSNode; aPosition, aSize, aType : NativeInt; aResult : TJSXPathResult) : TJSXPathResult;
  447. end;
  448. TJSXPathNSResolver = class external name 'XPathNSResolver' (TJSObject)
  449. Public
  450. function lookupNamespaceURI(prefix : string) : string;
  451. end;
  452. { TJSCharacterData }
  453. TJSCharacterData = class external name 'CharacterData' (TJSNode)
  454. private
  455. FnextElementSibling: TJSElement; external name 'nextElementSibling';
  456. FpreviousElementSibling: TJSElement; external name 'previousElementSibling';
  457. public
  458. property nextElementSibling : TJSElement read FnextElementSibling;
  459. property previousElementSibling : TJSElement read FpreviousElementSibling;
  460. end;
  461. TJSProcessingInstruction = class external name 'ProcessingInstruction' (TJSCharacterData);
  462. { TJSRange }
  463. TJSRange = class external name 'Range' (TJSObject)
  464. private
  465. FCollapsed: boolean; external name 'collapsed';
  466. FcommonAncestorContainer: TJSNode; external name 'commonAncestorContainer';
  467. FendContainer: TJSNode; external name 'endContainer';
  468. FEndOffset: NativeInt; external name 'endOffset';
  469. FstartContainer: TJSNode; external name 'startContainer';
  470. FstartOffset: NativeInt; external name 'startOffset';
  471. Public
  472. const
  473. END_TO_END = 0;
  474. END_TO_START = 1;
  475. START_TO_END = 2;
  476. START_TO_START = 3;
  477. Public
  478. constructor new;
  479. function cloneContents : TJSDocumentFragment;
  480. function cloneRange : TJSRange;
  481. procedure collapse;
  482. function compareBoundaryPoints(aHow : NativeInt) : NativeInt;
  483. function createContextualFragment(aTagstring : String) : TJSDocumentFragment;
  484. procedure deleteContents;
  485. procedure detach;
  486. function extractContents : TJSDocumentFragment;
  487. procedure insertNode(aNode : TJSNode);
  488. procedure selectNode(aNode : TJSNode);
  489. procedure selectNodeContents(aNode : TJSNode);
  490. procedure setEnd(aEndNode : TJSNode; aEndOffset : NativeInt);
  491. procedure setEndAfter(aEndNode : TJSNode);
  492. procedure setEndBefore(aEndNode : TJSNode);
  493. procedure setStart(aStartNode : TJSNode; aStartOffset : NativeInt);
  494. procedure setStartAfter(aStartNode : TJSNode);
  495. procedure setStartBefore(aStartNode : TJSNode);
  496. procedure surroundContents(aNode : TJSNode);
  497. property collapsed : boolean read FCollapsed;
  498. property commonAncestorContainer : TJSNode read FcommonAncestorContainer ;
  499. property endContainer : TJSNode read FendContainer;
  500. property endOffset : NativeInt Read FEndOffset;
  501. property startContainer : TJSNode read FstartContainer;
  502. property startOffset : NativeInt Read FstartOffset;
  503. end;
  504. { TJSTreeWalker }
  505. TJSTreeWalker = class external name 'TreeWalker' (TJSObject)
  506. private
  507. FCurrentNode: TJSNode; external name 'currentNode';
  508. FexpandEntityReference: Boolean; external name 'expandEntityReference';
  509. FFilter: TJSNodeFilter; external name 'filter';
  510. FRoot: TJSNode; external name 'root';
  511. FWhatToShow: NativeInt; external name 'whatToShow';
  512. Public
  513. function firstChild : TJSNode;
  514. function lastChild : TJSNode;
  515. function nextNode : TJSNode;
  516. function nextSibling : TJSNode;
  517. function parentNode : TJSNode;
  518. function previousNode : TJSNode;
  519. function previousSibling : TJSNode;
  520. property root : TJSNode read FRoot;
  521. property whatToShow : NativeInt read FWhatToShow;
  522. property filter : TJSNodeFilter Read FFilter;
  523. property expandEntityReference : Boolean Read FexpandEntityReference;
  524. property currentNode : TJSNode Read FCurrentNode;
  525. end;
  526. TJSNodeFilter = class external name 'NodeFilter' (TJSObject)
  527. const
  528. SHOW_ALL = -1;
  529. SHOW_ATTRIBUTE = 2;
  530. SHOW_CDATA_SECTION = 8;
  531. SHOW_COMMENT = 128;
  532. SHOW_DOCUMENT = 256;
  533. SHOW_DOCUMENT_FRAGMENT = 1024;
  534. SHOW_DOCUMENT_TYPE = 512;
  535. SHOW_ELEMENT = 1;
  536. SHOW_ENTITY = 32;
  537. SHOW_ENTITY_REFERENCE = 16;
  538. SHOW_NOTATION = 2048;
  539. SHOW_PROCESSING_INSTRUCTION = 64;
  540. SHOW_TEXT = 4;
  541. function acceptNode (aNode : TJSNode) : NativeInt;
  542. end;
  543. TJSXPathResult = class external name 'XPathResult' (TJSObject)
  544. private
  545. FBooleanValue : Boolean; external name 'booleanValue';
  546. FNumberValue : Double; external name 'numberValue';
  547. FResultType : NativeInt; external name 'resultType';
  548. FSingleNodeValue : TJSNode; external name 'singleNodeValue';
  549. FSnaphotLength : NativeInt; external name 'snapshotLength';
  550. FStringValue : String; external name 'stringValue';
  551. public
  552. Function iterateNext : TJSNode;
  553. Function snapshotItem(Index: NativeInt) : TJSNode;
  554. Property booleanValue : Boolean Read FBooleanValue;
  555. Property numberValue : Double Read FNumberValue;
  556. property resultType : NativeInt Read FResultType;
  557. Property singleNodeValue : TJSNode Read FSingleNodeValue;
  558. property snapshotLength : NativeInt read FSnaphotLength;
  559. property stringValue : String Read FStringValue;
  560. end;
  561. TJSSelection = class external name 'Selection' (TJSObject)
  562. Private
  563. FanchorNode : TJSNode ; external name 'anchorNode';
  564. FanchorOffset : NativeInt ; external name 'anchorOffset';
  565. FfocusNode : TJSNode ; external name 'focusNode';
  566. FfocusOffset : NativeInt ; external name 'focusOffset';
  567. FisCollapsed : Boolean ; external name 'isCollapsed';
  568. FrangeCount : NativeInt ; external name 'rangeCount';
  569. Ftype : String ; external name 'type';
  570. Public
  571. function getRangeAt(aIndex : NativeInt) : TJSRange;
  572. procedure collapse(aParentNode : TJSNode; Offset : NativeInt);
  573. procedure extend(aParentNode : TJSNode; Offset : NativeInt);
  574. procedure collapseToStart;
  575. procedure collapseToEnd;
  576. procedure selectAllChildren(aParentNode : TJSNode);
  577. procedure addRange(aRange : TJSRange);
  578. procedure removeRange(aRange : TJSRange);
  579. procedure removeAllRanges;
  580. procedure deleteFromDocument;
  581. function containsNode(aNode : TJSNode; aPartlyContained : Boolean) : Boolean;
  582. procedure setBaseAndExtent(aAnchorNode : TJSNode; aAnchorOffset : NativeInt; aFocusNode : TJSNode; aFocusOffset : NativeInt);
  583. property anchorNode : TJSNode read FAnchorNode;
  584. property anchorOffset : NativeInt read FAnchorOffset;
  585. property focusNode : TJSNode read FFocusNode;
  586. property focusOffset : NativeInt read FFocusOffset;
  587. property isCollapsed : Boolean read FIsCollapsed;
  588. property rangeCount : NativeInt read FRangeCount;
  589. property _type : String Read FType;
  590. end;
  591. TJSNameSpaceMapperCallback = function (aNameSpace : string ) : String;
  592. TJSHTMLFile = class;
  593. TJSHTMLFileList = Class;
  594. { TJSDataTransferItem }
  595. TJSDataTransferItemCallBack = reference to Procedure(aData : String); safecall;
  596. TJSDataTransferItem = class external name 'DataTransferItem' (TJSObject)
  597. private
  598. FKind: String; external name 'kind';
  599. FType: string; external name 'type';
  600. Public
  601. function getAsFile : TJSHTMLFile;
  602. Procedure getAsString(aCallBack : TJSDataTransferItemCallBack);
  603. property Kind : String read FKind;
  604. property _Type : string read FType;
  605. end;
  606. TJSDataTransferItemList = class external name 'DataTransferItemList' (TJSObject)
  607. private
  608. FLength: NativeInt; external name 'length';
  609. function getitem(aIndex : nativeInt) : TJSDataTransferItem ; external name '[]';
  610. Public
  611. Function add(aData : string; AType: string) : TJSDataTransferItem; overload;
  612. Function add(aFile : TJSHTMLFile) : TJSDataTransferItem; overload;
  613. Procedure clear;
  614. procedure remove(aIndex : integer);
  615. property length : NativeInt read FLength;
  616. property Items[aIndex : NativeInt] : TJSDataTransferItem Read getitem; default;
  617. end;
  618. { TJSDataTransfer }
  619. TJSDataTransfer = class external name 'DataTransfer' (TJSObject)
  620. private
  621. FFiles: TJSHTMLFileList; external name 'files';
  622. FItems: TJSDataTransferItemList; external name 'items';
  623. FTypes: TJSStringDynArray; external name 'types';
  624. Public
  625. dropEffect : string;
  626. effectAllowed : string;
  627. Procedure clearData; overload;
  628. Procedure clearData(aFormat : string); overload;
  629. function getData(aFormat : string) : String;
  630. procedure setData(aFormat : String; aData : String);
  631. procedure setDragImage(aImage: TJSElement; xOffset,yOffset : integer);
  632. property files : TJSHTMLFileList Read FFiles;
  633. property items : TJSDataTransferItemList read FItems;
  634. property types : TJSStringDynArray read FTypes;
  635. end;
  636. { TJSDragEvent }
  637. TJSDragEvent = class external name 'DragEvent' (TJSEvent)
  638. Private
  639. FDataTransfer: TJSDataTransfer; external name 'dataTransfer';
  640. FrelatedTarget : TJSEventTarget external name 'relatedTarget';
  641. FscreenX : NativeInt external name 'screenX';
  642. FscreenY : NativeInt external name 'screenY';
  643. FclientX : NativeInt external name 'clientX';
  644. FclientY : NativeInt external name 'clientY';
  645. Fbutton : NativeInt external name 'button';
  646. Fbuttons : NativeInt external name 'buttons';
  647. FctrlKey : Boolean external name 'ctrlKey';
  648. FshiftKey : Boolean external name 'shiftKey';
  649. FaltKey : Boolean external name 'altKey';
  650. FmetaKey : Boolean external name 'metaKey';
  651. Public
  652. Property relatedTarget : TJSEventTarget Read FRelatedTarget;
  653. Property screenX : NativeInt Read FScreenX;
  654. Property screenY : NativeInt Read FScreenY;
  655. Property clientX : NativeInt Read FClientX;
  656. Property clientY : NativeInt Read FClientY;
  657. Property button : NativeInt Read FButton;
  658. Property buttons : NativeInt Read FButtons;
  659. Property ctrlKey : Boolean Read FctrlKey;
  660. Property shiftKey : Boolean Read FshiftKey;
  661. Property altKey : Boolean Read FaltKey;
  662. Property metaKey : Boolean Read FmetaKey;
  663. property dataTransfer : TJSDataTransfer Read FDataTransfer;
  664. end;
  665. TJSDragDropEventHandler = reference to function(aEvent: TJSDragEvent) : Boolean; safecall;
  666. THTMLClickEventHandler = reference to function(aEvent : TJSMouseEvent) : boolean; safecall;
  667. TJSClipBoardEvent = Class external name 'ClipboardEvent' (TJSEvent)
  668. Private
  669. FClipboardData: TJSDataTransfer external name 'clipboardData';
  670. Public
  671. Property ClipBoardData : TJSDataTransfer Read FClipBoardData;
  672. end;
  673. { Various events }
  674. TJSFocusEvent = Class(TJSEvent)
  675. private
  676. FrelatedTarget : TJSElement external name 'relatedTarget';
  677. public
  678. property relatedTarget : TJSElement Read FrelatedTarget;
  679. end;
  680. TJSAnimationEvent = Class(TJSEvent);
  681. TJSLoadEvent = Class(TJSEvent);
  682. TJSErrorEvent = class external name 'ErrorEvent' (TJSEvent)
  683. Private
  684. Fmessage : String external name 'message';
  685. Ffilename : string external name 'filename';
  686. Flineno : integer external name 'lineno';
  687. Fcolno : integer external name 'colno';
  688. Ferror : TJSObject external name 'error';
  689. Public
  690. Property message : String read FMessage;
  691. property filename : string Read FFileName;
  692. property lineno : integer read FLineNo;
  693. Property colno : integer read FColNo;
  694. Property error : TJSObject read FError;
  695. end;
  696. TJSPageTransitionEvent = class(TJSEvent)
  697. end;
  698. TJSHashChangeEvent = class external name 'HashChangeEvent' (TJSEvent)
  699. Private
  700. FnewURL : String external name 'newURL';
  701. FoldURL : String external name 'oldURL';
  702. public
  703. property newURL : String Read FNewURL;
  704. property oldURL : String Read FOldURL;
  705. end;
  706. TJSPopStateEvent = class external name 'PopStateEvent' (TJSEvent)
  707. Private
  708. FState : JSValue; external name 'state';
  709. Public
  710. property state : JSValue read FState;
  711. end;
  712. TJSStorageEvent = class external name 'StorageEvent' (TJSEvent)
  713. private
  714. Fkey : String external name 'key';
  715. FoldValue : String external name 'oldValue';
  716. FnewValue : String external name 'newValue';
  717. Furl : String external name 'url';
  718. FstorageArea : String external name 'storageArea';
  719. public
  720. Property key : String Read FKey;
  721. Property oldValue : String Read FOldValue;
  722. Property newValue : String Read FNewValue;
  723. Property url : String Read FURL;
  724. Property storageArea : String Read FstorageArea;
  725. end;
  726. { TJSProgressEvent }
  727. TJSProgressEvent = class external name 'ProgressEvent' (TJSEvent)
  728. Private
  729. FlengthComputable : Boolean external name 'lengthComputable';
  730. Floaded : NativeUINT external name 'loaded';
  731. FTotal : NativeUINT external name 'Total';
  732. Public
  733. property lengthComputable : Boolean Read FlengthComputable;
  734. property loaded : NativeUINT Read FLoaded;
  735. property Total : NativeUINT Read FTotal;
  736. end;
  737. TJSCloseEvent = class external name 'CloseEvent' (TJSEvent)
  738. private
  739. fcode: Word; external name 'code';
  740. freason: TJSDOMString; external name 'reason';
  741. fwasClean: Boolean; external name 'wasClean';
  742. public
  743. property code: Word read fcode;
  744. property reason: TJSDOMString read freason;
  745. property wasClean: Boolean read fwasClean;
  746. end;
  747. TJSPageTransitionEventHandler = reference to function(aEvent : TJsPageTransitionEvent) : boolean; safecall;
  748. TJSHashChangeEventhandler = reference to function(aEvent : TJSHashChangeEvent) : boolean; safecall;
  749. TJSMouseWheelEventHandler = reference to function(aEvent : TJSWheelEvent) : boolean; safecall;
  750. TJSMouseEventHandler = reference to function(aEvent : TJSMouseEvent) : boolean; safecall;
  751. THTMLAnimationEventHandler = reference to function(aEvent : TJSAnimationEvent) : boolean; safecall;
  752. TJSErrorEventHandler = reference to function(aEvent : TJSErrorEvent) : boolean; safecall;
  753. TJSFocusEventHandler = reference to function(aEvent : TJSFocusEvent) : boolean; safecall;
  754. TJSKeyEventhandler = reference to function (aEvent : TJSKeyBoardEvent) : boolean; safecall;
  755. TJSLoadEventhandler = reference to function (aEvent : TJSLoadEvent) : boolean; safecall;
  756. TJSPointerEventHandler = reference to function(aEvent : TJSPointerEvent) : boolean; safecall;
  757. TJSUIEventHandler = reference to function(aEvent : TJSUIEvent) : Boolean; safecall;
  758. TJSPopStateEventHandler = reference to function(aEvent : TJSPopStateEvent) : Boolean; safecall;
  759. TJSStorageEventHandler = reference to function(aEvent : TJSStorageEvent) : Boolean; safecall;
  760. TJSProgressEventhandler = reference to function(aEvent : TJSProgressEvent) : Boolean; safecall;
  761. TJSTouchEventHandler = reference to function(aEvent : TJSTouchEvent) : boolean; safecall;
  762. TJSDocument = class external name 'Document' (TJSNode)
  763. Private
  764. fActiveElement : TJSElement; external name 'activeElement';
  765. FCharacterSet: String; external name 'characterSet';
  766. FChildElementCount: NativeInt; external name 'childElementCount';
  767. FCompatMode: String; external name 'compatMode';
  768. FCurrentScript: TJSElement; external name 'currentScript';
  769. FDefaultView: TJSWindow; external name 'defaultView';
  770. FDocType: TJSDocumentType; external name 'docrype';
  771. FDocumentElement: TJSElement; external name 'documentElement';
  772. FDocumentURI: String; external name 'documentURI';
  773. FEmbeds: TJSHTMLCollection; external name 'embeds';
  774. FFirstElementChild : TJSElement; external name 'firstElementChild';
  775. FForms: TJSHTMLCollection; external name 'forms';
  776. FFullScreenElement: TJSElement; external name 'fullscreenElement';
  777. FFullscreenEnabled: Boolean; external name 'fullscreenEnabled';
  778. FHead: TJSElement; external name 'head';
  779. FHidden: Boolean; external name 'hidden';
  780. FImages: TJSHTMLCollection; external name 'images';
  781. FImplementation: TJSDOMImplementation; external name 'implementation';
  782. FLastElementChild : TJSElement; external name 'lastElementChild';
  783. FLastModified: String; external name 'lastModified';
  784. FLastStyleSheetSet: String; external name 'lastStyleSheetSet';
  785. FLinks: TJSHTMLCollection; external name 'links';
  786. FLocation: TJSLocation; external name 'location';
  787. FLocationString: String; external name 'location';
  788. FPlugins: TJSHTMLCollection; external name 'plugins';
  789. FPointerLockElement: TJSElement; external name 'pointerLockElement';
  790. FPreferredStyleSheetSet: String; external name 'preferredStyleSheetSet';
  791. FReadyState: String; external name 'readyState';
  792. FReferrer: String; external name 'referrer';
  793. FScripts: TJSHTMLCollection; external name 'scripts';
  794. FStyleSheets: TJSStyleSheetList; external name 'styleSheets';
  795. FStyleSheetSets: TJSValueDynArray; external name 'styleSheetSets';
  796. FURL: String; external name 'URL';
  797. FVisibilityState: string; external name 'visibilityState';
  798. Public
  799. function adoptNode(aExternalNode : TJSNode) : TJSNode;
  800. procedure close;
  801. function createAttribute(aName : string) : TJSAttr;
  802. function createCDATASection(S : String) : TJSNode;
  803. function createComment(S : String) : TJSNode;
  804. function createDocumentFragment : TJSDocumentFragment;
  805. function createElement(tagName : string) : TJSElement; overload;
  806. function createElement(tagName : string; const options : TJSElementCreationOptions) : TJSElement; overload;
  807. function createElementNS(aNameSpace,tagName : string) : TJSElement; overload;
  808. function createElementNS(aNameSpace,tagName : string; const options : TJSElementCreationOptions) : TJSElement; overload;
  809. function createEvent(aType : string) : TJSEvent;
  810. function createExpression(xPathText : String; aNameSpaceMapper: TJSNameSpaceMapperCallback) : TJSXPathExpression;
  811. function createNSResolver(aNode : TJSNode) : TJSXPathNSResolver;
  812. function createProcessingInstruction(target, data : String) : TJSProcessingInstruction;
  813. function createRange : TJSRange;
  814. function createTextNode(S : String) : TJSNode;
  815. function createTreeWalker(root : TJSNode; whatToShow : NativeInt; filter : TJSNodeFilter) : TJSTreeWalker;
  816. function elementFromPoint(x,y : integer) : TJSElement;
  817. procedure enableStyleSheetsForSet(aSet : String);
  818. function evaluate(xpathExpression : String; ContextNode : TJSNode; NameSpaceResolver : TJSNamespaceMapperCallBack; resultType : NativeInt; aResult : TJSXPathResult) : TJSXPathResult;
  819. function execCommand(aCommandName : String; aShowDefaultUI : Boolean; AValueArgument : String) : boolean; overload;
  820. function execCommand(aCommandName : String; aShowDefaultUI : Boolean) : boolean; overload;
  821. Procedure exitFullScreen;
  822. function getElementById(aID : String) : TJSElement;
  823. function getElementsByClassName(aNames : string) : TJSHTMLCollection;
  824. function getElementsByName(aName : String) : TJSNodeList;
  825. function getElementsByTagName(aName : String) : TJSHTMLCollection;
  826. function getElementsByTagNameNS(aNameSpace,aName : String) : TJSHTMLCollection;
  827. function getSelection : TJSSelection;
  828. function hasFocus : boolean;
  829. function importNode(aExternalNode : TJSNode; Deep: boolean) : TJSNode;
  830. function querySelector(aSelectors : String) : TJSElement;
  831. function querySelectorAll(aSelectors : String) : TJSNodeList;
  832. procedure open;
  833. procedure releaseCapture;
  834. procedure write(aLine : string);
  835. procedure writeln(aLine : String);
  836. Public
  837. body : TJSElement;
  838. cookie: TJSString;
  839. designMode : string;
  840. dir : string;
  841. domain : string;
  842. selectedStyleSheetSet : string;
  843. title : string;
  844. onabort : TJSEventHandler;
  845. onblur : TJSEventHandler;
  846. oncancel : TJSEventHandler;
  847. oncanplay : TJSEventHandler;
  848. oncanplaythrough : TJSEventHandler;
  849. onchange : TJSEventHandler;
  850. onclick: THTMLClickEventHandler;
  851. onclose : TJSEventHandler;
  852. oncontextmenu : TJSEventHandler;
  853. oncuechange : TJSEventHandler;
  854. ondblclick : THTMLClickEventHandler;
  855. ondrag : TJSDragDropEventHandler;
  856. ondragend : TJSDragDropEventHandler;
  857. ondragenter : TJSDragDropEventHandler;
  858. ondragexit : TJSDragDropEventHandler;
  859. ondragover : TJSDragDropEventHandler;
  860. ondragleave : TJSDragDropEventHandler;
  861. ondragstart: TJSDragDropEventHandler;
  862. ondrop : TJSDragDropEventHandler;
  863. ondurationchange : TJSEventHandler;
  864. onemptied : TJSEventHandler;
  865. onended : TJSEventHandler;
  866. onerror : TJSErrorEventHandler;
  867. onfocus : TJSFocusEventhandler;
  868. ongotpointercapture : TJSPointerEventHandler;
  869. oninput : TJSEventhandler;
  870. oninvalid : TJSEventhandler;
  871. onkeydown : TJSKeyEventhandler;
  872. onkeypress : TJSKeyEventhandler;
  873. onkeyup : TJSKeyEventhandler;
  874. onload : TJSEventhandler;
  875. onloadeddata : TJSEventhandler;
  876. onloadedmetadata : TJSEventhandler;
  877. onloadend : TJSProgressEventhandler;
  878. onloadstart : TJSProgressEventhandler;
  879. onlostpointercapture : TJSPointerEventHandler;
  880. onmessage : TJSEventHandler;
  881. onmousedown : TJSMouseEventHandler;
  882. onmouseenter : TJSMouseEventHandler;
  883. onmouseleave : TJSMouseEventHandler;
  884. onmousemove : TJSMouseEventHandler;
  885. onmouseout : TJSMouseEventHandler;
  886. onmouseover : TJSMouseEventHandler;
  887. onmouseup : TJSMouseEventHandler;
  888. onmousewheel : TJSMouseEventHandler;
  889. onpause : TJSEventHandler;
  890. onplay : TJSEventHandler;
  891. onplaying : TJSEventHandler;
  892. onpointercancel : TJSPointerEventHandler;
  893. onpointerdown : TJSPointerEventHandler;
  894. onpointerenter : TJSPointerEventHandler;
  895. onpointerleave : TJSPointerEventHandler;
  896. onpointermove : TJSPointerEventHandler;
  897. onpointerout : TJSPointerEventHandler;
  898. onpointerover : TJSPointerEventHandler;
  899. onpointerup : TJSPointerEventHandler;
  900. onpointerlockchange : TJSPointerEventHandler;
  901. onprogress : TJSProgressEventhandler;
  902. onreset : TJSUIEventHandler;
  903. onratechange : TJSEventHandler;
  904. onscroll : TJSUIEventHandler;
  905. onseekend : TJSEventHandler;
  906. onseeking : TJSEventHandler;
  907. onselect : TJSEventHandler;
  908. onselectionchange : TJSEventHandler;
  909. onsshow : TJSEventHandler;
  910. onsubmit : TJSEventHandler;
  911. onunload : TJSUIEventHandler;
  912. onwaiting : TJSEventHandler;
  913. touchstart : TJSTouchEventHandler;
  914. touchend : TJSTouchEventHandler;
  915. touchmove : TJSTouchEventHandler;
  916. touchcancel : TJSTouchEventHandler;
  917. Property activeElement : TJSElement Read FActiveElement;
  918. Property characterSet : String Read FCharacterSet;
  919. property childElementCount : NativeInt Read FChildElementCount;
  920. property compatMode : String Read FCompatMode;
  921. property currentScript : TJSElement Read FCurrentScript;
  922. property defaultView : TJSWindow Read FDefaultView;
  923. property doctype : TJSDocumentType read FDocType;
  924. property documentElement : TJSElement read FDocumentElement;
  925. property documentURI : String Read FDocumentURI;
  926. property embeds : TJSHTMLCollection Read FEmbeds;
  927. property firstElementChild : TJSElement Read FFirstElementChild;
  928. property lastElementChild : TJSElement Read FLastElementChild;
  929. property Forms : TJSHTMLCollection Read FForms;
  930. property fullscreenElement : TJSElement Read FFullScreenElement;
  931. property fullscreenEnabled : Boolean Read FFullscreenEnabled;
  932. property head : TJSElement read FHead;
  933. Property hidden : Boolean read FHidden;
  934. property images : TJSHTMLCollection Read FImages;
  935. property _implementation : TJSDOMImplementation Read FImplementation;
  936. property lastModified : String Read FLastModified;
  937. property lastStyleSheetSet : String read FLastStyleSheetSet;
  938. property links : TJSHTMLCollection Read FLinks;
  939. property location : TJSLocation read FLocation;
  940. Property LocationString : String Read FURL Write FLocationString; // On purpose
  941. property plugins : TJSHTMLCollection Read FPlugins;
  942. property pointerLockElement : TJSElement Read FPointerLockElement;
  943. property preferredStyleSheetSet : String Read FPreferredStyleSheetSet;
  944. Property readyState : String Read FReadyState;
  945. Property referrer : String Read FReferrer;
  946. property scripts : TJSHTMLCollection Read FScripts;
  947. property styleSheets : TJSStyleSheetList Read FStyleSheets;
  948. property styleSheetSets : TJSValueDynArray Read FStyleSheetSets; // No type documented ?
  949. Property URL : String Read FURL;
  950. property visibilityState : string read FVisibilityState;
  951. end;
  952. TJSConsole = class external name 'Console' (TJSObject)
  953. Public
  954. procedure assert(anAssertion : string; Obj1 : JSValue); varargs;
  955. Procedure clear;
  956. procedure count; overload;
  957. procedure count(aCounter : String);
  958. procedure debug(Obj1 : JSValue); varargs of JSValue;
  959. procedure error(Obj1 : JSValue); varargs of JSValue;
  960. procedure group; overload;
  961. procedure group(aLabel : String); overload;
  962. procedure groupCollapsed; overload;
  963. procedure groupCollapsed(aLabel : String);overload;
  964. procedure groupEnd;
  965. procedure info(Obj1 : JSValue); varargs of JSValue;
  966. procedure log(Obj1 : JSValue); varargs of JSValue;
  967. procedure table(args: array of JSValue); overload;
  968. procedure table(args: array of JSValue; Columns : Array of string);
  969. procedure table(args: TJSObject); overload;
  970. procedure table(args: TJSObject; Columns : Array of string); overload;
  971. procedure time(aName : string);
  972. procedure timeEnd(aName : string);
  973. procedure trace;
  974. procedure warn(Obj1 : JSValue); varargs of JSValue;
  975. end;
  976. // TJSBufferSource = class external name 'BufferSource' end;
  977. // TJSTypedArray = class external name 'TypedArray' end;
  978. // Forward class definitions
  979. TJSCryptoKey = Class;
  980. TJSSubtleCrypto = Class;
  981. KeyType = String;
  982. KeyUsage = String;
  983. NamedCurve = String;
  984. BigInteger = TJSUint8Array;
  985. KeyFormat = String;
  986. // Union of object, DOMString
  987. AlgorithmIdentifier = JSValue;
  988. { --------------------------------------------------------------------
  989. Algorithm
  990. --------------------------------------------------------------------}
  991. Algorithm = record
  992. name : String;
  993. end;
  994. { --------------------------------------------------------------------
  995. AesCbcParams
  996. --------------------------------------------------------------------}
  997. AesCbcParams = record
  998. iv : TJSBufferSource;
  999. end;
  1000. { --------------------------------------------------------------------
  1001. AesCtrParams
  1002. --------------------------------------------------------------------}
  1003. AesCtrParams = record
  1004. counter : TJSBufferSource;
  1005. length_ : Byte;external name 'length';
  1006. end;
  1007. { --------------------------------------------------------------------
  1008. AesGcmParams
  1009. --------------------------------------------------------------------}
  1010. AesGcmParams = record
  1011. iv : TJSBufferSource;
  1012. additionalData : TJSBufferSource;
  1013. tagLength : Byte;
  1014. end;
  1015. { --------------------------------------------------------------------
  1016. HmacImportParams
  1017. --------------------------------------------------------------------}
  1018. HmacImportParams = record
  1019. hash : AlgorithmIdentifier;
  1020. end;
  1021. { --------------------------------------------------------------------
  1022. Pbkdf2Params
  1023. --------------------------------------------------------------------}
  1024. Pbkdf2Params = record
  1025. salt : TJSBufferSource;
  1026. iterations : NativeInt;
  1027. hash : AlgorithmIdentifier;
  1028. end;
  1029. { --------------------------------------------------------------------
  1030. RsaHashedImportParams
  1031. --------------------------------------------------------------------}
  1032. RsaHashedImportParams = record
  1033. hash : AlgorithmIdentifier;
  1034. end;
  1035. { --------------------------------------------------------------------
  1036. AesKeyGenParams
  1037. --------------------------------------------------------------------}
  1038. AesKeyGenParams = record
  1039. length_ : Integer;external name 'length';
  1040. end;
  1041. { --------------------------------------------------------------------
  1042. HmacKeyGenParams
  1043. --------------------------------------------------------------------}
  1044. HmacKeyGenParams = record
  1045. hash : AlgorithmIdentifier;
  1046. length_ : Integer;external name 'length';
  1047. end;
  1048. { --------------------------------------------------------------------
  1049. RsaHashedKeyGenParams
  1050. --------------------------------------------------------------------}
  1051. RsaHashedKeyGenParams = record
  1052. modulusLength : Integer;
  1053. publicExponent : BigInteger;
  1054. hash : AlgorithmIdentifier;
  1055. end;
  1056. { --------------------------------------------------------------------
  1057. RsaOaepParams
  1058. --------------------------------------------------------------------}
  1059. RsaOaepParams = record
  1060. label_ : TJSBufferSource;external name 'label';
  1061. end;
  1062. { --------------------------------------------------------------------
  1063. RsaPssParams
  1064. --------------------------------------------------------------------}
  1065. RsaPssParams = record
  1066. saltLength : Integer;
  1067. end;
  1068. { --------------------------------------------------------------------
  1069. DhKeyGenParams
  1070. --------------------------------------------------------------------}
  1071. DhKeyGenParams = record
  1072. prime : BigInteger;
  1073. generator : BigInteger;
  1074. end;
  1075. { --------------------------------------------------------------------
  1076. EcKeyGenParams
  1077. --------------------------------------------------------------------}
  1078. EcKeyGenParams = record
  1079. _namedCurve : NamedCurve;external name 'namedCurve';
  1080. end;
  1081. { --------------------------------------------------------------------
  1082. AesDerivedKeyParams
  1083. --------------------------------------------------------------------}
  1084. AesDerivedKeyParams = record
  1085. length_ : Integer;external name 'length';
  1086. end;
  1087. { --------------------------------------------------------------------
  1088. HmacDerivedKeyParams
  1089. --------------------------------------------------------------------}
  1090. HmacDerivedKeyParams = record
  1091. length_ : Integer;external name 'length';
  1092. end;
  1093. { --------------------------------------------------------------------
  1094. EcdhKeyDeriveParams
  1095. --------------------------------------------------------------------}
  1096. EcdhKeyDeriveParams = record
  1097. public_ : TJSCryptoKey; external name 'public';
  1098. end;
  1099. { --------------------------------------------------------------------
  1100. DhKeyDeriveParams
  1101. --------------------------------------------------------------------}
  1102. DhKeyDeriveParams = record
  1103. public_ : TJSCryptoKey; external name 'public';
  1104. end;
  1105. { --------------------------------------------------------------------
  1106. DhImportKeyParams
  1107. --------------------------------------------------------------------}
  1108. DhImportKeyParams = record
  1109. prime : BigInteger;
  1110. generator : BigInteger;
  1111. end;
  1112. { --------------------------------------------------------------------
  1113. EcdsaParams
  1114. --------------------------------------------------------------------}
  1115. EcdsaParams = record
  1116. hash : AlgorithmIdentifier;
  1117. end;
  1118. { --------------------------------------------------------------------
  1119. EcKeyImportParams
  1120. --------------------------------------------------------------------}
  1121. EcKeyImportParams = record
  1122. _namedCurve : NamedCurve;external name 'namedCurve';
  1123. end;
  1124. { --------------------------------------------------------------------
  1125. HkdfParams
  1126. --------------------------------------------------------------------}
  1127. HkdfParams = record
  1128. hash : AlgorithmIdentifier;
  1129. salt : TJSBufferSource;
  1130. info : TJSBufferSource;
  1131. end;
  1132. { --------------------------------------------------------------------
  1133. RsaOtherPrimesInfo
  1134. --------------------------------------------------------------------}
  1135. RsaOtherPrimesInfo = record
  1136. r : String;
  1137. d : String;
  1138. t : String;
  1139. end;
  1140. { --------------------------------------------------------------------
  1141. JsonWebKey
  1142. --------------------------------------------------------------------}
  1143. TRsaOtherPrimesInfoDynArray = Array of RsaOtherPrimesInfo;
  1144. JsonWebKey = record
  1145. kty : String;
  1146. use : String;
  1147. key_ops : TStringDynArray;
  1148. alg : String;
  1149. ext : boolean;
  1150. crv : String;
  1151. x : String;
  1152. y : String;
  1153. d : String;
  1154. n : String;
  1155. e : String;
  1156. p : String;
  1157. q : String;
  1158. dp : String;
  1159. dq : String;
  1160. qi : String;
  1161. oth : TRsaOtherPrimesInfoDynArray;
  1162. k : String;
  1163. end;
  1164. { --------------------------------------------------------------------
  1165. CryptoKeyPair
  1166. --------------------------------------------------------------------}
  1167. CryptoKeyPair = record
  1168. publicKey : TJSCryptoKey;
  1169. privateKey : TJSCryptoKey;
  1170. end;
  1171. { --------------------------------------------------------------------
  1172. TJSCryptoKey
  1173. --------------------------------------------------------------------}
  1174. TKeyUsageDynArray = Array of KeyUsage;
  1175. TJSCryptoKey = class external name 'CryptoKey'
  1176. Private
  1177. Ftype_ : KeyType; external name 'type';
  1178. Fextractable : boolean; external name 'extractable';
  1179. Falgorithm : TJSObject; external name 'algorithm';
  1180. Fusages : TKeyUsageDynArray; external name 'usages';
  1181. Public
  1182. Property type_ : KeyType Read Ftype_;
  1183. Property extractable : boolean Read Fextractable;
  1184. Property algorithm : TJSObject Read Falgorithm;
  1185. Property usages : TKeyUsageDynArray Read Fusages;
  1186. end;
  1187. { --------------------------------------------------------------------
  1188. TJSSubtleCrypto
  1189. --------------------------------------------------------------------}
  1190. TJSSubtleCrypto = class external name 'SubtleCrypto'
  1191. Private
  1192. Public
  1193. function encrypt(algorithm : AlgorithmIdentifier; key : TJSCryptoKey; data : TJSBufferSource): TJSPromise;
  1194. function decrypt(algorithm : AlgorithmIdentifier; key : TJSCryptoKey; data : TJSBufferSource): TJSPromise;
  1195. function sign(algorithm : AlgorithmIdentifier; key : TJSCryptoKey; data : TJSBufferSource): TJSPromise;
  1196. function verify(algorithm : AlgorithmIdentifier; key : TJSCryptoKey; signature : TJSBufferSource; data : TJSBufferSource): TJSPromise;
  1197. function digest(algorithm : AlgorithmIdentifier; data : TJSBufferSource): TJSPromise;
  1198. function generateKey(algorithm : AlgorithmIdentifier; extractable : boolean; keyUsages : TKeyUsageDynArray): TJSPromise;
  1199. function deriveKey(algorithm : AlgorithmIdentifier; baseKey : TJSCryptoKey; derivedKeyType : AlgorithmIdentifier; extractable : boolean; keyUsages : TKeyUsageDynArray): TJSPromise;
  1200. function deriveBits(algorithm : AlgorithmIdentifier; baseKey : TJSCryptoKey; length_ : NativeInt): TJSPromise;
  1201. function importKey(format : KeyFormat; keyData : TJSObject; algorithm : AlgorithmIdentifier; extractable : boolean; keyUsages : TKeyUsageDynArray): TJSPromise;
  1202. function exportKey(format : KeyFormat; key : TJSCryptoKey): TJSPromise;
  1203. function wrapKey(format : KeyFormat; key : TJSCryptoKey; wrappingKey : TJSCryptoKey; wrapAlgorithm : AlgorithmIdentifier): TJSPromise;
  1204. function unwrapKey(format : KeyFormat; wrappedKey : TJSBufferSource; unwrappingKey : TJSCryptoKey; unwrapAlgorithm : AlgorithmIdentifier; unwrappedKeyAlgorithm : AlgorithmIdentifier; extractable : boolean; keyUsages : TKeyUsageDynArray): TJSPromise;
  1205. end;
  1206. { TJSCrypto }
  1207. TJSCrypto = class external name 'Crypto' (TJSObject)
  1208. private
  1209. Fsubtle: TJSSubtleCrypto; external name 'subtle';
  1210. Public
  1211. procedure getRandomValues (anArray : TJSTypedArray);
  1212. property subtle : TJSSubtleCrypto Read Fsubtle;
  1213. end;
  1214. { TJSHistory }
  1215. TJSHistory = class external name 'History' (TJSObject)
  1216. private
  1217. FLength: NativeInt; external name 'length';
  1218. {$IFDEF FIREFOX}
  1219. FState : JSValue; external name 'state';
  1220. {$ENDIF}
  1221. Public
  1222. procedure back;
  1223. procedure forward;
  1224. procedure go(aIndex : NativeInt);
  1225. procedure go;
  1226. procedure pushState(aState : jsValue; aTitle : String; AURL : String);
  1227. procedure pushState(aState : jsValue; aTitle : String);
  1228. procedure replaceState(aState : jsValue; aTitle : String; AURL : String);
  1229. procedure replaceState(aState : jsValue; aTitle : String);
  1230. procedure replaceState(aState : jsValue);
  1231. {$IFDEF FIREFOX}
  1232. property state : JSValue read FState;
  1233. {$ENDIF}
  1234. property length: NativeInt read FLength;
  1235. end;
  1236. TJSIDBTransactionMode = class
  1237. const
  1238. readonly = 'readonly';
  1239. readwrite = 'readwrite';
  1240. versionchange = 'versionchange';
  1241. end;
  1242. { TJSIDBTransaction }
  1243. TJSIDBTransaction = class external name 'IDBTransaction' (TJSEventTarget)
  1244. private
  1245. FDB : TIDBDatabase; external name 'db';
  1246. FError: JSValue; external name 'error';
  1247. FMode: String; external name 'mode';
  1248. FObjectStoreNames: TStringDynArray; external name 'objectStoreNames';
  1249. public
  1250. procedure abort;
  1251. function objectStore(aName : String) : TJSIDBObjectStore;
  1252. property db : TIDBDatabase read FDB;
  1253. property mode : String read FMode;
  1254. property objectStoreNames : TStringDynArray read FObjectStoreNames;
  1255. property error : JSValue read FError;
  1256. end;
  1257. { TJSIDBKeyRange }
  1258. TJSIDBKeyRange = class external name 'IDBKeyRange' (TJSObject)
  1259. private
  1260. FLower: JSValue;
  1261. FLowerOpen: Boolean;
  1262. FUpper: JSValue;
  1263. FUpperOpen: Boolean;
  1264. Public
  1265. Class Function bound(aLower,aUpper : JSValue) : TJSIDBKeyRange; overload;
  1266. Class Function bound(aLower,aUpper : JSValue; aLowerOpen : Boolean) : TJSIDBKeyRange; overload;
  1267. Class Function bound(aLower,aUpper : JSValue; aLowerOpen,aUpperOpen : Boolean) : TJSIDBKeyRange; overload;
  1268. Class Function lowerBound(aLower : JSValue) : TJSIDBKeyRange; overload;
  1269. Class Function lowerBound(aLower : JSValue; aOpen: Boolean) : TJSIDBKeyRange; overload;
  1270. Class Function only(aValue : JSValue) : TJSIDBKeyRange;
  1271. Class Function upperBound(aUpper : JSValue) : TJSIDBKeyRange; overload;
  1272. Class Function upperBound(aUpper : JSValue; aOpen: Boolean) : TJSIDBKeyRange; overload;
  1273. function includes (aValue : JSValue) : Boolean;
  1274. property lower : JSValue read FLower;
  1275. property lowerOpen : Boolean read FLowerOpen;
  1276. property upper : JSValue read FUpper;
  1277. property upperOpen : Boolean read FUpperOpen;
  1278. end;
  1279. TJSIDBIndexParameters = record
  1280. unique : boolean;
  1281. multiEntry : boolean;
  1282. locale : string;
  1283. end;
  1284. { TJSIDBIndex }
  1285. TJSIDBIndex = class external name 'IDBIndex' (TJSObject)
  1286. private
  1287. FKeyPath: JSValue; external name 'keyPath';
  1288. FMultiEntry: Boolean; external name 'multiEntry';
  1289. FObjectStore: TJSIDBObjectStore; external name 'objectStore';
  1290. FUnique: boolean; external name 'unique';
  1291. public
  1292. name : string;
  1293. function count : TJSIDBRequest;
  1294. function get(aKey : jsValue) : TJSIDBRequest; overload;
  1295. function get(aKey : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1296. function getAll(aKey : jsValue) : TJSIDBRequest; overload;
  1297. function getAll(aKey : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1298. function getAll(aKey : jsValue; ACount : NativeInt) : TJSIDBRequest; overload;
  1299. function getAll(aKey : TJSIDBKeyRange; ACount : NativeInt) : TJSIDBRequest; overload;
  1300. function getAllKeys(aKey : jsValue) : TJSIDBRequest; overload;
  1301. function getAllKeys(aKey : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1302. function getAllKeys(aKey : jsValue; ACount : NativeInt) : TJSIDBRequest; overload;
  1303. function getAllKeys(aKey : TJSIDBKeyRange; ACount : NativeInt) : TJSIDBRequest; overload;
  1304. function getKey(aKey : jsValue) : TJSIDBRequest;
  1305. function openCursor : TJSIDBRequest; overload;
  1306. function openCursor(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1307. function openCursor(aKeyRange : TJSIDBKeyRange; ADirection : String) : TJSIDBRequest;overload;
  1308. function openKeyCursor : TJSIDBRequest;overload;
  1309. function openKeyCursor(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest;overload;
  1310. function openKeyCursor(aKeyRange : TJSIDBKeyRange; ADirection : String) : TJSIDBRequest;overload;
  1311. Property keyPath : JSValue Read FKeyPath;
  1312. property multiEntry : Boolean read FMultiEntry;
  1313. property objectStore : TJSIDBObjectStore read FObjectStore;
  1314. property unique : boolean read FUnique;
  1315. end;
  1316. TJSIDBCursorDirection = class external name 'IDBCursorDirection' (TJSObject)
  1317. Const
  1318. next = 'next';
  1319. nextUnique = 'nextUnique';
  1320. prev = 'prev';
  1321. prevUnique = 'prevUnique';
  1322. end;
  1323. { TJSIDBCursor }
  1324. TJSIDBCursor = class external name 'IDBCursor' (TJSObject)
  1325. private
  1326. FDirection: string; external name 'direction';
  1327. FKey: JSValue; external name 'key';
  1328. FValue : JSValue; external name 'value';
  1329. FPrimaryKey: JSValue; external name 'primaryKey';
  1330. FSource: JSValue; external name 'source';
  1331. FSourceAsIndex: TJSIDBIndex; external name 'source';
  1332. FSourceAsStore: TJSIDBObjectStore; external name 'source';
  1333. Public
  1334. procedure advance(aCount : NativeInt); overload;
  1335. procedure advance(aKey : JSValue); overload;
  1336. procedure continue(aKey : JSValue); overload;
  1337. procedure continue; overload;
  1338. procedure continuePrimaryKey(aKey : JSValue); overload;
  1339. procedure continuePrimaryKey(aKey,aPrimaryKey : JSValue); overload;
  1340. procedure delete;
  1341. procedure update(aValue : JSValue);
  1342. property source : JSValue read FSource;
  1343. property sourceAsStore : TJSIDBObjectStore read FSourceAsStore;
  1344. property sourceAsIndex : TJSIDBIndex read FSourceAsIndex;
  1345. property key : JSValue read FKey;
  1346. Property Value : JSValue Read FValue;
  1347. property primaryKey : JSValue read FPrimaryKey;
  1348. property direction : string read FDirection;
  1349. end;
  1350. TJSIDBObjectStore = class external name 'IDBObjectStore' (TJSEventTarget)
  1351. public
  1352. function add(aValue : JSValue; aKey : String) : TJSIDBRequest;
  1353. function add(aValue : JSValue) : TJSIDBRequest;
  1354. function clear : TJSIDBRequest;
  1355. function delete(aKey : string) : TJSIDBRequest;
  1356. function delete(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest;
  1357. function get(aKey : string) : TJSIDBRequest; overload;
  1358. function get(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1359. function getKey(aKey : string) : TJSIDBRequest; overload;
  1360. function getKey(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1361. function getAll : TJSIDBRequest; overload;
  1362. function getAll(aKey : String) : TJSIDBRequest; overload;
  1363. function getAll(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1364. function getAll(aKey : String; aCount: NativeInt) : TJSIDBRequest; overload;
  1365. function getAll(aKeyRange : TJSIDBKeyRange; aCount: NativeInt) : TJSIDBRequest; overload;
  1366. function getAllKeys(aKey : String) : TJSIDBRequest; overload;
  1367. function getAllKeys(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1368. function getAllKeys(aKey : String; aCount: NativeInt) : TJSIDBRequest; overload;
  1369. function getAllKeys(aKeyRange : TJSIDBKeyRange; aCount: NativeInt) : TJSIDBRequest; overload;
  1370. function createIndex (aIndexName : String; KeyPath : String) : TJSIDBIndex; overload;
  1371. function createIndex (aIndexName : String; KeyPath : String; Options : TJSIDBIndexParameters) : TJSIDBIndex; overload;
  1372. function createIndex (aIndexName : String; KeyPath : Array of String) : TJSIDBIndex; overload;
  1373. function createIndex (aIndexName : String; KeyPath : Array of String; Options : TJSIDBIndexParameters) : TJSIDBIndex; overload;
  1374. Procedure deleteIndex (aIndexName : String);
  1375. function index (aIndexName : String) : TJSIDBIndex;
  1376. function put(aValue : JSValue; aKey : String) : TJSIDBRequest; overload;
  1377. function put(aValue : JSValue) : TJSIDBRequest; overload;
  1378. function openCursor : TJSIDBRequest; overload;
  1379. function openCursor(aKey : String) : TJSIDBRequest; overload;
  1380. function openCursor(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1381. function openCursor(aKey : String; aDirection : string) : TJSIDBRequest; overload;
  1382. function openCursor(aKeyRange : TJSIDBKeyRange; aDirection : string) : TJSIDBRequest; overload;
  1383. function openKeyCursor : TJSIDBRequest; overload;
  1384. function openKeyCursor(aKey : String) : TJSIDBRequest; overload;
  1385. function openKeyCursor(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1386. function openKeyCursor(aKey : String; aDirection : string) : TJSIDBRequest; overload;
  1387. function openKeyCursor(aKeyRange : TJSIDBKeyRange; aDirection : string) : TJSIDBRequest; overload;
  1388. function count : TJSIDBRequest; overload;
  1389. function count(aKey : String) : TJSIDBRequest; overload;
  1390. function count(aKeyRange : TJSIDBKeyRange) : TJSIDBRequest; overload;
  1391. property Indexes [aIndexName : String] : TJSIDBIndex read index;
  1392. end;
  1393. { TJSIDBRequest }
  1394. TJSIDBRequest = class external name 'IDBRequest' (TJSEventTarget)
  1395. private
  1396. Ferror : JSValue; external name 'error'; // standards are not quite clear on this one
  1397. FReadyState: string; external name 'readyState';
  1398. FResult: JSValue; external name 'result';
  1399. FResultDatabase: TIDBDatabase; external name 'result';
  1400. FResultIndex: TJSIDBIndex; external name 'result';
  1401. FResultObjectStore : TJSIDBObjectStore; external name 'result';
  1402. FResultCursor : TJSIDBCursor; external name 'result';
  1403. FSourceDatabase: TIDBDatabase; external name 'source';
  1404. FSourceIndex: TJSIDBIndex; external name 'source';
  1405. FSourceObjectStore : TJSIDBObjectStore; external name 'source';
  1406. FSourceCursor : TJSIDBCursor; external name 'source';
  1407. FSource: JSValue; external name 'source';
  1408. FTransaction: TJSIDBTransaction; external name 'transaction';
  1409. Public
  1410. onerror : TJSEventHandler;
  1411. onsuccess : TJSEventHandler;
  1412. Property error : JSValue read FError;
  1413. property readyState : string read FReadyState;
  1414. property result : JSValue read FResult;
  1415. property resultAsObjectStore : TJSIDBObjectStore read FResultObjectStore;
  1416. property resultAsCursor : TJSIDBCursor read FResultCursor;
  1417. property resultAsIndex : TJSIDBIndex read FResultIndex;
  1418. property resultAsDatabase : TIDBDatabase read FResultDatabase;
  1419. property source : JSValue read FSource;
  1420. property sourceAsObjectStore : TJSIDBObjectStore read FSourceObjectStore;
  1421. property sourceAsCursor : TJSIDBCursor read FSourceCursor;
  1422. property sourceAsIndex : TJSIDBIndex read FSourceIndex;
  1423. property sourceAsDatabase : TIDBDatabase read FSourceDatabase;
  1424. property transaction : TJSIDBTransaction read FTransaction;
  1425. end;
  1426. TJSIDBOpenDBRequest = class external name 'IDBOpenDBRequest' (TJSIDBRequest)
  1427. Public
  1428. onblocked : TJSEventHandler;
  1429. onupgradeneeded : TJSEventHandler;
  1430. end;
  1431. TJSCreateObjectStoreOptions = record
  1432. keyPath : jsValue;
  1433. autoIncrement : boolean;
  1434. end;
  1435. { TIDBDatabase }
  1436. TIDBDatabase = class external name 'IDBDatabase' (TJSEventTarget)
  1437. private
  1438. FName: string; external name 'name';
  1439. FobjectStoreNames: TStringDynArray; external name 'objectStoreNames';
  1440. FVersion: integer; external name 'version';
  1441. public
  1442. procedure close;
  1443. function createObjectStore(aName : string) : TJSIDBObjectStore; overload;
  1444. function createObjectStore(aName : string; Options: TJSCreateObjectStoreOptions) : TJSIDBObjectStore; overload;
  1445. procedure deleteObjectStore(aName : string);
  1446. function transaction(aStoreNames : array of string) : TJSIDBTransaction; overload;
  1447. function transaction(aStoreNames : array of string; aMode : string) : TJSIDBTransaction; overload;
  1448. property name : string read FName;
  1449. property version : integer read FVersion;
  1450. property objectStoreNames : TStringDynArray read FobjectStoreNames;
  1451. end;
  1452. TJSIDBFactory = class external name 'IDBFactory' (TJSEventTarget)
  1453. public
  1454. function open(aName : string) : TJSIDBOpenDBRequest;
  1455. function open(aName : string; aVersion : Integer) : TJSIDBOpenDBRequest;
  1456. function deleteDatabase(aName : string) : TJSIDBOpenDBRequest;
  1457. function cmp (a,b : jsValue) : NativeInt;
  1458. end;
  1459. { TJSStorage }
  1460. TJSStorage = class external name 'Storage' (TJSEventTarget)
  1461. private
  1462. FLength: NativeInt; external name 'length';
  1463. public
  1464. function key(aIndex : Integer) : String;
  1465. function getItem(aKeyName : string) : string;
  1466. procedure setItem(aKeyName : string; aValue : string);
  1467. procedure removeItem(aKeyName : string);
  1468. procedure clear;
  1469. property Keys[AIndex : Integer] : String read key;
  1470. property Items[aKeyName: String] : String read getItem write setItem; default;
  1471. property length : NativeInt Read FLength;
  1472. end;
  1473. // Fake object, used for objects whose visible can be checked
  1474. TJSVisibleItem = class external name 'IVisible' (TJSObject)
  1475. Private
  1476. FVisible : boolean; external name 'visible';
  1477. Public
  1478. Property visible : boolean read FVisible;
  1479. end;
  1480. TJSLocationBar = class external name 'LocationBar' (TJSVisibleItem);
  1481. TJSMenuBar = class external name 'MenuBar' (TJSVisibleItem);
  1482. TJSToolBar = class external name 'ToolBar' (TJSVisibleItem);
  1483. TJSPersonalBar = class external name 'PersonalBar' (TJSVisibleItem);
  1484. TJSScrollBars = class external name 'ScrollBars' (TJSVisibleItem);
  1485. TJSPositionError = record
  1486. code : integer;
  1487. message : string;
  1488. end;
  1489. TJSPositionOptions = record
  1490. enableHighAccuracy : boolean;
  1491. timeout : integer;
  1492. maximumAge : integer;
  1493. end;
  1494. TJSCoordinates = record
  1495. latitude : double;
  1496. longitude : double;
  1497. altitude : double;
  1498. accuracy : double;
  1499. altitudeAccuracy : double;
  1500. heading : double;
  1501. speed : double;
  1502. end;
  1503. TJSPosition = record
  1504. coords : TJSCoordinates;
  1505. timestamp : String;
  1506. end;
  1507. TJSGeoLocationCallback = procedure (aPosition : TJSPosition);
  1508. TJSGeoLocationEvent = procedure (aPosition : TJSPosition) of object;
  1509. TJSGeoLocationErrorCallback = procedure (aValue : TJSPositionError);
  1510. TJSGeoLocationErrorEvent = procedure (aValue : TJSPositionError) of object;
  1511. TJSGeoLocation = class external name 'GeoLocation' (TJSObject)
  1512. Public
  1513. Procedure getCurrentPosition(ASuccess : TJSGeoLocationCallback); overload;
  1514. Procedure getCurrentPosition(ASuccess : TJSGeoLocationCallback;aError : TJSGeoLocationErrorCallback); overload;
  1515. Procedure getCurrentPosition(ASuccess : TJSGeoLocationCallback;aError : TJSGeoLocationErrorCallback; AOptions : TJSPositionOptions); overload;
  1516. Function watchPosition(ASuccess : TJSGeoLocationCallback) : NativeInt; overload;
  1517. Function watchPosition(ASuccess : TJSGeoLocationCallback;aError : TJSGeoLocationErrorCallback) : NativeInt; overload;
  1518. Function watchPosition(ASuccess : TJSGeoLocationCallback;aError : TJSGeoLocationErrorCallback; AOptions : TJSPositionOptions) : NativeInt; overload;
  1519. procedure clearWatch(AID : NativeInt);
  1520. end;
  1521. TJSMediaStreamTrack = class external name 'MediaStreamTrack' (TJSEventTarget)
  1522. end;
  1523. TJSMediaDevices = class external name 'MediaDevices' (TJSEventTarget)
  1524. end;
  1525. TJSWorker = class external name 'Worker' (TJSEventTarget)
  1526. public
  1527. constructor new(aURL : string);
  1528. procedure postMessage(aValue : JSValue);
  1529. procedure postMessage(aValue : JSValue; aList : TJSValueDynArray);
  1530. end;
  1531. TJSMessagePort = class external name 'MessagePort' (TJSEventTarget)
  1532. Public
  1533. procedure close;
  1534. procedure postMessage(aValue : JSValue);
  1535. procedure postMessage(aValue : JSValue; aList : TJSValueDynArray);
  1536. procedure start;
  1537. end;
  1538. { TJSSharedWorker }
  1539. TJSSharedWorker = class external name 'SharedWorker' (TJSEventTarget)
  1540. private
  1541. FPort: TJSMessagePort; external name 'port';
  1542. Public
  1543. constructor new(aURL : String); overload;
  1544. constructor new(aURL : String; aName : string); overload;
  1545. property port : TJSMessagePort Read FPort;
  1546. end;
  1547. { TJSServiceWorker }
  1548. TJSServiceWorker = class external name 'ServiceWorker' (TJSWorker)
  1549. private
  1550. FscriptURL: String; external name 'scriptURL';
  1551. FState: string; external name 'state';
  1552. Public
  1553. property state : string read FState;
  1554. property scriptURL : String Read FscriptURL;
  1555. end;
  1556. { TJSServiceWorkerRegistration }
  1557. TJSServiceWorkerRegistration = class external name 'ServiceWorkerRegistration' (TJSObject)
  1558. private
  1559. FActive: TJSServiceWorker; external name 'active';
  1560. FInstalling: TJSServiceWorker; external name 'installing';
  1561. FScope: string; external name 'scope';
  1562. FWaiting: TJSServiceWorker; external name 'waiting';
  1563. public
  1564. function unregister : TJSPromise;
  1565. procedure update;
  1566. property active : TJSServiceWorker read FActive;
  1567. property scope : string read FScope;
  1568. property waiting : TJSServiceWorker read FWaiting;
  1569. property installing : TJSServiceWorker read FInstalling;
  1570. end;
  1571. TJSServiceWorkerContainerOptions = record
  1572. scope : string;
  1573. end;
  1574. { TJSServiceWorkerContainer }
  1575. TJSServiceWorkerContainer = class external name 'ServiceWorkerContainer' (TJSObject)
  1576. private
  1577. FController: TJSServiceWorker; external name 'controller';
  1578. FReady: TJSPromise; external name 'ready';
  1579. Public
  1580. function register(aURL : String) : TJSPromise; overload;
  1581. function register(aURL : String; aOptions : TJSServiceWorkerContainerOptions) : TJSPromise; overload;
  1582. function getRegistration(aURL : String) : TJSPromise; overload;
  1583. function getRegistration : TJSPromise; overload;
  1584. function getRegistrations : TJSPromise;
  1585. property controller : TJSServiceWorker read FController;
  1586. property ready : TJSPromise read FReady;
  1587. end;
  1588. TJSClipboardItemOptions = Class external name 'Object' (TJSObject)
  1589. presentationStyle : String;
  1590. end;
  1591. TJSClipBoardItem = Class external name 'ClipboardItem' (TJSObject)
  1592. constructor new(aData : TJSObject; aOptions : TJSOBject); overload;
  1593. constructor new(aData : TJSObject; aOptions : TJSClipboardItemOptions); overload;
  1594. constructor new(aData : TJSObject); overload;
  1595. end;
  1596. TJSClipBoard = class external name 'Clipboard' (TJSEventTarget)
  1597. Function read : TJSPromise;
  1598. Function readText : TJSPromise;
  1599. Function write(Data : Array of TJSClipBoardItem) : TJSPromise;
  1600. Function writeText(aText : String) : TJSPromise;
  1601. end;
  1602. { TJSNavigator }
  1603. TJSNavigator = class external name 'Navigator' (TJSObject)
  1604. {$IFDEF FIREFOX}
  1605. FbuildID : String ; external name 'buildID';
  1606. FOSCPU : String ; external name 'oscpu';
  1607. FproductSub : string; external name 'productSub';
  1608. FVendor : string; external name 'vendor';
  1609. {$ENDIF}
  1610. private
  1611. FCookieEnabled: Boolean; external name 'cookieEnabled';
  1612. FGeoLocation: TJSGeoLocation; external name 'geolocation';
  1613. FLanguage: String; external name 'language';
  1614. FMaxTouchPoints: NativeInt; external name 'maxTouchPoints';
  1615. FMediaDevices: TJSMediaDevices; external name 'mediaDevices';
  1616. FOnline: boolean; external name 'onLine';
  1617. FPlatform: string; external name 'platform';
  1618. FServiceWorker: TJSServiceWorkerContainer; external name 'serviceWorker';
  1619. FUserAgent: string; external name 'userAgent';
  1620. fClipBoard : TJSClipBoard; external name 'clipboard';
  1621. FPermissions: TJSPermissions; external name 'permissions';
  1622. public
  1623. function getBattery : TJSPromise;
  1624. function requestMediaKeySystemAccess(aKeySystem : String; supportedConfigurations : TJSValueDynArray) : TJSPromise;
  1625. Procedure registerContentHandler(aMimeType,aURI,aTitle : string);
  1626. Procedure registerProtocolHandler(aProtocol,aURI,aTitle : string);
  1627. Procedure vibrate(aPattern : NativeInt);
  1628. Procedure vibrate(aPattern : Array of NativeInt);
  1629. {$IFDEF FIREFOX}
  1630. property buildID : String read FBuildID;
  1631. property oscpu : string read FOSCPU;
  1632. property productSub: string read FproductSub;
  1633. property vendor : string read Fvendor;
  1634. {$ENDIF}
  1635. property cookieEnabled : Boolean read FCookieEnabled;
  1636. property geoLocation : TJSGeoLocation Read FGeoLocation;
  1637. property language : String read FLanguage;
  1638. property maxTouchPoints : NativeInt read FMaxTouchPoints;
  1639. property mediaDevices : TJSMediaDevices read FMediaDevices;
  1640. property onLine : boolean read FOnline;
  1641. property platform : string read FPlatform;
  1642. property userAgent : string read FUserAgent;
  1643. property serviceWorker : TJSServiceWorkerContainer read FServiceWorker;
  1644. property ClipBoard : TJSClipBoard Read FCLipboard;
  1645. property permissions: TJSPermissions read FPermissions;
  1646. end;
  1647. { TJSTouchEvent }
  1648. TTouchCoord = longint;
  1649. TJSTouch = class external name 'Touch' (TJSObject)
  1650. private
  1651. FClientX: TTouchCoord; external name 'clientX';
  1652. FClientY: TTouchCoord; external name 'clientY';
  1653. FIDentifier: longint; external name 'identifier';
  1654. FPageX: TTouchCoord; external name 'pageX';
  1655. FPageY: TTouchCoord; external name 'pageY';
  1656. FScreenX: TTouchCoord; external name 'screenX';
  1657. FScreenY: TTouchCoord; external name 'screenY';
  1658. FTarget: TJSElement; external name 'target';
  1659. Public
  1660. Property identifier : longint read FIDentifier;
  1661. Property ScreenX : TTouchCoord Read FScreenX;
  1662. Property ScreenY : TTouchCoord Read FScreenY;
  1663. Property ClientX : TTouchCoord Read FClientX;
  1664. Property ClientY : TTouchCoord Read FClientY;
  1665. Property PageX : TTouchCoord Read FPageX;
  1666. Property PageY : TTouchCoord Read FPageY;
  1667. Property Target : TJSElement Read FTarget;
  1668. end;
  1669. { TJSTouchList }
  1670. TJSTouchList = class external name 'TouchList' (TJSObject)
  1671. private
  1672. FLength: NativeInt; external name 'length';
  1673. Public
  1674. function item (aIndex : Integer) : TJSTouch;
  1675. property length : NativeInt Read FLength;
  1676. Property Touches[AIndex : Integer] : TJSTouch Read item; default;
  1677. end;
  1678. TJSPerformance = class external name 'Performance' (TJSObject);
  1679. TJSScreen = class external name 'Screen' (TJSObject)
  1680. private
  1681. FavailHeight: Integer; external name 'availHeight';
  1682. FavailWidth: Integer; external name 'availWidth';
  1683. FcolorDepth: Integer; external name 'colorDepth';
  1684. FPixelDepth: Integer; external name 'pixelDepth';
  1685. Fheight: Integer; external name 'height';
  1686. Fwidth: Integer; external name 'width';
  1687. public
  1688. { Properties declarations }
  1689. property availHeight: Integer read FavailHeight;
  1690. property availWidth: Integer read FavailWidth;
  1691. property colorDepth: Integer read FcolorDepth;
  1692. property pixelDepth: Integer read FPixelDepth;
  1693. property height: Integer read Fheight;
  1694. property width: Integer read Fwidth;
  1695. end;
  1696. TJSParamEnumCallBack = reference to procedure (const aKey,aValue : string);
  1697. TJSURLSearchParams = class external name 'URLSearchParams' (TJSObject)
  1698. Public
  1699. constructor new(aQuery : String);
  1700. Procedure append(const aName,aValue : string);
  1701. Procedure delete(const aName : string);
  1702. Function entries : TJSIterator;
  1703. Procedure foreach(aEnumCallBack : TJSParamEnumCallBack);
  1704. function get(const aName : string) : JSValue;
  1705. // If you're sure the value exists...
  1706. function getString(const aName : string) : string; external name 'get';
  1707. function getAll(const aName : string) : TStringDynArray;
  1708. function has(const aName : string) : Boolean;
  1709. Function keys : TJSIterator; reintroduce;
  1710. Procedure set_(const aName,aValue : string); external name 'set';
  1711. Procedure sort;
  1712. Function values : TJSIterator; reintroduce;
  1713. end;
  1714. TJSURL = class external name 'URL' (TJSObject)
  1715. Private
  1716. FOrigin : String; external name 'origin';
  1717. FSearchParams : TJSURLSearchParams; external name 'searchParams';
  1718. public
  1719. hash : string;
  1720. host : string;
  1721. hostname : string;
  1722. href : string;
  1723. password : string;
  1724. pathname : string;
  1725. port : string;
  1726. protocol : string;
  1727. search : string;
  1728. username : string;
  1729. constructor new(aURL : String);
  1730. constructor new(aURL,aBase : String);
  1731. class function createObjectURL(const v: JSValue): string;
  1732. class function revokeObjectURL(const S : String): string;
  1733. function toJSON : String;
  1734. Property Origin : String Read FOrigin;
  1735. property SearchParams : TJSURLSearchParams read FSearchParams;
  1736. end;
  1737. TJSTimerCallBack = reference to procedure; safecall;
  1738. Theader = Array [0..1] of String;
  1739. THeaderArray = Array of Theader;
  1740. TJSHTMLHeaders = Class external name 'Headers' (TJSObject)
  1741. Public
  1742. constructor new(values : THeaderArray); overload;
  1743. procedure append(aName, aValue : String);
  1744. procedure delete(aName : String);
  1745. function entries : TJSIterator;
  1746. Function get(aName: String): string;
  1747. Function has(aName: String): Boolean;
  1748. function keys : TJSIterator; reintroduce;
  1749. function values : TJSIterator; reintroduce;
  1750. procedure set_(aName, aValue : String);
  1751. Property Headers[aName : string] : string Read Get Write Set_;
  1752. end;
  1753. { TJSMediaQueryList }
  1754. TJSMediaQueryList = class external name 'MediaQueryList' (TJSObject)
  1755. private
  1756. FMatches: Boolean; external name 'matches';
  1757. FMedia: String; external name 'media';
  1758. Public
  1759. Property matches : Boolean Read FMatches;
  1760. Property media : String Read FMedia;
  1761. end;
  1762. TJSReadableStream = class external name 'ReadableStream' (TJSObject)
  1763. private
  1764. flocked: Boolean; external name 'locked';
  1765. public
  1766. property locked: Boolean read flocked;
  1767. constructor new(underlyingSource: TJSObject);
  1768. constructor new(underlyingSource, queueingStrategy: TJSObject);
  1769. function cancel(reason: TJSDOMString): TJSPromise;
  1770. function getReader(): TJSObject; overload;
  1771. function getReader(mode: TJSObject): TJSObject; overload;
  1772. function pipeThrough(transformStream: TJSObject): TJSReadableStream; overload;
  1773. function pipeThrough(transformStream, options: TJSObject): TJSReadableStream; overload;
  1774. function pipeTo(destination: TJSObject): TJSPromise; overload;
  1775. function pipeTo(destination, options: TJSObject): TJSPromise; overload;
  1776. function tee(): TJSArray; // array containing two TJSReadableStream instances
  1777. end;
  1778. TJSWritableStream = class external name 'WritableStream' (TJSObject)
  1779. private
  1780. FLocked: Boolean; external name 'locked';
  1781. public
  1782. function abort(reason: String): TJSPromise;
  1783. function close: TJSPromise;
  1784. function getWriter: TJSObject;
  1785. property locked: Boolean read FLocked;
  1786. end;
  1787. TJSBody = class external name 'Body' (TJSObject)
  1788. private
  1789. fbody: TJSReadableStream; external name 'body';
  1790. fbodyUsed: Boolean; external name 'bodyUsed';
  1791. public
  1792. property body: TJSReadableStream read fbody;
  1793. property bodyUsed: Boolean read fbodyUsed;
  1794. function arrayBuffer(): TJSPromise; // resolves to TJSArrayBuffer
  1795. //function blob(): TJSPromise; // resolves to TJSBlob
  1796. function blob: TJSBlob; {$IFNDEF SkipAsync}async;{$ENDIF}
  1797. function json(): TJSPromise; // resolves to JSON / TJSValue
  1798. //function text(): TJSPromise; // resolves to USVString, always decoded using UTF-8
  1799. function text(): string; {$IFNDEF SkipAsync}async;{$ENDIF}
  1800. end;
  1801. TJSResponse = class external name 'Response' (TJSBody)
  1802. private
  1803. fheaders: TJSObject;external name 'headers';
  1804. fok: Boolean; external name 'ok';
  1805. fredirected: Boolean; external name 'redirected';
  1806. fstatus: NativeInt; external name 'status';
  1807. fstatusText: String; external name 'statusText';
  1808. ftype: String; external name 'type';
  1809. furl: String; external name 'url';
  1810. fuseFinalUrl: Boolean; external name 'useFinalUrl';
  1811. public
  1812. property headers: TJSObject read fheaders; //
  1813. property ok: Boolean read fok;
  1814. property redirected: Boolean read fredirected;
  1815. property status: NativeInt read fstatus;
  1816. property statusText: String read fstatusText; //
  1817. property type_: String read ftype; //
  1818. property url: String read furl; //
  1819. property useFinalUrl: Boolean read fuseFinalUrl write fuseFinalUrl;
  1820. constructor new(body: TJSObject; init: TJSObject); varargs; external name 'new';
  1821. function clone(): TJSResponse;
  1822. function error(): TJSResponse;
  1823. function redirect(url: String; Status: NativeInt): TJSResponse;
  1824. end;
  1825. TJSDOMHighResTimeStamp = Double;
  1826. TFrameRequestCallback = reference to procedure (aTime: TJSDOMHighResTimeStamp);
  1827. TJSPostMessageOptions = class external name 'Object' (TJSObject)
  1828. targetOrigin : string;
  1829. transfer : TJSValueDynArray;
  1830. end;
  1831. TJSIdleCallbackOptions = class
  1832. public
  1833. timeout: Cardinal;
  1834. end;
  1835. TJSIdleDeadline = class external name 'IdleDeadline'
  1836. private
  1837. FDidTimeout: Boolean; external name 'didTimeout';
  1838. public
  1839. function timeRemaining: TJSDOMHighResTimeStamp;
  1840. property didTimeout: Boolean read FDidTimeout;
  1841. end;
  1842. TIdleCallbackProc = reference to procedure(idleDeadline: TJSIdleDeadline);
  1843. TJSWindowArray = Array of TJSWindow;
  1844. { TJSWindow }
  1845. TJSWindow = class external name 'Window' (TJSObject)
  1846. Private
  1847. FClosed: boolean; external name 'closed';
  1848. FConsole : TJSConsole; external name 'console';
  1849. FCrypto: TJSCrypto; external name 'crypto';
  1850. FDevicePixelRatio: Double; external name 'devicePixelRatio';
  1851. FDocument: TJSDocument; external name 'document';
  1852. FFrameElement: TJSElement; external name 'frameElement';
  1853. FFrames: TJSWindowArray; external name 'frames';
  1854. FHistory: TJSHistory; external name 'history';
  1855. FIndexedDB: TJSIDBFactory; external name 'indexedDB';
  1856. FInnerheight: NativeInt; external name 'innerHeight';
  1857. FInnerWidth: NativeInt; external name 'innerWidth';
  1858. FLength: NativeInt; external name 'length';
  1859. FLocalStorage: TJSStorage; external name 'localStorage';
  1860. FLocation: TJSLocation; external name 'location';
  1861. FLocationBar: TJSLocationBar; external name 'locationbar';
  1862. FLocationString: string; external name 'location';
  1863. FMenuBar: TJSMenuBar; external name 'menubar';
  1864. FNavigator: TJSNavigator; external name 'navigator';
  1865. FOpener: TJSWindow; external name 'opener';
  1866. FOuterheight: NativeInt; external name 'outerHeight';
  1867. FOuterWidth: NativeInt; external name 'outerWidth';
  1868. FParent: TJSWindow; external name 'parent';
  1869. FPerformance: TJSPerformance; external name 'Performance';
  1870. FPersonalBar: TJSPersonalBar; external name 'personalbar';
  1871. FScreen: TJSScreen; external name 'screen';
  1872. FScreenX: NativeInt; external name 'screenX';
  1873. FScreenY: NativeInt; external name 'screenY';
  1874. FScrollbar: TJSScrollBars; external name 'scrollbar';
  1875. FScrollX: NativeInt; external name 'scrollX';
  1876. FScrollY: NativeInt; external name 'scrollY';
  1877. FSelf: TJSWindow; external name 'self';
  1878. FSessionStorage: TJSStorage; external name 'sessionStorage';
  1879. FToolBar: TJSToolBar; external name 'toolbar';
  1880. FTop: TJSWindow; external name 'top';
  1881. FURL: TJSURL; external name 'URL';
  1882. Public
  1883. fullSreen : Boolean;
  1884. name : string;
  1885. status : string;
  1886. onabort : TJSEventHandler;
  1887. onafterprint : TJSEventHandler;
  1888. onbeforeprint : TJSEventHandler;
  1889. onbeforeinstallprompt : TJSEventHandler;
  1890. onbeforeunloadprompt : TJSEventHandler;
  1891. onblur : TJSEventHandler;
  1892. onchange : TJSEventHandler;
  1893. onclick: THTMLClickEventHandler;
  1894. onclose : TJSEventHandler;
  1895. oncontextmenu : TJSEventHandler;
  1896. ondblclick : THTMLClickEventHandler;
  1897. onerror : TJSErrorEventHandler;
  1898. onfocus : TJSFocusEventhandler;
  1899. onhashchange : TJSHashChangeEventhandler;
  1900. oninput : TJSEventhandler;
  1901. onkeydown : TJSKeyEventhandler;
  1902. onkeypress : TJSKeyEventhandler;
  1903. onkeyup : TJSKeyEventhandler;
  1904. onlanguagechange : TJSEventhandler;
  1905. onload : TJSEventhandler;
  1906. onloadend : TJSLoadEventhandler;
  1907. onloadstart : TJSLoadEventhandler;
  1908. onmessage : TJSEventHandler;
  1909. onmousedown : TJSMouseEventHandler;
  1910. onmouseenter : TJSMouseEventHandler;
  1911. onmouseleave : TJSMouseEventHandler;
  1912. onmousemove : TJSMouseEventHandler;
  1913. onmouseout : TJSMouseEventHandler;
  1914. onmouseover : TJSMouseEventHandler;
  1915. onmouseup : TJSMouseEventHandler;
  1916. onmousewheel : TJSMouseEventHandler;
  1917. onoffline : TJSEventHandler;
  1918. ononline : TJSEventHandler;
  1919. onpagehide : TJSPageTransitionEventHandler;
  1920. onpageshow : TJSPageTransitionEventHandler;
  1921. onpaint : TJSEventHandler;
  1922. onpointercancel : TJSPointerEventHandler;
  1923. onpointerdown : TJSPointerEventHandler;
  1924. onpointerenter : TJSPointerEventHandler;
  1925. onpointerleave : TJSPointerEventHandler;
  1926. onpointermove : TJSPointerEventHandler;
  1927. onpointerout : TJSPointerEventHandler;
  1928. onpointerover : TJSPointerEventHandler;
  1929. onpointerup : TJSPointerEventHandler;
  1930. onpointerlockchange : TJSPointerEventHandler;
  1931. onprogress : TJSProgressEventhandler;
  1932. onpopstate : TJSPopStateEventHandler;
  1933. onreset : TJSUIEventHandler;
  1934. onresize : TJSUIEventHandler;
  1935. onscroll : TJSUIEventHandler;
  1936. onselect : TJSEventHandler;
  1937. onselectionchange : TJSEventHandler;
  1938. onstorage : TJSStorageEventHandler;
  1939. onsubmit : TJSEventHandler;
  1940. onunload : TJSUIEventHandler;
  1941. touchstart : TJSTouchEventHandler;
  1942. touchend : TJSTouchEventHandler;
  1943. touchmove : TJSTouchEventHandler;
  1944. touchcancel : TJSTouchEventHandler;
  1945. procedure addEventListener(aname : string; aListener : TJSEventHandler);
  1946. procedure addEventListener(aname : string; aListener : TJSRawEventHandler);
  1947. procedure addEventListener(aname : string; aListener : JSValue);
  1948. Procedure alert(Const Msg : String);
  1949. Function atob(Const aValue : string) : string;
  1950. procedure blur;
  1951. Procedure clearInterval(aID: NativeInt);
  1952. Procedure clearTimeout(aID: NativeInt);
  1953. Function btoa(Const aValue : string) : string;
  1954. procedure cancelAnimationFrame(aHandle: Integer);
  1955. Procedure close;
  1956. Function confirm(Const aMsg : String) : boolean;
  1957. function fetch(resource: String; init: TJSObject): TJSPromise; overload; external name 'fetch';
  1958. //function fetch(resource: String): TJSPromise; overload; external name 'fetch';
  1959. function fetch(resource: String): TJSResponse; {$IFNDEF SkipAsync}async;{$ENDIF} overload; external name 'fetch';
  1960. function fetch(resource: TJSObject; init: TJSObject): TJSPromise; overload; external name 'fetch';
  1961. function fetch(resource: TJSObject): TJSPromise; overload; external name 'fetch';
  1962. function asyncfetch(resource: String): TJSResponse; {$IFNDEF SkipAsync}async;{$ENDIF} overload; external name 'fetch';
  1963. function asyncfetch(resource: TJSObject; init: TJSObject): TJSResponse; {$IFNDEF SkipAsync} async;{$ENDIF} overload; external name 'fetch';
  1964. function asyncfetch(resource: TJSObject): TJSResponse; {$IFNDEF SkipAsync}async;{$ENDIF} overload;external name 'fetch';
  1965. procedure focus;
  1966. Function getComputedStyle(aElement : TJSElement) : TJSCSSStyleDeclaration; overload;
  1967. Function getComputedStyle(aElement,aPseudoElement : TJSElement) : TJSCSSStyleDeclaration; overload;
  1968. function matchMedia(aQuery : String) : TJSMediaQueryList;
  1969. procedure moveBy(x,y : NativeInt);
  1970. procedure moveTo(x,y : NativeInt);
  1971. function open : TJSWindow;
  1972. function open(Const aURL : String) : TJSWindow; overload;
  1973. function open(Const aURL,aTarget : String) : TJSWindow; overload;
  1974. function open(Const aURL,aTarget : String; AOptions : TJSObject) : TJSWindow; overload;
  1975. procedure postMessage(aMessage : JSValue);
  1976. procedure postMessage(aMessage : JSValue; aOptions : TJSPostMessageOptions);
  1977. procedure postMessage(aMessage : JSValue; aTransfer : TJSValueDynArray);
  1978. procedure postMessage(aMessage : JSValue; aTarget : string);
  1979. procedure postMessage(aMessage : JSValue; aTarget : string; aTransfer : TJSValueDynArray);
  1980. procedure print;
  1981. function prompt(const aMessage : String) : String; overload;
  1982. function prompt(const aMessage,aDefault : String) : String; overload;
  1983. procedure removeEventListener(aname : string; aListener : TJSEventHandler);
  1984. procedure removeEventListener(aname : string; aListener : JSValue);
  1985. function requestAnimationFrame(aCallback: TFrameRequestCallback): Integer;
  1986. procedure resizeBy(aWidth,aHeight : NativeInt);
  1987. procedure resizeTo(aWidth,aHeight : NativeInt);
  1988. procedure scrollBy(x,y : NativeInt);
  1989. procedure scrollTo(x,y : NativeInt);
  1990. Function setInterval(ahandler : TJSTimerCallBack; aInterval : NativeUInt) : NativeInt; varargs;
  1991. Function setTimeout(ahandler : TJSTimerCallBack; aTimeout : NativeUInt) : NativeInt; varargs;
  1992. Function setTimeout(ahandler : TJSTimerCallBack) : NativeInt;
  1993. procedure stop;
  1994. procedure cancelIdleCallback(handle: NativeInt);
  1995. function requestIdleCallback(handler: TIdleCallbackProc): NativeInt; overload;
  1996. function requestIdleCallback(handler: TIdleCallbackProc; options: TJSIdleCallbackOptions): NativeInt; overload;
  1997. function showOpenFilePicker: TJSFileSystemFileHandleArray; async; overload;
  1998. function showOpenFilePicker(options: TJSShowOpenFilePickerOptions): TJSFileSystemFileHandleArray; async; overload;
  1999. function showSaveFilePicker: TJSFileSystemFileHandle; async; overload;
  2000. function showSaveFilePicker(options: TJSShowSaveFilePickerOptions): TJSFileSystemFileHandle; async; overload;
  2001. function FileSystemDirectoryHandle: TJSFileSystemDirectoryHandleArray; async;
  2002. { public properties }
  2003. property console : TJSConsole Read FConsole;
  2004. property closed : boolean read FClosed;
  2005. property crypto : TJSCrypto Read FCrypto;
  2006. property devicePixelRatio : Double read FDevicePixelRatio;
  2007. property document : TJSDocument read FDocument;
  2008. property frameElement : TJSElement Read FFrameElement;
  2009. Property frames : TJSWindowArray read FFrames;
  2010. Property history : TJSHistory read FHistory;
  2011. Property indexedDB : TJSIDBFactory read FIndexedDB;
  2012. Property innerHeight : NativeInt Read FInnerheight;
  2013. Property innerWidth : NativeInt Read FInnerWidth;
  2014. Property length : NativeInt Read FLength;
  2015. Property localStorage : TJSStorage Read FLocalStorage;
  2016. property location : TJSLocation Read FLocation;
  2017. Property locationString : String read FLocationString write FLocationString;
  2018. property locationbar : TJSLocationBar Read FLocationBar;
  2019. property menubar : TJSMenuBar Read FMenuBar;
  2020. property navigator : TJSNavigator Read FNavigator;
  2021. property opener : TJSWindow read FOpener;
  2022. Property outerHeight : NativeInt Read FOuterheight;
  2023. Property outerWidth : NativeInt Read FOuterWidth;
  2024. Property parent : TJSWindow Read FParent;
  2025. Property Performance : TJSPerformance Read FPerformance;
  2026. property personalbar : TJSPersonalBar Read FPersonalBar;
  2027. property screen : TJSScreen read FScreen;
  2028. property screenX : NativeInt read FScreenX;
  2029. Property screenY : NativeInt read FScreenY;
  2030. Property scrollbar : TJSScrollBars Read FScrollbar;
  2031. property scrollX : NativeInt read FScrollX;
  2032. Property scrollY : NativeInt read FScrollY;
  2033. Property _Self : TJSWindow read FSelf;
  2034. Property sessionStorage : TJSStorage Read FSessionStorage;
  2035. property toolbar : TJSToolBar Read FToolBar;
  2036. property top : TJSWindow Read FTop;
  2037. property URL : TJSURL Read FURL;
  2038. end;
  2039. { TJSCSSStyleDeclaration }
  2040. TJSCSSStyleDeclaration = class external name 'CSSStyleDeclaration' (TJSObject)
  2041. private
  2042. FLength: NativeInt; external name 'length';
  2043. FParentRule: TJSCSSRule; external name 'parentRule';
  2044. public
  2045. cssText : string;
  2046. function item(aIndex : Integer) : string;
  2047. function removeProperty(const aProperty : String) : string;
  2048. function getPropertyPriority(const aProperty : String) : string;
  2049. function getPropertyValue(const aProperty : String) : string;
  2050. procedure setProperty(const aProperty,aValue : String);overload;
  2051. procedure setProperty(const aProperty,aValue,aPriority : string); overload;
  2052. property length : NativeInt read FLength;
  2053. property parentRule : TJSCSSRule read FParentRule;
  2054. end;
  2055. TJSScrollIntoViewOptions = class external name 'Object' (TJSObject)
  2056. behaviour : string;
  2057. block : string;
  2058. inline_ : string; external name 'inline';
  2059. end;
  2060. { TJSHTMLElement }
  2061. TJSHTMLElement = class external name 'HTMLElement' (TJSElement)
  2062. private
  2063. FDataset: TJSObject ; external name 'dataset';
  2064. FIsContentEditable: Boolean ; external name 'isContentEditable';
  2065. FOffsetHeight: Double; external name 'offsetHeight';
  2066. FOffsetLeft: Double; external name 'offsetLeft';
  2067. FOffsetParent: TJSElement; external name 'offsetParent';
  2068. FOffsetTop: Double; external name 'offsetTop';
  2069. FOffsetWidth: Double; external name 'offsetWidth';
  2070. Public
  2071. accessKey : string;
  2072. contentEditable : string;
  2073. dir : string;
  2074. draggable : boolean;
  2075. hidden : boolean;
  2076. lang : string;
  2077. spellcheck : boolean;
  2078. style : TJSCSSStyleDeclaration;
  2079. tabIndex : Integer;
  2080. title: string;
  2081. onabort : TJSEventHandler;
  2082. onanimationcancel: THTMLAnimationEventHandler;
  2083. onanimationend: THTMLAnimationEventHandler;
  2084. onblur : TJSEventHandler;
  2085. oncancel : TJSEventHandler;
  2086. oncanplay : TJSEventHandler;
  2087. oncanplaythrough : TJSEventHandler;
  2088. onchange : TJSEventHandler;
  2089. onclick: THTMLClickEventHandler;
  2090. onclose : TJSEventHandler;
  2091. oncontextmenu : TJSEventHandler;
  2092. ondblclick : THTMLClickEventHandler;
  2093. ondrag : TJSDragDropEventHandler;
  2094. ondragend : TJSDragDropEventHandler;
  2095. ondragenter : TJSDragDropEventHandler;
  2096. ondragexit : TJSDragDropEventHandler;
  2097. ondragover : TJSDragDropEventHandler;
  2098. ondragleave : TJSDragDropEventHandler;
  2099. ondragstart: TJSDragDropEventHandler;
  2100. ondrop : TJSDragDropEventHandler;
  2101. onerror : TJSErrorEventHandler;
  2102. onfocus : TJSFocusEventhandler;
  2103. ondurationchange : TJSEventHandler;
  2104. onemptied : TJSEventHandler;
  2105. onended : TJSEventHandler;
  2106. ongotpointercapture : TJSPointerEventHandler;
  2107. oninput : TJSEventhandler;
  2108. oninvalid : TJSEventhandler;
  2109. onkeydown : TJSKeyEventhandler;
  2110. onkeypress : TJSKeyEventhandler;
  2111. onkeyup : TJSKeyEventhandler;
  2112. onload : TJSEventhandler;
  2113. onloadeddata : TJSEventhandler;
  2114. onloadedmetadata : TJSEventhandler;
  2115. onloadend : TJSLoadEventhandler;
  2116. onloadstart : TJSLoadEventhandler;
  2117. onlostpointercapture : TJSPointerEventHandler;
  2118. onmousedown : TJSMouseEventHandler;
  2119. onmouseenter : TJSMouseEventHandler;
  2120. onmouseleave : TJSMouseEventHandler;
  2121. onmousemove : TJSMouseEventHandler;
  2122. onmouseout : TJSMouseEventHandler;
  2123. onmouseover : TJSMouseEventHandler;
  2124. onmouseup : TJSMouseEventHandler;
  2125. onmousewheel : TJSMouseEventHandler;
  2126. onpause : TJSPointerEventHandler;
  2127. onplay : TJSPointerEventHandler;
  2128. onplaying : TJSPointerEventHandler;
  2129. onpointercancel : TJSPointerEventHandler;
  2130. onpointerdown : TJSPointerEventHandler;
  2131. onpointerenter : TJSPointerEventHandler;
  2132. onpointerleave : TJSPointerEventHandler;
  2133. onpointermove : TJSPointerEventHandler;
  2134. onpointerout : TJSPointerEventHandler;
  2135. onpointerover : TJSPointerEventHandler;
  2136. onpointerup : TJSPointerEventHandler;
  2137. onpointerlockchange : TJSPointerEventHandler;
  2138. onprogress : TJSProgressEventhandler;
  2139. onseeked : TJSEventHandler;
  2140. onseeking : TJSEventHandler;
  2141. onreset : TJSUIEventHandler;
  2142. onscroll : TJSUIEventHandler;
  2143. onselect : TJSEventHandler;
  2144. onselectstart : TJSEventHandler;
  2145. onselectionchange : TJSEventHandler;
  2146. onshow : TJSEventHandler;
  2147. onstalled : TJSEventHandler;
  2148. ontimeupdate : TJSEventHandler;
  2149. ontransitioncancel : TJSEventHandler;
  2150. ontransitionend : TJSEventHandler;
  2151. onvolumechange : TJSEventHandler;
  2152. onsubmit : TJSEventHandler;
  2153. onwheel : TJSMouseWheelEventHandler;
  2154. onwaiting : TJSEventHandler;
  2155. touchstart : TJSTouchEventHandler;
  2156. touchend : TJSTouchEventHandler;
  2157. touchmove : TJSTouchEventHandler;
  2158. touchcancel : TJSTouchEventHandler;
  2159. Procedure blur;
  2160. Procedure focus;
  2161. Procedure click;
  2162. procedure scrollIntoView; overload;
  2163. procedure scrollIntoView(alignToTop : Boolean);
  2164. procedure scrollIntoView(aObj : TJSObject);
  2165. procedure scrollIntoView(Opts: TJSScrollIntoViewOptions);
  2166. property dataset : TJSObject read FDataset;
  2167. property isContentEditable : Boolean read FIsContentEditable;
  2168. property offsetHeight : Double Read FOffsetHeight;
  2169. property offsetLeft : Double Read FOffsetLeft;
  2170. property offsetTop : Double Read FOffsetTop;
  2171. property offsetWidth : Double Read FOffsetWidth;
  2172. property offsetParent : TJSElement Read FOffsetParent;
  2173. end;
  2174. TJSHTMLDivElement = class external name 'HTMLDivElement' (TJSHTMLElement)
  2175. end;
  2176. TJSHTMLFormControlsCollection = class external name 'HTMLFormControlsCollection' (TJSHTMLCollection)
  2177. Public
  2178. function namedItem(S : String) : TJSElement; reintroduce; external name 'namedItem';
  2179. property Items[S : String] : TJSElement read namedItem; default;
  2180. end;
  2181. { TJSHTMLFormElement }
  2182. TJSHTMLFormElement = class external name 'HTMLFormElement' (TJSHTMLElement)
  2183. private
  2184. FElements: TJSHTMLFormControlsCollection; external name 'elements';
  2185. FLength: NativeInt; external name 'length';
  2186. Public
  2187. Procedure reset;
  2188. function reportValidity : Boolean;
  2189. function checkValidity : Boolean;
  2190. procedure submit;
  2191. method : string;
  2192. target : string;
  2193. action : string;
  2194. encoding : string;
  2195. enctype : string;
  2196. acceptCharset : string;
  2197. autocomplete : string;
  2198. noValidate : boolean;
  2199. property elements : TJSHTMLFormControlsCollection read FElements;
  2200. Property length : NativeInt Read FLength;
  2201. end;
  2202. { TJSValidityState }
  2203. TJSValidityState = class external name 'ValidityState' (TJSObject)
  2204. private
  2205. FBadInput: Boolean; external name 'badInput';
  2206. FCustomError: Boolean; external name 'customError';
  2207. FPatternMismatch: Boolean; external name 'patternMisMatch';
  2208. FRangeOverflow: Boolean; external name 'rangeOverflow';
  2209. FRangeUnderflow: Boolean; external name 'rangeUnderflow';
  2210. FStepMismatch: Boolean; external name 'stepMismatch';
  2211. FTooLong: Boolean; external name 'tooLong';
  2212. FTooShort: Boolean; external name 'tooShort';
  2213. FTypeMismatch: Boolean; external name 'typeMisMatch';
  2214. FValid: Boolean; external name 'valid';
  2215. FValueMissing: Boolean; external name 'valueMissing';
  2216. public
  2217. property badInput : Boolean read FBadInput;
  2218. property customError : Boolean read FCustomError;
  2219. property patternMisMatch : Boolean read FPatternMismatch;
  2220. property rangeOverflow : Boolean read FRangeOverflow;
  2221. property rangeUnderflow : Boolean read FRangeUnderflow;
  2222. property stepMismatch : Boolean read FStepMismatch;
  2223. property tooLong : Boolean read FTooLong;
  2224. property tooShort : Boolean read FTooShort;
  2225. property typeMisMatch : Boolean read FTypeMismatch;
  2226. property valid : Boolean Read FValid;
  2227. property valueMissing : Boolean read FValueMissing;
  2228. end;
  2229. { TJSBlob }
  2230. TJSBlob = class external name 'Blob' (TJSEventTarget)
  2231. private
  2232. FSize: NativeInt; external name 'size';
  2233. FType: string; external name 'type';
  2234. Public
  2235. procedure close;
  2236. function slice : TJSBlob; overload;
  2237. function slice(aStart : NativeInt) : TJSBlob; overload;
  2238. function slice(aStart,aEnd : NativeInt) : TJSBlob; overload;
  2239. function slice(aStart,aEnd : NativeInt; AContentType : String) : TJSBlob; overload;
  2240. function arrayBuffer : TJSPromise;
  2241. property size : NativeInt read FSize;
  2242. property _type : string read FType; deprecated;
  2243. property type_ : string read FType;
  2244. end;
  2245. { TJSHTMLFile }
  2246. TJSHTMLFile = class external name 'File' (TJSBlob)
  2247. private
  2248. FLastModified: NativeInt; external name 'lastModified';
  2249. FLastModifiedDate: TJSDate; external name 'lastModifiedDate';
  2250. FName: string; external name 'name';
  2251. public
  2252. property lastModified: NativeInt read FLastModified;
  2253. property lastModifiedDate : TJSDate read FLastModifiedDate; deprecated;
  2254. property name: String read FName;
  2255. end;
  2256. { TJSHTMLFileList }
  2257. TJSHTMLFileList = class external name 'FileList' (TJSEventTarget)
  2258. private
  2259. FLength: NativeInt; external name 'length';
  2260. Public
  2261. function item(aIndex : NativeInt) : TJSHTMLFile;
  2262. property length : NativeInt read FLength;
  2263. property Files[aIndex : NativeInt] : TJSHTMLFile Read item; default;
  2264. end;
  2265. { TJSHTMLInputElement }
  2266. // https://html.spec.whatwg.org/multipage/forms.html#the-input-element
  2267. TJSHTMLInputElement = class external name 'HTMLInputElement' (TJSHTMLElement)
  2268. private
  2269. FFiles: TJSHTMLFileList; external name 'files';
  2270. FForm: TJSHTMLFormElement; external name 'form';
  2271. FLabels: TJSNodeList; external name 'labels';
  2272. FList: TJSHTMLElement; external name 'list';
  2273. FValidationmMessage: string; external name 'validationMessage';
  2274. FValidity: TJSValidityState; external name 'validity';
  2275. FWillValidate: boolean; external name 'willValidate';
  2276. Public
  2277. procedure select;
  2278. procedure setCustomValidity(aText : string);
  2279. procedure stepUp; overload;
  2280. procedure stepUp(n : Integer); overload;
  2281. function checkValidity : Boolean;
  2282. function reportValidity : Boolean;
  2283. procedure setSelectionRange(selectionStart, selectionEnd: NativeInt) ; overload;
  2284. procedure setSelectionRange(selectionStart, selectionEnd: NativeInt; Direction : string) ; overload;
  2285. procedure setRangeText(aText : string; selectionStart, selectionEnd: NativeInt) ; overload;
  2286. procedure setRangeText(aText : string; selectionStart, selectionEnd: NativeInt; Direction : string) ; overload;
  2287. Public
  2288. accept : string;
  2289. allowDirs : boolean;
  2290. align : string;
  2291. alt : string;
  2292. autofocus : boolean;
  2293. autocapitalize : string;
  2294. autocomplete : string;
  2295. defaultValue : string;
  2296. defaultChecked : string;
  2297. checked : boolean;
  2298. dirName : string;
  2299. disabled : boolean;
  2300. formAction : string;
  2301. formEncType : string;
  2302. formMethod : string;
  2303. formNoValidate : Boolean;
  2304. formTarget : string;
  2305. height : string;
  2306. indeterminate : boolean;
  2307. inputMode : string;
  2308. max : string;
  2309. maxLength : NativeInt;
  2310. min : string;
  2311. minLength : NativeInt;
  2312. multiple : boolean;
  2313. pattern : string;
  2314. placeholder : string;
  2315. readOnly : boolean;
  2316. required : boolean;
  2317. size : NativeInt;
  2318. src : string;
  2319. step : string;
  2320. _type : string; external name 'type';
  2321. selectionStart : NativeInt;
  2322. selectionEnd : NativeInt;
  2323. selectionDirection : string;
  2324. useMap : string;
  2325. value : string;
  2326. width : string;
  2327. property files : TJSHTMLFileList Read FFiles;
  2328. property form : TJSHTMLFormElement read FForm;
  2329. property labels : TJSNodeList read FLabels;
  2330. property list : TJSHTMLElement Read FList;
  2331. property validationMessage : string read FValidationmMessage;
  2332. property willValidate : boolean read FWillValidate;
  2333. property validity : TJSValidityState read FValidity;
  2334. end;
  2335. TJSDOMSettableTokenList = class external name 'DOMSettableTokenList' (TJSDOMTokenList)
  2336. private
  2337. fvalue: TJSDOMString; external name 'value';
  2338. public
  2339. property value: TJSDOMString read fvalue; // readonly
  2340. end;
  2341. TJSHTMLOutputElement = class external name 'HTMLOutputElement' (TJSHTMLElement)
  2342. private
  2343. flabels: TJSNodeList; external name 'labels';
  2344. fform: TJSHTMLFormElement; external name 'form';
  2345. ftype: TJSDOMString; external name 'type';
  2346. fdefaultValue: TJSDOMString; external name 'defaultValue';
  2347. fvalue: TJSDOMString; external name 'value';
  2348. fwillValidate: Boolean; external name 'willValidate';
  2349. fvalidity: TJSValidityState; external name 'validity';
  2350. fvalidationMessage: TJSDOMString; external name 'validationMessage';
  2351. public
  2352. htmlFor: TJSDOMSettableTokenList;
  2353. function checkValidity: Boolean;
  2354. function reportValidity: Boolean;
  2355. procedure setCustomValidity(error: TJSDOMString);
  2356. public
  2357. property labels: TJSNodeList read flabels;
  2358. property form: TJSHTMLFormElement read fform;
  2359. property type_: TJSDOMString read ftype;
  2360. property defaultValue: TJSDOMString read fdefaultValue;
  2361. property value: TJSDOMString read fvalue write fvalue;
  2362. property willValidate: Boolean read fwillValidate;
  2363. property validity: TJSValidityState read fvalidity;
  2364. property validationMessage: TJSDOMString read fvalidationMessage;
  2365. end;
  2366. { TJSHTMLImageElement }
  2367. TJSHTMLImageElement = class external name 'Image' (TJSHTMLElement)
  2368. Private
  2369. FComplete: boolean; external name 'complete';
  2370. FCurrentSrc: String; external name 'currentSrc';
  2371. FNaturalHeight: NativeUInt; external name 'naturalHeight';
  2372. FNaturalWidth: NativeUInt; external name 'naturalWidth';
  2373. FX: NativeInt; external name 'x';
  2374. FY: NativeInt; external name 'y';
  2375. Public
  2376. constructor New(x,y : Cardinal); overload;
  2377. alt: String;
  2378. crossOrigin: String;
  2379. decoding: String;
  2380. height: NativeUInt;
  2381. isMap: boolean;
  2382. referrerPolicy: String;
  2383. src: String;
  2384. sizes: String;
  2385. srcset: String;
  2386. useMap: String;
  2387. width: NativeUInt;
  2388. function decode : TJSPromise;
  2389. property complete: boolean read FComplete;
  2390. property currentSrc: String read FCurrentSrc;
  2391. property naturalHeight: NativeUInt read FNaturalHeight;
  2392. property naturalWidth: NativeUInt read FNaturalWidth;
  2393. property x: NativeInt read FX;
  2394. property y: NativeInt read FY;
  2395. end;
  2396. TJSHTMLLinkElement = class external name 'HTMLLinkElement'(TJSHTMLElement)
  2397. Private
  2398. frelList: TJSDOMTokenList; external name 'relList';
  2399. fsizes: TJSDOMSettableTokenList {TJSDOMTokenList}; external name 'sizes';
  2400. Public
  2401. href: string;
  2402. crossOrigin: string;
  2403. rel: string;
  2404. as_: string; external name 'as';
  2405. media: string;
  2406. integrity: string;
  2407. hreflang: string;
  2408. type_: string external name 'type';
  2409. imageSrcset: string;
  2410. imageSizes: string;
  2411. referrerPolicy: string;
  2412. disabled: string;
  2413. charset: string deprecated; // obsolete
  2414. rev: string deprecated; // obsolete property
  2415. target: string deprecated; // obsolete property
  2416. Property relList: TJSDOMTokenList read frelList;
  2417. Property sizes: TJSDOMSettableTokenList{TJSDOMTokenList} read fsizes;
  2418. end;
  2419. { TJSHTMLAnchorElement }
  2420. TJSHTMLAnchorElement = class external name 'HTMLAnchorElement' (TJSHTMLElement)
  2421. Private
  2422. FOrigin: string;external name 'origin';
  2423. frelList: TJSDOMTokenList; external name 'relList';
  2424. Public
  2425. href: string;
  2426. download: string;
  2427. hash: string;
  2428. host: string;
  2429. hostname: string;
  2430. hreflang: string;
  2431. media: string ;
  2432. password: string;
  2433. Protocol: string;
  2434. referrerPolicy : string;
  2435. rel: string ;
  2436. rev: string deprecated; // obsolete property
  2437. target: string ;
  2438. text : string;
  2439. type_ : string external name 'type';
  2440. username : string;
  2441. Property relList: TJSDOMTokenList read frelList;
  2442. Property origin: string Read FOrigin;
  2443. end;
  2444. { TJSHTMLMenuElement }
  2445. TJSHTMLMenuElement = class external name 'HTMLMenuElement' (TJSHTMLElement) // uhm... should it be declared? it is experimental at Mozilla docs...
  2446. end;
  2447. { TJSHTMLButtonElement }
  2448. TJSHTMLButtonElement = class external name 'HTMLButtonElement' (TJSHTMLElement)
  2449. private
  2450. FForm: TJSHTMLFormElement; external name 'form';
  2451. FLabels: TJSNodeList; external name 'labels';
  2452. FValidationmMessage: String; external name 'validationMessage';
  2453. FValidity: TJSValidityState; external name 'validity';
  2454. FWillValidate: boolean; external name 'willValidate';
  2455. Public
  2456. autofocus : boolean;
  2457. disabled : boolean;
  2458. formAction : String;
  2459. formEnctype : String;
  2460. formMethod : String;
  2461. formNoValidate : Boolean;
  2462. formTarget : String;
  2463. menu: TJSHTMLMenuElement;
  2464. _type : String; external name 'type';
  2465. value : string;
  2466. Public
  2467. property form : TJSHTMLFormElement Read FForm;
  2468. property labels : TJSNodeList Read FLabels;
  2469. property validationMessage : String Read FValidationmMessage;
  2470. property validity : TJSValidityState Read FValidity;
  2471. property willValidate : boolean read FWillValidate;
  2472. end;
  2473. TJSHTMLLabelElement = class external name 'HTMLLabelElement' (TJSHTMLElement)
  2474. Private
  2475. FForm: TJSHTMLFormElement; external name 'form';
  2476. FControl : TJSHTMLElement; external name 'control';
  2477. Public
  2478. For_ : String; external name 'htmlFor';
  2479. property Control : TJSHTMLElement Read FControl;
  2480. property Form : TJSHTMLFormElement read FForm;
  2481. end;
  2482. { TJSHTMLTextAreaElement }
  2483. TJSHTMLTextAreaElement = class external name 'HTMLTextAreaElement' (TJSHTMLElement)
  2484. private
  2485. FForm: TJSHTMLFormElement; external name 'form';
  2486. FTextLength: NativeInt; external name 'textKength';
  2487. FType: String; external name 'type';
  2488. FValidationMessage: String; external name 'validationMessage';
  2489. FValidity: TJSValidityState; external name 'validity';
  2490. FWillValidate: boolean; external name 'willValidate';
  2491. Public
  2492. defaultValue : string;
  2493. value : string;
  2494. rows : cardinal;
  2495. cols : cardinal;
  2496. autofocus : boolean;
  2497. disabled : boolean;
  2498. maxLength : nativeInt;
  2499. readOnly : Boolean;
  2500. required : Boolean;
  2501. selectionStart : Cardinal;
  2502. selectionEnd : Cardinal;
  2503. selectionDirection : String;
  2504. wrap : string;
  2505. Property Form : TJSHTMLFormElement Read FForm;
  2506. Property Type_: String Read FType;
  2507. Property textLength : NativeInt Read FTextLength;
  2508. Property validity : TJSValidityState Read FValidity;
  2509. property willValidate : boolean read FWillValidate;
  2510. property validationMessage : String Read FValidationMessage;
  2511. end;
  2512. { TJSHTMLEmbedElement }
  2513. TJSHTMLEmbedElement = class external name 'HTMLEmbedElement' (TJSHTMLElement)
  2514. Public
  2515. height: String;
  2516. src: String;
  2517. _type : String; external name 'type';
  2518. width: String;
  2519. end;
  2520. { TJSHTMLOptionElement }
  2521. TJSHTMLOptionElement = class external name 'Option' (TJSHTMLElement)
  2522. private
  2523. FForm: TJSHTMLFormElement; external name 'form';
  2524. FIndex: NativeInt; external name 'index';
  2525. Public
  2526. Constructor New; overload;
  2527. Constructor New(aText : String); overload;
  2528. Constructor New(aText,aValue : String); overload;
  2529. Constructor New(aText,aValue : String; aDefaultSelected : Boolean); overload;
  2530. Constructor New(aText,aValue : String; aDefaultSelected,Selected : Boolean); overload;
  2531. Public
  2532. defaultSelected : boolean;
  2533. disabled : boolean;
  2534. _label : string ; external name 'label';
  2535. selected : boolean;
  2536. text : string;
  2537. value : string;
  2538. property index : NativeInt Read FIndex;
  2539. property form : TJSHTMLFormElement Read FForm;
  2540. end;
  2541. TJSHTMLOptGroupElement = class external name 'HTMLOptGroupElement' (TJSHTMLElement)
  2542. end;
  2543. TJSHTMLOptionsCollection = class external name 'HTMLOptionsCollection' (TJSHTMLCollection)
  2544. end;
  2545. { TJSHTMLSelectElement }
  2546. TJSHTMLSelectElement = Class external name 'HTMLSelectElement' (TJSHTMLElement)
  2547. private
  2548. FForm: TJSHTMLFormElement; external name 'form';
  2549. FLabels: TJSNodeList; external name 'labels';
  2550. FLength: NativeInt; external name 'length';
  2551. FOptions: TJSHTMLOptionsCollection; external name 'options';
  2552. FSelectedOptions: TJSHTMLCollection; external name 'selectedOptions';
  2553. FType: String; external name 'type';
  2554. FValidationMessage: string; external name 'validationMessage';
  2555. FValidity: TJSValidityState; external name 'validity';
  2556. fwillValidate: Boolean; external name 'willValidate';
  2557. Public
  2558. Procedure add(anItem : TJSHTMLOptionElement); overload;
  2559. Procedure add(anItem, before : TJSHTMLOptionElement); overload;
  2560. function item(aIndex : NativeInt): TJSHTMLOptionElement;
  2561. function namedItem(aName : String): TJSHTMLOptionElement;
  2562. procedure remove(aIndex : NativeInt); overload;
  2563. procedure checkValidity;
  2564. procedure setCustomValidity(aMessage : String);
  2565. Public
  2566. autofocus : Boolean;
  2567. disabled : Boolean;
  2568. multiple : boolean;
  2569. required: boolean;
  2570. selectedIndex : NativeInt;
  2571. size : NativeInt;
  2572. value : string;
  2573. property length : NativeInt read FLength;
  2574. Property options : TJSHTMLOptionsCollection read FOptions;
  2575. Property selectedOptions : TJSHTMLCollection read FSelectedOptions;
  2576. Property form : TJSHTMLFormElement read FForm;
  2577. property labels : TJSNodeList Read FLabels;
  2578. property _type : String Read FType;
  2579. property validity : TJSValidityState Read FValidity;
  2580. property validationMessage : string Read FValidationMessage;
  2581. property willValidate : Boolean read fwillValidate;
  2582. end;
  2583. { TJSHTMLTableElement }
  2584. TJSHTMLTableSectionElement = class;
  2585. TJSHTMLTableRowElement = class;
  2586. TJSHTMLTableElement = Class external name 'HTMLTableElement'(TJSHTMLElement)
  2587. private
  2588. FAlign: String; external name 'align';
  2589. FBGColor: String; external name 'bgColor';
  2590. FBorder: String; external name 'border';
  2591. FCaption: TJSHTMLElement; external name 'caption';
  2592. FCellPadding: String; external name 'cellPadding';
  2593. FCellSpacing: String; external name 'cellSpacing';
  2594. FFrame: String; external name 'frame';
  2595. FRows: TJSHTMLCollection; external name 'rows';
  2596. FRules: String; external name 'rules';
  2597. FSummary: String; external name 'summary';
  2598. FTBodies: TJSHTMLCollection; external name 'tBodies';
  2599. FTfoot: TJSHTMLTableSectionElement; external name 'tfoot';
  2600. FTHead: TJSHTMLTableSectionElement; external name 'tHead';
  2601. FWidth: String; external name 'width';
  2602. public
  2603. { Methods }
  2604. function createCaption: TJSHTMLElement;
  2605. function createTFoot: TJSHTMLTableSectionElement;
  2606. function createTHead: TJSHTMLTableSectionElement;
  2607. procedure deleteCaption;
  2608. procedure deleteRow(index: Integer);
  2609. procedure deleteTFoot;
  2610. procedure deleteTHead;
  2611. function insertRow(index: Integer): TJSHTMLTableRowElement;
  2612. { Properties }
  2613. property align: String read FAlign write FAlign;
  2614. property bgColor: String read FBGColor write FBGColor;
  2615. property border: String read FBorder write FBorder;
  2616. property caption: TJSHTMLElement read FCaption;
  2617. property cellPadding: String read FCellPadding write FCellPadding;
  2618. property cellSpacing: String read FCellSpacing write FCellSpacing;
  2619. property frame: String read FFrame write FFrame;
  2620. property rows: TJSHTMLCollection read FRows;
  2621. property rules: String read FRules write FRules;
  2622. property summary: String read FSummary write FSummary;
  2623. property tBodies: TJSHTMLCollection read FTBodies;
  2624. property tfoot: TJSHTMLTableSectionElement read FTfoot;
  2625. property tHead: TJSHTMLTableSectionElement read FTHead;
  2626. property width: String read FWidth write FWidth;
  2627. end;
  2628. { TJSHTMLTableSectionElement }
  2629. TJSHTMLTableSectionElement = Class external name 'HTMLTableSectionElement' (TJSHTMLElement)
  2630. private
  2631. Falign: String; external name 'align';
  2632. Frows: TJSHTMLCollection external name 'rows';
  2633. Fch: String; external name 'ch';
  2634. FchOff: String; external name 'chOff';
  2635. FvAlign: String; external name 'vAlign';
  2636. public
  2637. { Methods }
  2638. procedure deleteRow(index: Integer);
  2639. function insertRow(index: Integer): TJSHTMLTableRowElement;
  2640. { Properties }
  2641. property align: String read Falign write Falign;
  2642. property rows: TJSHTMLCollection read Frows;
  2643. property ch: String read Fch write Fch;
  2644. property chOff: String read FchOff write FchOff;
  2645. property vAlign: String read FvAlign write FvAlign;
  2646. end;
  2647. { TJSHTMLTableCellElement }
  2648. TJSHTMLTableCellElement = Class external name 'HTMLTableCellElement' (TJSHTMLElement)
  2649. private
  2650. Fabbr: String; external name 'abbr';
  2651. Falign: String; external name 'align';
  2652. Faxis: String; external name 'axis';
  2653. FbgColor: String; external name 'bgColor';
  2654. FcellIndex: Integer; external name 'cellIndex';
  2655. Fch: String; external name 'ch';
  2656. FchOff: String; external name 'chOff';
  2657. FcolSpan: Integer; external name 'colSpan';
  2658. Fheaders: String; external name 'headers';
  2659. Fheight: String; external name 'height';
  2660. FnoWrap: Boolean; external name 'noWrap';
  2661. FrowSpan: Integer; external name 'rowSpan';
  2662. Fscope: String; external name 'scope';
  2663. FvAlign: String; external name 'vAlign';
  2664. Fwidth: String; external name 'width';
  2665. public
  2666. { Properties }
  2667. property abbr: String read Fabbr write Fabbr;
  2668. property align: String read Falign write Falign;
  2669. property axis: String read Faxis write Faxis;
  2670. property bgColor: String read FbgColor write FbgColor;
  2671. property cellIndex: Integer read FcellIndex;
  2672. property ch: String read Fch write Fch;
  2673. property chOff: String read FchOff write FchOff;
  2674. property colSpan: Integer read FcolSpan write FcolSpan;
  2675. property headers: String read Fheaders;
  2676. property height: String read Fheight write Fheight;
  2677. property noWrap: Boolean read FnoWrap write FnoWrap;
  2678. property rowSpan: Integer read FrowSpan write FrowSpan;
  2679. property scope: String read Fscope write Fscope;
  2680. property vAlign: String read FvAlign write FvAlign;
  2681. property width: String read Fwidth write Fwidth;
  2682. end;
  2683. { TJSHTMLTableRowElement }
  2684. TJSHTMLTableRowElement = Class external name 'HTMLTableRowElement' (TJSHTMLElement)
  2685. private
  2686. Falign: String; external name 'align';
  2687. FbgColor: String; external name 'bgColor';
  2688. Fcells: TJSHTMLCollection; external name 'cells';
  2689. Fch: String; external name 'ch';
  2690. FchOff: String; external name 'chOff';
  2691. FrowIndex: Integer; external name 'rowIndex';
  2692. FsectionRowIndex: Integer; external name 'sectionRowIndex';
  2693. FvAlign: String; external name 'vAlign';
  2694. public
  2695. { Methods }
  2696. procedure deleteCell(index: Integer);
  2697. function insertCell(index: Integer): TJSHTMLTableCellElement;
  2698. { Properties }
  2699. property align: String read Falign write Falign;
  2700. property bgColor: String read FbgColor write FbgColor;
  2701. property cells: TJSHTMLCollection read Fcells;
  2702. property ch: String read Fch write Fch;
  2703. property chOff: String read FchOff write FchOff;
  2704. property rowIndex: Integer read FrowIndex;
  2705. property sectionRowIndex: Integer read FsectionRowIndex;
  2706. property vAlign: String read FvAlign write FvAlign;
  2707. end;
  2708. { TJSHTMLTableDataCellElement }
  2709. TJSHTMLTableDataCellElement = Class external name 'HTMLTableDataCellElement' (TJSHTMLElement)
  2710. private
  2711. Fabbr: String; external name 'abbr';
  2712. public
  2713. { Properties }
  2714. property abbr: String read Fabbr write Fabbr;
  2715. end;
  2716. TJSCanvasRenderingContext2D = Class;
  2717. THTMLCanvasToBlobCallback = Reference to function (aBlob : TJSBlob) : boolean; safecall;
  2718. TJSHTMLCanvasElement = Class external name 'HTMLCanvasElement' (TJSHTMLElement)
  2719. Public
  2720. height : integer;
  2721. width : integer;
  2722. Function getContext(contextType : string) : TJSObject;
  2723. Function getContext(contextType : string; contextAttributes : TJSObject) : TJSObject;
  2724. Function getContextAs2DContext(contextType : string; contextAttributes : TJSObject) : TJSCanvasRenderingContext2D; external name 'getContext';
  2725. Function getContextAs2DContext(contextType : string) : TJSCanvasRenderingContext2D; external name 'getContext';
  2726. Procedure toBlob (aCallBack : THTMLCanvasToBlobCallback; aMimeType : String); overload;
  2727. Procedure toBlob (aCallBack : THTMLCanvasToBlobCallback; aMimeType : String; aQuality : Double); overload;
  2728. Function toDataURL : String; overload;
  2729. Function toDataURL(aMimeType : String) : String; overload;
  2730. Function toDataURL(aMimeType : String; aQuality : Double) : String; overload;
  2731. end;
  2732. TJSHTMLProgressElement = class external name 'HTMLProgressElement' (TJSHTMLElement)
  2733. private
  2734. Fposition: Double; external name 'position';
  2735. Flabels: TJSNodeList; external name 'labels';
  2736. public
  2737. max: Double;
  2738. value: Double;
  2739. property position: Double read Fposition;
  2740. property labels: TJSNodeList read Flabels;
  2741. end;
  2742. Type
  2743. { TJSDOMException }
  2744. TJSDOMException = class external name 'DOMException' (TJSObject)
  2745. private
  2746. FCode: Integer; external name 'code';
  2747. FMessage: String; external name 'message';
  2748. FName: string; external name 'name';
  2749. Public
  2750. Property code : Integer Read FCode;
  2751. Property Message : String Read FMessage;
  2752. Property name : string Read FName;
  2753. end;
  2754. { TJSFileReader }
  2755. TJSFileReader = class external name 'FileReader' (TJSEventTarget)
  2756. private
  2757. FError: TJSDOMException; external name 'error';
  2758. fReadyState: Integer; external name 'readyState';
  2759. FResult: JSValue; external name 'result';
  2760. Public
  2761. Const EMPTY : Integer;
  2762. Const LOADING : Integer;
  2763. Const DONE : Integer;
  2764. Public
  2765. onabort : TJSEventHandler;
  2766. onerror : TJSEventHandler;
  2767. onload : TJSEventHandler;
  2768. onloadstart : TJSEventHandler;
  2769. onloadend : TJSEventHandler;
  2770. onprogress : TJSEventHandler;
  2771. Public
  2772. constructor new;
  2773. Procedure abort;
  2774. procedure readAsArrayBuffer(Blob: TJSBlob);
  2775. procedure readAsBinaryString(Blob: TJSBlob);
  2776. procedure readAsDataURL(Blob: TJSBlob);
  2777. procedure readAsText(Blob: TJSBlob; encoding : string);
  2778. procedure readAsText(Blob: TJSBlob);
  2779. property Error : TJSDOMException read FError;
  2780. Property readyState : Integer Read fReadyState;
  2781. property Result : JSValue Read FResult;
  2782. end;
  2783. TCanvasCoordType = double; // Is in fact a number.
  2784. // Opaque objects
  2785. TJSCanvasGradient = class external name 'CanvasGradient' (TJSObject)
  2786. end;
  2787. TJSCanvasPattern = class external name 'CanvasPattern' (TJSObject)
  2788. end;
  2789. TJSPath2D = class external name 'Path2D' (TJSObject)
  2790. Public
  2791. constructor new; overload;
  2792. constructor new(aPath : TJSPath2D); overload;
  2793. constructor new(SVGPath : String); overload;
  2794. Procedure addPath(aPath : TJSPath2D);
  2795. procedure arc(x,y, radius,startAngle,endAngle : TCanvasCoordType); overload;
  2796. procedure arc(x,y, radius,startAngle,endAngle : TCanvasCoordType; antiClockWise : boolean); overload;
  2797. procedure arcTo(x1,y1,x2,y2,radius : TCanvasCoordType); overload;
  2798. procedure bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y : TCanvasCoordType); overload;
  2799. Procedure closePath;
  2800. procedure ellipse(x, y, radiusX, radiusY : TCanvasCoordType; rotation, startAngle, endAngle : Double); overload;
  2801. procedure ellipse(x, y, radiusX, radiusY : TCanvasCoordType; rotation, startAngle, endAngle : Double; anticlockwise : Boolean); overload;
  2802. Procedure lineTo(X,Y : TCanvasCoordType);
  2803. Procedure moveTo(X,Y : TCanvasCoordType);
  2804. procedure quadraticCurveTo(cpx,cpy,x,y : TCanvasCoordType);
  2805. procedure rect(x,y,awidth,aheight: TCanvasCoordType); overload;
  2806. end;
  2807. { TJSImageData }
  2808. TJSImageData = class external name 'ImageData' (TJSObject)
  2809. private
  2810. FData: TJSUint8ClampedArray; external name 'data';
  2811. FHeight: Integer; external name 'height';
  2812. FWidth: Integer; external name 'width';
  2813. Public
  2814. constructor new(awidth,aheight : integer); overload;
  2815. constructor new(anArray :TJSUint8ClampedArray; awidth,aheight : integer); overload;
  2816. property data : TJSUint8ClampedArray read FData;
  2817. property height : Integer Read FHeight;
  2818. property width : Integer Read FWidth;
  2819. end;
  2820. TJSTextMetrics = class external name 'TextMetrics' (TJSObject)
  2821. width : TCanvasCoordType;
  2822. actualBoundingBoxLeft : TCanvasCoordType;
  2823. actualBoundingBoxRight : TCanvasCoordType;
  2824. fontBoundingBoxAscent : TCanvasCoordType;
  2825. fontBoundingBoxDescent : TCanvasCoordType;
  2826. actualBoundingBoxAscent : TCanvasCoordType;
  2827. actualBoundingBoxDescent : TCanvasCoordType;
  2828. emHeightAscent : TCanvasCoordType;
  2829. emHeightDescent : TCanvasCoordType;
  2830. hangingBaseline : TCanvasCoordType;
  2831. alphabeticBaseline : TCanvasCoordType;
  2832. ideographicBaseline : TCanvasCoordType;
  2833. end;
  2834. { TJSCanvasRenderingContext2D }
  2835. TJSCanvasRenderingContext2D = class external name 'CanvasRenderingContext2D' (TJSObject)
  2836. private
  2837. FCanvas: TJSHTMLCanvasElement; external name 'canvas';
  2838. FfillStyleColor: String; external name 'fillStyle';
  2839. FfillStyleGradient: TJSCanvasGradient; external name 'fillStyle';
  2840. FfillStylePattern: TJSCanvasPattern; external name 'fillStyle';
  2841. FimageSmoothingEnabled: Boolean; external name 'imageSmoothingEnabled';
  2842. FstrokeStyleColor: String; external name 'strokeStyle';
  2843. FstrokeStyleGradient: TJSCanvasGradient; external name 'strokeStyle';
  2844. FstrokeStylePattern: TJSCanvasPattern; external name 'strokeStyle';
  2845. Public
  2846. fillStyle : JSValue;
  2847. font : string;
  2848. globalAlpha : double;
  2849. globalCompositeOperation : String;
  2850. lineCap : string;
  2851. lineDashOffset : Double;
  2852. lineJoin : String;
  2853. lineWidth : Double;
  2854. miterLimit : Double;
  2855. shadowBlur : Double;
  2856. shadowColor : String;
  2857. shadowOffsetX : Double;
  2858. shadowOffsetY : Double;
  2859. strokeStyle : JSValue;
  2860. textAlign : String;
  2861. textBaseline : String;
  2862. procedure arc(x,y, radius,startAngle,endAngle : TCanvasCoordType); overload;
  2863. procedure arc(x,y, radius,startAngle,endAngle : TCanvasCoordType; antiClockWise : boolean); overload;
  2864. procedure arcTo(x1,y1,x2,y2,radius : TCanvasCoordType); overload;
  2865. procedure beginPath;
  2866. procedure bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y : TCanvasCoordType); overload;
  2867. procedure clearRect(x,y,width,height : TCanvasCoordType);
  2868. procedure clip; overload;
  2869. procedure clip(aFillRule : String); overload;
  2870. procedure clip(aPath : TJSPath2D); overload;
  2871. procedure closePath;
  2872. function createImageData(aWidth,aHeight : Integer) : TJSImageData; overload;
  2873. function createImageData(aImage : TJSImageData) : TJSImageData; overload;
  2874. function createLinearGradient(x0,y0,x1,y1 : TCanvasCoordType) : TJSCanvasGradient;
  2875. function createPattern(aImage : TJSObject; repetition : string) : TJSCanvasPattern;
  2876. function createRadialGradient(x0,y0,r0,x1,y1,r1 : TCanvasCoordType) : TJSCanvasGradient;
  2877. procedure drawFocusIfNeeded(aElement : TJSElement); overload;
  2878. procedure drawFocusIfNeeded(aPath : TJSPath2D; aElement : TJSElement); overload;
  2879. procedure drawImage(image : TJSObject; dx,dy : TCanvasCoordType); overload;
  2880. procedure drawImage(image : TJSObject; dx,dy,dwidth,dheight : TCanvasCoordType); overload;
  2881. procedure drawImage(image : TJSObject; sx,sy,sWidth,sHeight,dx,dy,dwidth,dheight : TCanvasCoordType); overload;
  2882. procedure ellipse(x, y, radiusX, radiusY : TCanvasCoordType; rotation, startAngle, endAngle : Double); overload;
  2883. procedure ellipse(x, y, radiusX, radiusY : TCanvasCoordType; rotation, startAngle, endAngle : Double; anticlockwise : Boolean); overload;
  2884. procedure fill; overload;
  2885. procedure fill(aRule : String); overload;
  2886. procedure fill(aPath : TJSPath2D); overload;
  2887. procedure fill(aPath : TJSPath2D;aRule : String); overload;
  2888. procedure fillRect(x,y,awidth,aheight: TCanvasCoordType); overload;
  2889. procedure fillText(aText : string; x,y : TCanvasCoordType); overload;
  2890. procedure fillText(aText : string; x,y, aMaxWidth : TCanvasCoordType); overload;
  2891. function getImageData(x,y,awidth,aheight: TCanvasCoordType) : TJSImageData; overload;
  2892. function getLineDash : TJSArray;
  2893. function isPointInPath(x,y : TCanvasCoordType) : Boolean; overload;
  2894. function isPointInPath(x,y : TCanvasCoordType; aFillRule : String) : Boolean; overload;
  2895. function isPointInPath(aPath : TJSPath2D; x,y : TCanvasCoordType) : Boolean; overload;
  2896. function isPointInPath(aPath : TJSPath2D; x,y : TCanvasCoordType; aFillRule : String) : Boolean; overload;
  2897. function isPointInStroke(x,y : TCanvasCoordType) : Boolean; overload;
  2898. function isPointInStroke(aPath : TJSPath2D; x,y : TCanvasCoordType) : Boolean; overload;
  2899. procedure lineTo(x,y : TCanvasCoordType);
  2900. function measureText(S : String) : TJSTextMetrics;
  2901. procedure moveTo(x,y : TCanvasCoordType);
  2902. procedure putImageData(aData : TJSImageData; x,y: TCanvasCoordType) ; overload;
  2903. procedure putImageData(aData : TJSImageData; x,y,dityX,dirtyY,dirtyWidth,dirtyHeight: TCanvasCoordType) ; overload;
  2904. procedure quadraticCurveTo(cpx,cpy,x,y : TCanvasCoordType);
  2905. procedure rect(x,y,awidth,aheight: TCanvasCoordType); overload;
  2906. procedure restore;
  2907. procedure rotate(anAngle : double);
  2908. procedure save;
  2909. procedure scale(x,y : double);
  2910. procedure setLineDash(segments : TJSArray); overload;
  2911. procedure setLineDash(segments : array of integer); overload;
  2912. procedure setTransform(a,b,c,d,e,f : double);
  2913. procedure stroke; overload;
  2914. procedure stroke(aPath : TJSPath2D); overload;
  2915. procedure strokeRect(x,y,awidth,aheight: TCanvasCoordType);
  2916. procedure strokeText(aText : string; x,y : TCanvasCoordType); overload;
  2917. procedure strokeText(aText : string; x,y, aMaxWidth : TCanvasCoordType); overload;
  2918. procedure transform(a,b,c,d,e,f : double);
  2919. procedure translate(x,y : TCanvasCoordType);
  2920. property canvas : TJSHTMLCanvasElement Read FCanvas;
  2921. property fillStyleAsColor : String Read FfillStyleColor Write FfillStyleColor;
  2922. property fillStyleAsGradient : TJSCanvasGradient Read FfillStyleGradient Write FfillStyleGradient;
  2923. property fillStyleAsPattern : TJSCanvasPattern Read FfillStylePattern Write FfillStylePattern;
  2924. property imageSmoothingEnabled : Boolean Read FimageSmoothingEnabled Write FimageSmoothingEnabled;
  2925. property strokeStyleAsColor : String Read FstrokeStyleColor Write FstrokeStyleColor;
  2926. property strokeStyleAsGradient : TJSCanvasGradient Read FstrokeStyleGradient Write FstrokeStyleGradient;
  2927. property strokeStyleAsPattern : TJSCanvasPattern Read FstrokeStylePattern Write FstrokeStylePattern;
  2928. end;
  2929. { TJSHTMLIFrameElement }
  2930. TJSHTMLIFrameElement = Class external name 'HTMLIFrameElement' (TJSHTMLElement)
  2931. private
  2932. FAllowPaymentRequest: Boolean; external name 'allowPaymentRequest';
  2933. FContentDocument: TJSDocument; external name 'contentDocument';
  2934. FContentWindow: TJSWindow; external name 'contentWindow';
  2935. FSandbox: string; external name 'sandbox';
  2936. Public
  2937. height : string;
  2938. src : string;
  2939. srcdoc : string;
  2940. width : string;
  2941. Property allowPaymentRequest : Boolean Read FAllowPaymentRequest;
  2942. property contentWindow : TJSWindow Read FContentWindow;
  2943. property contentDocument : TJSDocument Read FContentDocument;
  2944. property sandbox : string read FSandbox;
  2945. end;
  2946. TJSHTMLScriptElement = Class external name 'HTMLScriptElement' (TJSHTMLElement)
  2947. Public
  2948. type_ : String external name 'type';
  2949. src : String;
  2950. charset : string;
  2951. integrity : string;
  2952. async : boolean;
  2953. defer : boolean;
  2954. text : string;
  2955. crossOrigin : string;
  2956. referrerPolicy : string;
  2957. noModule : boolean;
  2958. end;
  2959. TJSXMLHttpRequestEventTarget = class external name 'XMLHttpRequestEventTarget' (TJSEventTarget)
  2960. end;
  2961. TJSXMLHttpRequestUpload = class external name 'XMLHttpRequestUpload' (TJSXMLHttpRequestEventTarget)
  2962. end;
  2963. { TJSXMLHttpRequest }
  2964. TJSOnReadyStateChangeHandler = reference to procedure; safecall;
  2965. TJSXMLHttpRequest = class external name 'XMLHttpRequest' (TJSXMLHttpRequestEventTarget)
  2966. private
  2967. FReadyState: NativeInt; external name 'readyState';
  2968. FResponse: JSValue; external name 'response';
  2969. FResponseText: string; external name 'responseText';
  2970. FResponseType: string; external name 'responseType';
  2971. FresponseURL: string; external name 'responseURL';
  2972. FresponseXML: TJSDocument; external name 'responseXML';
  2973. FUpload: TJSXMLHttpRequestUpload; external name 'upload';
  2974. FStatus : integer; external name 'status';
  2975. FStatusText : string; external name 'statusText';
  2976. public
  2977. const
  2978. UNSENT = 0;
  2979. OPENED = 1;
  2980. HEADERS_RECEIVED = 2;
  2981. LOADING = 3;
  2982. DONE = 4;
  2983. public
  2984. timeout : LongWord;
  2985. withCredentials : Boolean;
  2986. onreadystatechange : TJSOnReadyStateChangeHandler;
  2987. constructor new;
  2988. procedure abort;
  2989. function getResponseHeader(aName : string) : String;
  2990. function getAllResponseHeaders : String;
  2991. procedure open(aMethod,aURL : String); overload;
  2992. procedure open(aMethod,aURL : String; Async : Boolean); overload;
  2993. procedure open(aMethod,aURL : String; Async : Boolean; AUserame : String); overload;
  2994. procedure open(aMethod,aURL : String; Async : Boolean; AUserame,APassword : String); overload;
  2995. procedure overrideMimeType(aType : String);
  2996. procedure send(aBody : jsValue);overload;
  2997. procedure send;overload;
  2998. procedure setRequestHeader(aName, AValue : string);
  2999. property readyState : NativeInt read FReadyState;
  3000. property ResponseHeaders[aName : string] : string Read getResponseHeader;
  3001. property responseXML : TJSDocument read FresponseXML;
  3002. property responseURL : string read FresponseURL;
  3003. property responseType : string read FResponseType Write FResponseType;
  3004. property response : JSValue Read FResponse;
  3005. property responseText : string read FResponseText;
  3006. property Status : integer read FStatus;
  3007. property StatusText : string read FStatusText;
  3008. property upload : TJSXMLHttpRequestUpload read FUpload;
  3009. end;
  3010. { TJSUIEvent }
  3011. TJSUIEvent = class external name 'UIEvent' (TJSEvent)
  3012. private
  3013. FDetail: NativeInt; external name 'detail';
  3014. FView: TJSWindow; external name 'view';
  3015. Public
  3016. property detail : NativeInt read FDetail;
  3017. property view : TJSWindow read FView;
  3018. end;
  3019. { TJSMouseEvent }
  3020. TJSMouseEvent = class external name 'MouseEvent' (TJSUIevent)
  3021. private
  3022. FAltKey: Boolean; external name 'altKey';
  3023. FBUtton: NativeInt; external name 'button';
  3024. FBUttons: NativeInt; external name 'buttons';
  3025. FClientX: Double; external name 'clientX';
  3026. FClientY: Double; external name 'clientY';
  3027. FCtrlKey: Boolean; external name 'ctrlKey';
  3028. FMetaKey: Boolean; external name 'metaKey';
  3029. FmovementX: Double; external name 'movementX';
  3030. FmovementY: Double; external name 'movementY';
  3031. FoffsetX: Double; external name 'offsetX';
  3032. FoffsetY: Double; external name 'offsetY';
  3033. FRegion: String; external name 'region';
  3034. FRelatedTarget: TJSEventTarget; external name 'relatedTarget';
  3035. FscreenX: Double; external name 'screenX';
  3036. FscreenY: Double; external name 'screenY';
  3037. FShiftKey: Boolean; external name 'shiftKey';
  3038. Public
  3039. function getModifierState(keyArg: String): boolean;
  3040. Property altKey : Boolean read FAltKey;
  3041. Property button: NativeInt read FBUtton;
  3042. Property buttons: NativeInt read FBUttons;
  3043. property clientX : Double read FClientX;
  3044. property clientY : Double read FClientY;
  3045. property ctrlKey : Boolean read FCtrlKey;
  3046. property metaKey : Boolean read FMetaKey;
  3047. property movementX : Double read FmovementX;
  3048. property movementY : Double read FmovementY;
  3049. property offsetX : Double read FoffsetX;
  3050. property offsetY : Double read FoffsetY;
  3051. {$IFDEF FIREFOX}
  3052. property pageX : Double read FpageX;
  3053. property pageY : Double read FpageY;
  3054. {$ENDIF}
  3055. property region : String read FRegion;
  3056. property relatedTarget : TJSEventTarget read FRelatedTarget;
  3057. property screenX : Double read FscreenX;
  3058. property screenY : Double read FscreenY;
  3059. property shiftKey : Boolean read FShiftKey;
  3060. property x : Double read FClientX;
  3061. property y : Double read FClientY;
  3062. end;
  3063. { TJSWheelEvent }
  3064. TJSWheelEventInit = record
  3065. deltaX : Double;
  3066. deltaY : Double;
  3067. deltaZ : Double;
  3068. deltaMode : NativeInt;
  3069. end;
  3070. TJSWheelEvent = class external name 'WheelEvent' (TJSMouseEvent)
  3071. private
  3072. FDeltaMode: NativeInt; external name 'deltaMode';
  3073. FDeltaX: Double; external name 'deltaX';
  3074. FDeltaY: Double; external name 'deltaY';
  3075. FDeltaZ: Double; external name 'deltaZ';
  3076. Public
  3077. constructor new(atype : String); overload;
  3078. constructor new(atype : String; aInit : TJSWheelEventInit); overload;
  3079. Property deltaX : Double Read FDeltaX;
  3080. Property deltaY : Double Read FDeltaY;
  3081. Property deltaZ : Double Read FDeltaZ;
  3082. Property deltaMode : NativeInt Read FDeltaMode;
  3083. end;
  3084. TJSPointerEvent = Class external name 'PointerEvent' (TJSMouseEvent);
  3085. TJSTouchEvent = Class external name 'TouchEvent'(TJSUIEvent)
  3086. private
  3087. FAltKey: Boolean; external name 'altKey';
  3088. FChangedTouches: TJSTouchList; external name 'changedTouches';
  3089. FCtrlKey: Boolean; external name 'ctrlKey';
  3090. FMetaKey: Boolean; external name 'metaKey';
  3091. FShiftKey: Boolean; external name 'shiftKey';
  3092. FTargetTouches: TJSTouchList; external name 'targetTouches';
  3093. FTouches: TJSTouchList; external name 'touches';
  3094. Public
  3095. Property altKey : Boolean Read FAltKey;
  3096. Property ctrlKey : Boolean Read FCtrlKey;
  3097. Property metaKey : Boolean Read FMetaKey;
  3098. Property shiftKey : Boolean Read FShiftKey;
  3099. property changedTouches : TJSTouchList Read FChangedTouches;
  3100. property touches : TJSTouchList Read FTouches;
  3101. property targetTouches : TJSTouchList Read FTargetTouches;
  3102. end;
  3103. // Namespace for standard key names.
  3104. // See list at https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
  3105. TJSKeyNames = Class
  3106. Const
  3107. Alt = 'Alt';
  3108. AltGraph = 'AltGraph';
  3109. CapsLock = 'CapsLock';
  3110. Control = 'Control';
  3111. Fn = 'Fn';
  3112. FnLock = 'FnLock';
  3113. Hyper = 'Hyper';
  3114. Meta = 'Meta';
  3115. NumLock = 'NumLock';
  3116. ScrollLock = 'ScrollLock';
  3117. Shift = 'Shift';
  3118. Super = 'Super';
  3119. Symbol = 'Symbol';
  3120. SymbolLock = 'SymbolLock';
  3121. Enter = 'Enter';
  3122. Tab = 'Tab';
  3123. Space = 'Space';
  3124. ArrowDown = 'ArrowDown';
  3125. ArrowLeft = 'ArrowLeft';
  3126. ArrowRight = 'ArrowRight';
  3127. ArrowUp = 'ArrowUp';
  3128. _End = 'End';
  3129. Home = 'Home';
  3130. PageDown = 'PageDown';
  3131. PageUp = 'PageUp';
  3132. BackSpace = 'Backspace';
  3133. Clear = 'Clear';
  3134. Copy = 'Copy';
  3135. CrSel = 'CrSel';
  3136. Cut = 'Cut';
  3137. Delete = 'Delete';
  3138. EraseEof = 'EraseEof';
  3139. ExSel = 'ExSel';
  3140. Insert = 'Insert';
  3141. Paste = 'Paste';
  3142. Redo = 'Redo';
  3143. Undo = 'Undo';
  3144. Accept = 'Accept';
  3145. Again = 'Again';
  3146. Attn = 'Attn';
  3147. Cancel = 'Cancel';
  3148. ContextMenu = 'Contextmenu';
  3149. Escape = 'Escape';
  3150. Execute = 'Execute';
  3151. Find = 'Find';
  3152. Finish = 'Finish';
  3153. Help = 'Help';
  3154. Pause = 'Pause';
  3155. Play = 'Play';
  3156. Props = 'Props';
  3157. Select = 'Select';
  3158. ZoomIn = 'ZoomIn';
  3159. ZoomOut = 'ZoomOut';
  3160. BrightnessDown = 'BrightnessDown';
  3161. BrightnessUp = 'BrightnessUp';
  3162. Eject = 'Eject';
  3163. LogOff = 'LogOff';
  3164. Power = 'Power';
  3165. PowerOff = 'PowerOff';
  3166. PrintScreen = 'PrintScreen';
  3167. Hibernate = 'Hibernate';
  3168. Standby = 'Standby';
  3169. WakeUp = 'WakeUp';
  3170. AllCandidates = 'AllCandidates';
  3171. Alphanumeric = 'Alphanumeric';
  3172. CodeInput = 'CodeInput';
  3173. Compose = 'Compose';
  3174. Convert = 'Convert';
  3175. Dead = 'Dead';
  3176. FinalMode = 'FinalMode';
  3177. GroupFirst = 'GroupFirst';
  3178. GroupLast = 'GroupLast';
  3179. GroupNext = 'GroupNext';
  3180. GroupPrevious = 'GroupPrevious';
  3181. ModelChange = 'ModelChange';
  3182. NextCandidate = 'NextCandidate';
  3183. NonConvert = 'NonConvert';
  3184. PreviousCandidate = 'PreviousCandidate';
  3185. Process = 'Process';
  3186. SingleCandidate = 'SingleCandidate';
  3187. HangulMode = 'HangulMode';
  3188. HanjaMode = 'HanjaMode';
  3189. JunjaMode = 'JunjaMode';
  3190. Eisu = 'Eisu';
  3191. Hankaku = 'Hankaku';
  3192. Hiranga = 'Hiranga';
  3193. HirangaKatakana = 'HirangaKatakana';
  3194. KanaMode = 'KanaMode';
  3195. Katakana = 'Katakana';
  3196. Romaji = 'Romaji';
  3197. Zenkaku = 'Zenkaku';
  3198. ZenkakuHanaku = 'ZenkakuHanaku';
  3199. F1 = 'F1';
  3200. F2 = 'F2';
  3201. F3 = 'F3';
  3202. F4 = 'F4';
  3203. F5 = 'F5';
  3204. F6 = 'F6';
  3205. F7 = 'F7';
  3206. F8 = 'F8';
  3207. F9 = 'F9';
  3208. F10 = 'F10';
  3209. F11 = 'F11';
  3210. F12 = 'F12';
  3211. F13 = 'F13';
  3212. F14 = 'F14';
  3213. F15 = 'F15';
  3214. F16 = 'F16';
  3215. F17 = 'F17';
  3216. F18 = 'F18';
  3217. F19 = 'F19';
  3218. F20 = 'F20';
  3219. Soft1 = 'Soft1';
  3220. Soft2 = 'Soft2';
  3221. Soft3 = 'Soft3';
  3222. Soft4 = 'Soft4';
  3223. Decimal = 'Decimal';
  3224. Key11 = 'Key11';
  3225. Key12 = 'Key12';
  3226. Multiply = 'Multiply';
  3227. Add = 'Add';
  3228. NumClear = 'Clear';
  3229. Divide = 'Divide';
  3230. Subtract = 'Subtract';
  3231. Separator = 'Separator';
  3232. AppSwitch = 'AppSwitch';
  3233. Call = 'Call';
  3234. Camera = 'Camera';
  3235. CameraFocus = 'CameraFocus';
  3236. EndCall = 'EndCall';
  3237. GoBack = 'GoBack';
  3238. GoHome = 'GoHome';
  3239. HeadsetHook = 'HeadsetHook';
  3240. LastNumberRedial = 'LastNumberRedial';
  3241. Notification = 'Notification';
  3242. MannerMode = 'MannerMode';
  3243. VoiceDial = 'VoiceDial';
  3244. // TODO : Multimedia keys
  3245. // TODO : Audio control keys
  3246. // TODO : TV control keys
  3247. // TODO : Media controller keys
  3248. // TODO : Speech recognition keys
  3249. // TODO : Document keys
  3250. // TODO : Application selector keys
  3251. // TODO : Browser Control keys
  3252. end;
  3253. { TJSKeyboardEvent }
  3254. TJSKeyboardEvent = class external name 'KeyboardEvent' (TJSUIEvent)
  3255. private
  3256. FAltKey: Boolean; external name 'altKey';
  3257. FCode: string; external name 'code';
  3258. FCtrlKey: Boolean; external name 'ctrlKey';
  3259. FIsComposing: Boolean; external name 'isComposing';
  3260. FKey: String; external name 'key';
  3261. FLocale: string; external name 'locale';
  3262. FLocation: NativeInt; external name 'location';
  3263. FMetaKey: Boolean; external name 'metaKey';
  3264. FRepeat: Boolean; external name 'repeat';
  3265. FShiftKey: Boolean; external name 'shiftKey';
  3266. Public
  3267. function getModifierState(aKey : string) : Boolean;
  3268. property code : string read FCode;
  3269. Property altKey : Boolean read FAltKey;
  3270. property ctrlKey : Boolean read FCtrlKey;
  3271. property isComposing : Boolean read FIsComposing;
  3272. property Key : String read FKey;
  3273. property locale : string read FLocale;
  3274. property location : NativeInt read FLocation;
  3275. property metaKey : Boolean read FMetaKey;
  3276. property _repeat : Boolean read FRepeat;
  3277. property shiftKey : Boolean read FShiftKey;
  3278. end;
  3279. { MutationObserver }
  3280. TJSMutationObserver = Class;
  3281. TJSMutationRecord = record
  3282. type_ : string;
  3283. target : TJSNode;
  3284. addedNodes : TJSNodeList;
  3285. removedNodes : TJSNodeList;
  3286. previousSibling : TJSNode;
  3287. nextSibling : TJSNode;
  3288. attributeName : String;
  3289. attributeNamespace : String;
  3290. oldValue : String;
  3291. end;
  3292. TJSMutationRecordArray = array of TJSMutationRecord;
  3293. TJSMutationCallback = reference to procedure(mutations: TJSMutationRecordArray; observer: TJSMutationObserver); safecall;
  3294. TJSMutationObserverInit = record
  3295. attributes: boolean;
  3296. attributeOldValue: boolean;
  3297. characterData: boolean;
  3298. characterDataOldValue: boolean;
  3299. childList: boolean;
  3300. subTree: boolean;
  3301. attributeFilter: TJSArray;
  3302. end;
  3303. TJSMutationObserver = class external name 'MutationObserver' (TJSObject)
  3304. public
  3305. { constructor }
  3306. constructor new(mutationCallback: TJSMutationCallback); overload;
  3307. { public methods }
  3308. procedure observe(target: TJSNode); overload;
  3309. procedure observe(target: TJSNode; options: TJSMutationObserverInit); overload;
  3310. procedure observe(target: TJSNode; options: TJSObject); overload;
  3311. procedure disconnect;
  3312. function takeRecords: TJSMutationRecordArray;
  3313. end;
  3314. { --------------------------------------------------------------------
  3315. TJSWebSocket
  3316. --------------------------------------------------------------------}
  3317. TJSMessagePortArray = Array of TJSMessagePort;
  3318. { TJSMessageEvent }
  3319. TJSMessageEvent = class external name 'MessageEvent' (TEventListenerEvent)
  3320. private
  3321. FData: JSValue; external name 'data';
  3322. FLastEventID: String; external name 'lastEventID';
  3323. FOrigin: String; external name 'origin';
  3324. FPorts: TJSMessagePortArray; external name 'ports';
  3325. Public
  3326. Property Data : JSValue Read FData;
  3327. Property LastEventID : String Read FLastEventID;
  3328. Property Origin : String Read FOrigin;
  3329. Property Ports : TJSMessagePortArray Read FPorts;
  3330. end;
  3331. TJSWebSocket = class external name 'WebSocket' (TJSEventTarget)
  3332. Private
  3333. Furl : String; external name 'url';
  3334. FreadyState : Cardinal; external name 'readyState';
  3335. FbufferedAmount : NativeInt; external name 'bufferedAmount';
  3336. Fextensions : String; external name 'extensions';
  3337. Fprotocol : String; external name 'protocol';
  3338. Public
  3339. Const
  3340. CONNECTING = 0;
  3341. OPEN = 1;
  3342. CLOSING = 2;
  3343. CLOSED = 3;
  3344. Public
  3345. onopen : TJSEventHandler;
  3346. onerror : TJSEventHandler;
  3347. onclose : TJSEventHandler;
  3348. onmessage : TJSEventHandler;
  3349. binaryType : String;
  3350. constructor new(url : String); overload;
  3351. constructor new(url : String; protocol: String); overload;
  3352. constructor new(url : String; protocols: array of String); overload;
  3353. Procedure close; overload;
  3354. Procedure close(code : Cardinal); overload;
  3355. Procedure close(code : Cardinal; reason : String); overload;
  3356. Procedure send(data : String);
  3357. Procedure send(data : TJSBlob);
  3358. Procedure send(data : TJSArrayBuffer);
  3359. Procedure send(data : TJSTypedArray);
  3360. Property url : String Read Furl;
  3361. Property readyState : Cardinal Read FreadyState;
  3362. Property bufferedAmount : NativeInt Read FbufferedAmount;
  3363. Property extensions : String Read Fextensions;
  3364. Property protocol : String Read Fprotocol;
  3365. end;
  3366. TJSHTMLAudioTrack = class external name 'AudioTrack' (TJSObject)
  3367. end;
  3368. TJSHTMLAudioTrackList = class external name 'AudioTrackList' (TJSObject)
  3369. FLength : Integer; external name 'length';
  3370. function getitem(aIndex : nativeInt) : TJSHTMLAudioTrack ; external name '[]';
  3371. Public
  3372. onaddtrack : TJSEventHandler;
  3373. onchange : TJSEventHandler;
  3374. onremovetrack : TJSEventHandler;
  3375. Property Length : Integer Read FLength;
  3376. Property tracks [aIndex : NativeInt] : TJSHTMLAudioTrack read Getitem;
  3377. end;
  3378. TJSHTMLVideoTrack = class external name 'VideoTrack' (TJSObject)
  3379. end;
  3380. TJSHTMLVideoTrackList = class external name 'VideoTrackList' (TJSObject)
  3381. FLength : Integer; external name 'length';
  3382. function getitem(aIndex : nativeInt) : TJSHTMLVideoTrack ; external name '[]';
  3383. Public
  3384. onaddtrack : TJSEventHandler;
  3385. onchange : TJSEventHandler;
  3386. onremovetrack : TJSEventHandler;
  3387. Property Length : Integer Read FLength;
  3388. Property tracks [aIndex : NativeInt] : TJSHTMLVideoTrack read Getitem;
  3389. end;
  3390. TJSHTMLTextTrack = class external name 'TextTrack' (TJSObject)
  3391. end;
  3392. TJSHTMLTextTrackList = class external name 'TextTrackList' (TJSObject)
  3393. FLength : Integer; external name 'length';
  3394. function getitem(aIndex : nativeInt) : TJSHTMLTextTrack ; external name '[]';
  3395. Public
  3396. onaddtrack : TJSEventHandler;
  3397. onchange : TJSEventHandler;
  3398. onremovetrack : TJSEventHandler;
  3399. Property Length : Integer Read FLength;
  3400. Property tracks [aIndex : NativeInt] : TJSHTMLTextTrack read Getitem;
  3401. end;
  3402. { TJSHTMLMediaElement }
  3403. TJSMEdiaError = class external name 'MediaError' (TJSObject)
  3404. code : NativeInt;
  3405. message : string;
  3406. end;
  3407. TJSHTMLMediaStream = class external name 'MediaStream' (TJSObject);
  3408. TJSHTMLMediaController = class external name 'MediaController' (TJSObject);
  3409. TJSHTMLMediaElement = Class external name 'HTMLMediaElement' (TJSHTMLElement)
  3410. private
  3411. FAudioTracks: TJSHTMLAudioTrackList; external name 'audioTracks';
  3412. FVideoTracks: TJSHTMLVideoTrackList; external name 'videoTracks';
  3413. FTextTracks: TJSHTMLTextTrackList; external name 'textTracks';
  3414. FControlsList: TJSDOMTokenList; external name 'controlslist';
  3415. FCurrentSrc: String; external name 'currentSrc';
  3416. FDuration: Double; external name 'duration';
  3417. FEnded: Boolean;external name 'ended';
  3418. FError: TJSMEdiaError; external name 'error';
  3419. FNetworkState: NativeInt; external name 'networkState';
  3420. FPaused: boolean; external name 'paused';
  3421. FReadyState: NativeInt; external name 'readyState';
  3422. FSeeking: boolean; external name 'seeking';
  3423. FSinkID: string; external name 'sinkId';
  3424. Public
  3425. autoplay : Boolean;
  3426. buffered : Boolean;
  3427. controls : Boolean;
  3428. controller : TJSHTMLMediaController;
  3429. crossOrigin : String;
  3430. currentTime : Double;
  3431. defaultMuted : boolean;
  3432. defaultPlaybackRate : Double;
  3433. disableRemotePlayback : Boolean;
  3434. loop : boolean;
  3435. mediaGroup : string;
  3436. muted : boolean;
  3437. preload : string;
  3438. preservesPitch : boolean;
  3439. src : string;
  3440. srcObject : TJSHTMLMediaStream;
  3441. volume : double;
  3442. onencrypted : TJSEventHandler;
  3443. onwaitingforkey : TJSEventHandler;
  3444. function canPlayType(aType : String) : String;
  3445. Function captureStream : TJSHTMLMediaStream;
  3446. Procedure play;
  3447. Procedure load;
  3448. Procedure pause;
  3449. Property AudioTracks : TJSHTMLAudioTrackList Read FAudioTracks;
  3450. Property Controlslist : TJSDOMTokenList Read FControlsList;
  3451. Property CurrentSrc : String Read FCurrentSrc;
  3452. Property Duration : Double read FDuration;
  3453. Property Ended : Boolean read FEnded;
  3454. Property Error : TJSMEdiaError read FError;
  3455. property networkState : NativeInt read FNetworkState;
  3456. property paused : boolean read FPaused;
  3457. property readyState : NativeInt read FReadyState;
  3458. property seeking : boolean read FSeeking;
  3459. property sinkID : string read FSinkID;
  3460. Property TextTracks : TJSHTMLTextTrackList Read FTextTracks;
  3461. Property VideoTracks : TJSHTMLVideoTrackList Read FVideoTracks;
  3462. end;
  3463. TJSHTMLAudioElement = Class external name 'HTMLAudioElement' (TJSHTMLMediaElement)
  3464. end;
  3465. TJSHTMLVideoElement = Class external name 'HTMLVideoElement' (TJSHTMLMediaElement)
  3466. end;
  3467. { TJSHTMLStyleElement }
  3468. TJSHTMLStyleElement = class external name 'HTMLStyleElement' (TJSHTMLElement)
  3469. private
  3470. FSheet: TJSStyleSheet; external name 'sheet';
  3471. public
  3472. media : string;
  3473. type_ : string; external name 'style';
  3474. disabled : boolean;
  3475. property sheet : TJSStyleSheet read FSheet;
  3476. end;
  3477. TJSFormDataEntryValue = String;
  3478. TJSFormDataEntryValueArray = Array of TJSFormDataEntryValue;
  3479. TJSFormData = Class external name 'FormData' (TJSObject)
  3480. constructor new;
  3481. constructor new(aForm : TJSHTMLElement);
  3482. Procedure append(const aName,aValue : String);
  3483. Procedure append(const aName : String; aBlob : TJSBlob);
  3484. Procedure delete(const aName : String);
  3485. Function entries : TJSFormDataEntryValueArray;
  3486. Function get(const aName : String): TJSFormDataEntryValue;
  3487. function has(const aName : String): Boolean;
  3488. Function keys : TStringDynArray; reintroduce;
  3489. Procedure set_(const aName,aValue : String); external name 'set';
  3490. Procedure set_(const aName : String; aBlob : TJSBlob); external name 'set';
  3491. Function getAll(const aName : String) : TJSFormDataEntryValueArray;
  3492. Function values : TJSValueDynArray; reintroduce;
  3493. Property Entry[const aIndex : String] : TJSFormDataEntryValue read Get;
  3494. end;
  3495. TJSHTMLTemplateElement = class external name 'HTMLTemplateElement' (TJSHTMLElement)
  3496. content : TJSHTMLElement;
  3497. end;
  3498. TJSHTMLOrXMLDocument = Class external name 'Document' (TJSDocument)
  3499. end;
  3500. TJSHTMLDocument = Class external name 'HTMLDocument' (TJSHTMLOrXMLDocument)
  3501. end;
  3502. TJSXMLDocument = Class external name 'HTMLDocument' (TJSHTMLOrXMLDocument)
  3503. end;
  3504. TDOMParser = Class external name 'DOMParser' (TJSObject)
  3505. Public
  3506. Function parseFromString (aString,aMimetype : String): TJSHTMLOrXMLDocument;
  3507. end;
  3508. TOnChangeProcedure = reference to procedure;
  3509. TJSPermissionDescriptor = class external name 'Object' (TJSObject)
  3510. public
  3511. name: String;
  3512. userVisibleOnly: Boolean;
  3513. sysex: Boolean;
  3514. end;
  3515. TJSPermissionStatus = class external name 'PermissionStatus' (TJSObject)
  3516. private
  3517. FState: String; external name 'state';
  3518. public
  3519. onchange: TOnChangeProcedure;
  3520. property state: String read FState;
  3521. end;
  3522. TJSPermissions = class external name 'Permissions' (TJSObject)
  3523. public
  3524. function query(descriptor: TJSPermissionDescriptor): TJSPermissionStatus; async;
  3525. end;
  3526. TJSFileSystemHandlePermissionDescriptor = class external name 'Object' (TJSObject)
  3527. public
  3528. mode: String;
  3529. end;
  3530. TJSFileSystemCreateWritableOptions = class external name 'Object' (TJSObject)
  3531. public
  3532. keepExistingData: Boolean;
  3533. end;
  3534. TJSFileSystemWritableFileStream = class;
  3535. TJSFileSystemHandle = class external name 'FileSystemHandle' (TJSObject)
  3536. private
  3537. FKind: String; external name 'kind';
  3538. FName: String; external name 'name';
  3539. public
  3540. function isSameEntry(const Handle: TJSFileSystemHandle): Boolean;
  3541. function queryPermission(descriptor: TJSFileSystemHandlePermissionDescriptor): String;
  3542. function requestPermission(descriptor: TJSFileSystemHandlePermissionDescriptor): String;
  3543. property kind: String read FKind;
  3544. property name: String read FName;
  3545. end;
  3546. TJSFileSystemFileHandle = class external name 'FileSystemFileHandle' (TJSFileSystemHandle)
  3547. public
  3548. function getFile: TJSHTMLFile; async;
  3549. function createWritable: TJSFileSystemWritableFileStream; overload;
  3550. function createWritable(options: TJSFileSystemCreateWritableOptions): TJSFileSystemWritableFileStream; overload;
  3551. end;
  3552. TJSGetFileHandleOptions = class external name 'Object'
  3553. public
  3554. create: Boolean;
  3555. constructor new;
  3556. end;
  3557. TJSRemoveEntryOptions = class external name 'Object' (TJSObject)
  3558. recursive: Boolean;
  3559. end;
  3560. TJSFileSystemDirectoryHandle = class external name 'FileSystemDirectoryHandle' (TJSFileSystemHandle)
  3561. public
  3562. function entries: TJSObject;
  3563. function getDirectoryHandle(name: String): TJSFileSystemDirectoryHandle; async; overload;
  3564. function getDirectoryHandle(name: String; options: TJSGetFileHandleOptions): TJSFileSystemDirectoryHandle; async; overload;
  3565. function getFileHandle(name: String): TJSFileSystemFileHandle; async; overload;
  3566. function getFileHandle(name: String; options: TJSGetFileHandleOptions): TJSFileSystemFileHandle; async; overload;
  3567. function keys: TJSFileSystemDirectoryHandleArray; reintroduce;
  3568. function removeEntry(name: String): TJSPromise;
  3569. function removeEntry(name: String; options: TJSRemoveEntryOptions): TJSPromise;
  3570. function resolve(possibleDescendant: String): TStringDynArray; async;
  3571. function values(possibleDescendant: String): TJSFileSystemDirectoryHandleArray; reintroduce; async;
  3572. end;
  3573. TJSFileSystemWritableFileStream = class external name 'FileSystemWritableFileStream' (TJSWritableStream)
  3574. public
  3575. function seek(position: NativeInt): TJSPromise;
  3576. function write(data: JSValue): TJSPromise;
  3577. function truncate(size: NativeInt): TJSPromise;
  3578. end;
  3579. TJSShowOpenFilePickerTypeOptions = class external name 'Object' (TJSObject)
  3580. public
  3581. description: String;
  3582. accept: TJSObject;
  3583. end;
  3584. TJSShowOpenFilePickerOptions = class external name 'Object' (TJSObject)
  3585. public
  3586. multiple: Boolean;
  3587. excludeAcceptAllOption: Boolean;
  3588. types: array of TJSShowOpenFilePickerTypeOptions;
  3589. end;
  3590. TJSShowSaveFilePickerOptionsAccept = class external name 'Object' (TJSObject)
  3591. public
  3592. description: String;
  3593. accept: TStringDynArray;
  3594. end;
  3595. TJSShowSaveFilePickerOptions = class external name 'Object' (TJSObject)
  3596. public
  3597. excludeAcceptAllOption: Boolean;
  3598. accept: array of TJSShowSaveFilePickerOptionsAccept;
  3599. end;
  3600. var
  3601. document : TJSDocument; external name 'document';
  3602. window : TJSWindow; external name 'window';
  3603. console : TJSConsole; external name 'window.console';
  3604. implementation
  3605. end.