From 44f9c22f189ed0ecebf63c770f5faa79d93f29a7 Mon Sep 17 00:00:00 2001 From: Michael Van Canneyt <michael@freepascal.org> Date: Fri, 14 Feb 2025 15:28:04 +0100 Subject: [PATCH] * Added closest and some other elements to TJSElement --- packages/rtl/src/web.pas | 74 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/packages/rtl/src/web.pas b/packages/rtl/src/web.pas index b9de8da..cc8d360 100644 --- a/packages/rtl/src/web.pas +++ b/packages/rtl/src/web.pas @@ -39,6 +39,9 @@ Type TJSElement = class; TJSCSSStyleSheet = Class; TJSNodeFilter = Class; + TJSShadowRoot = class; + TJSAnimation = class; + TJSAnimationTimeline = class; TJSMouseEvent = Class; TJSWheelEvent = Class; @@ -406,7 +409,31 @@ Type end; TJSClientRectArray = array of TJSClientRect; - + + TJSCheckVisibilityOptions = class external name 'Object' (TJSObject) + contentVisibilityAuto : Boolean; + opacityProperty : Boolean; + visibilityProperty : Boolean; + checkOpacity : Boolean; + checkVisibility : Boolean; + end; + + TJSAttachShadowOptions = class external name 'Object' (TJSObject) + mode : string; + clonable : boolean; + delegatesFocus : boolean; + serializable : boolean; + slotAssignment : string; + end; + + TJSAnimateOptions = class external name 'Object' (TJSObject) + id : string; + rangeEnd: JSValue; + rangeStart : JSValue; + timeline : TJSAnimationTimeline; + + end; + TJSElement = class external name 'Element' (TJSNode) Private FAttributes : TJSNamedNodeMap; external name 'attributes'; @@ -439,10 +466,20 @@ Type outerHTML : string; scrollLeft : NativeInt; scrollTop : NativeInt; + function animate(keyframes : TJSArray; options : TJSAnimateOptions) : TJSAnimation; procedure append(aText : String); overload; procedure append(aNode : TJSElement); overload; procedure append(aText : String; aNode : TJSElement); varargs; overload; procedure append(aNode1,aNode2: TJSElement); varargs; overload; + function attachShadow : TJSShadowRoot; + function attachShadow(aOptions : TJSAttachShadowOptions) : TJSShadowRoot; + procedure before(aText : String); overload; + procedure before(aText : String; aNode : TJSElement); varargs; overload; + procedure before(aNode : TJSElement); overload; + procedure before(aNode1,aNode2 : TJSElement); overload; varargs; + function checkVisibility : boolean; + function checkVisibility(Options : TJSCheckVisibilityOptions) : Boolean; + function closest(aSelector : String) : TJSElement; function getAttribute(aName : string) : string; function getAttributeNode(aName : string) : TJSAttr; function getAttributeNodeNS(aNameSpace, aName : string) : TJSAttr; @@ -3304,6 +3341,41 @@ Type procedure unobserve(aTarget : TJSElement); end; + TJSAnimationTimeline = class external name 'AnimationTimeline' (TJSObject) + currentTime : nativeInt; + end; + + TJSAnimationTiming = class external name 'Object' (TJSObject) + delay : NativeInt; + direction : string; + duration: NativeInt; + durationString : string external name 'duration'; + easing : string; + endDelay : NativeInt; + fill : string; + iterations : NativeInt; + iterationStart : NativeInt; + end; + + TJSAnimationEffect = class external name 'AnimationEffect' (TJSObject) + getTiming : TJSAnimationTiming; + end; + + TJSAnimation = class external name 'Animation' (TJSObject) + currentTime : nativeInt; + effect : TJSAnimationEffect; + id : string; + overallProgress : double; + pending : boolean; + playbackRate : integer; + playState : string; + ready : TJSPromise; + replaceState : String; + startTime : double; + timeline : TJSAnimationTimeline; + end; + + var document : TJSDocument; external name 'document'; window : TJSWindow; external name 'window';