]> source.dussan.org Git - svg.js.git/commitdiff
Update typescript definition file. 974/head
authorVeasna Sreng <sreng.veasna@gmail.com>
Fri, 1 Mar 2019 14:50:50 +0000 (21:50 +0700)
committerVeasna Sreng <sreng.veasna@gmail.com>
Fri, 1 Mar 2019 14:50:50 +0000 (21:50 +0700)
svg.js.d.ts

index 7ae6cc41841f316919d33a2e8316c0b7db5de4b8..f35ce5682a73f2265f45972a6968dba2b1cce099 100644 (file)
@@ -1,3 +1,7 @@
+// Type definitions for @svgdotjs version 3.x\r
+// Project: @svgdotjs/svg.js\r
+\r
+// trick to keep reference to Array build-in type\r
 declare class BuiltInArray<T> extends Array<T> { }\r
 \r
 declare module "@svgdotjs/svg.js" {\r
@@ -66,7 +70,9 @@ declare module "@svgdotjs/svg.js" {
             ease: string;\r
             delay: number;\r
         }\r
+\r
     }\r
+\r
     let easing: {\r
         '-'(pos: number): number;\r
         '<>'(pos: number): number;\r
@@ -109,7 +115,6 @@ declare module "@svgdotjs/svg.js" {
         instance: Element;\r
     }\r
 \r
-    // array.js\r
     // ************ Standard object/option/properties declaration ************\r
 \r
     type AttrNumberValue = number | "auto"\r
@@ -177,37 +182,74 @@ declare module "@svgdotjs/svg.js" {
     }\r
 \r
     /**\r
-     *\r
+     * SVG Circle attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle\r
      */\r
-    interface ShapeElementStyle {\r
-\r
+    interface CircleAttr extends PathBaseAttr, GlobalAttr {\r
+        cx?: number | string\r
+        cy?: number | string\r
+        r?: number | string\r
     }\r
 \r
-    interface PathLikeElementStyle {\r
-\r
+    /**\r
+     * SVG Ellipse attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse\r
+     */\r
+    interface EllipseAttr extends PathBaseAttr, GlobalAttr {\r
+        cx?: number | string\r
+        cy?: number | string\r
+        rx?: number | string\r
+        ry?: number | string\r
     }\r
 \r
-    interface TextElementStyle {\r
-\r
+    /**\r
+     * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path\r
+     */\r
+    interface PathAttr extends PathBaseAttr, GlobalAttr {\r
+        d?: string\r
     }\r
 \r
-    interface GraphicElementStyle {\r
-\r
+    /**\r
+     * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon\r
+     * or https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline\r
+     */\r
+    interface PolyAttr extends PathBaseAttr, GlobalAttr {\r
+        points?: string\r
     }\r
 \r
-    interface ContainerElementStyle {\r
-\r
+    /**\r
+     * SVG Text attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text\r
+     */\r
+    interface TextAttr extends GlobalAttr {\r
+        x?: number | string\r
+        y?: number | string\r
+        dx?: number | string\r
+        dy?: number | string\r
+        lengthAdjust?: "spacing" | "spacingAndGlyphs"\r
+        textLength?: number | string\r
+        // see https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList\r
+        // or https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#List-of-Ts\r
+        // TODO: tbd\r
+        // rotate?: string\r
     }\r
 \r
-    interface CoordinateSystemElementStyle {\r
-\r
+    /**\r
+     * SVG TextPath attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath\r
+     */\r
+    interface TextPathAttr extends GlobalAttr {\r
+        href?: string\r
+        lengthAdjust?: "spacing" | "spacingAndGlyphs"\r
+        method?: "align" | "stretch"\r
+        side?: "left" | "right"\r
+        spacing?: "auto" | "exact"\r
+        startOffset?: number | string\r
+        textLength?: number | string\r
+        // See https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath\r
+        // TODO: tbd as there is no reference to see the detail of how it would look like\r
+        // path?: string\r
     }\r
 \r
-    type SVGStyleDeclaration = ShapeElementStyle | PathLikeElementStyle | TextElementStyle | GraphicElementStyle | ContainerElementStyle | CoordinateSystemElementStyle\r
-\r
     /**\r
      * A generic Dom Box object.\r
-     * Notice: Object is still in experiment state and document is not complete (Draft)\r
+     * Notice: DOMRect is still in experiment state and document is not complete (Draft)\r
      * See https://developer.mozilla.org/en-US/docs/Web/API/DOMRect\r
      */\r
     interface DOMRect {\r
@@ -257,9 +299,6 @@ declare module "@svgdotjs/svg.js" {
     type AttrTypeMapping<T> =\r
         T extends Rect ? RectAttr : GlobalAttr\r
 \r
-    type StyleTypeMapping<T> =\r
-        T extends Element ? SVGStyleDeclaration : CSSStyleDeclaration\r
-\r
     type ElementAlias = Dom | Svg | Rect | Line | Polygon | Polyline | Ellipse | ClipPath | Use |\r
         Text | Path | TextPath | Circle | G | Gradient | Image | Element\r
 \r
@@ -270,6 +309,10 @@ declare module "@svgdotjs/svg.js" {
     // ********** Locate in directory src/types **********\r
 \r
     // SVGArray.js\r
+    // Notice: below class is defined the name as `Array` rather than `SVGArray`.\r
+    // The purpose of giving the name as `Array` is to allow it to be aligned with SVG.JS export type\r
+    // as SVG.JS export it as `Array` (to be precise `SVG.Array`) so reading through JS documentation\r
+    // should be more straightforward.\r
     /**\r
      * Type alias to native array.\r
      *\r
@@ -316,8 +359,6 @@ declare module "@svgdotjs/svg.js" {
     class PointArray extends Array<ArrayXY> {\r
         constructor();\r
         constructor(array?: ArrayAlias<ArrayXY> | number[]);\r
-        // Note: override constructor from SVGArray to allow array of number\r
-        new(array?: ArrayAlias<ArrayXY> | number[]);\r
 \r
         toLine(): LineAttr;\r
         at(pos: number): PointArray;\r
@@ -460,6 +501,9 @@ declare module "@svgdotjs/svg.js" {
         e: number;\r
         f: number;\r
 \r
+        // *** To Be use by Test Only in restrict mode ***\r
+        [key: string]: any\r
+\r
         clone(): Matrix;\r
         transform(o: MatrixLike | MatrixTransformParam): Matrix\r
         compose(o: MatrixExtract): Matrix\r
@@ -502,9 +546,13 @@ declare module "@svgdotjs/svg.js" {
         toArray(): T[]\r
     }\r
 \r
+    class EventObject {\r
+        [key: string]: EventObject;\r
+    }\r
+\r
     // EventTarget.js\r
-    interface EventTarget {\r
-        events: Object\r
+    class EventTarget {\r
+        events: EventObject\r
 \r
         addEventListener(): void\r
         dispatch(event: Event | string, data?: object): Event\r
@@ -666,7 +714,6 @@ declare module "@svgdotjs/svg.js" {
         fromArray(a: Object): this\r
     }\r
 \r
-    // TODO: check & verify ??????\r
     class TransformBag {\r
         constructor()\r
         constructor(a: number[])\r
@@ -754,16 +801,6 @@ declare module "@svgdotjs/svg.js" {
         constructor(options: object);\r
         constructor(options: Controller);\r
 \r
-        /**\r
-         * DO NOT USE any of this, it only for testing purpose\r
-         */\r
-        _time: number\r
-        _duration: number\r
-        _wait: number\r
-        _times: number\r
-        _swing: boolean\r
-        _reverse: boolean\r
-\r
         static sanitise: (duration?: TimeLike, delay?: number, when?: string) => Object\r
 \r
         element(): Element\r
@@ -848,7 +885,11 @@ declare module "@svgdotjs/svg.js" {
         cancelImmediate(o: Object): void\r
     }\r
 \r
-    type ParentTypeAlias = Svg | G | A;\r
+    // use with parent query\r
+    type ParentTypeAlias = typeof Svg | typeof G | typeof A;\r
+\r
+    // use with putIn\r
+    type ParentClassAlias = Svg | G | A;\r
 \r
     /**\r
      * Just fancy type alias to refer to css query selector.\r
@@ -866,19 +907,20 @@ declare module "@svgdotjs/svg.js" {
         T extends Element ? ParentQueryAlias | Dom : keyof HTMLElementTagNameMap | Dom\r
 \r
     type ParentQueryResultMapping<T> =\r
-        T extends Tspan | TextPath ? ParentTypeAlias | Text | ClipPath | Dom :\r
-        T extends Shape ? ParentTypeAlias | ClipPath | Dom : ParentTypeAlias | Dom\r
+        T extends Tspan | TextPath ? ParentClassAlias | Text | ClipPath | Dom :\r
+        T extends Circle ? ParentClassAlias | Text | ClipPath | Mask | Dom :\r
+        T extends Shape ? ParentClassAlias | ClipPath | Dom : ParentClassAlias | Dom\r
 \r
     type PutInMapping<T> =\r
-        T extends Svg ? ParentTypeAlias | Dom | HTMLElement | string :\r
-        T extends Shape ? ParentTypeAlias | ClipPath | string :\r
-        T extends Element ? ParentTypeAlias | string : HTMLElement | string\r
+        T extends Svg ? ParentClassAlias | Dom | HTMLElement | string :\r
+        T extends Shape ? ParentClassAlias | ClipPath | string :\r
+        T extends Element ? ParentClassAlias | string : HTMLElement | string\r
 \r
     type PutInResultMapping<T> =\r
         T extends Svg ? ParentTypeAlias | Dom :\r
         T extends Element ? ParentTypeAlias : Dom\r
 \r
-    class Dom implements EventTarget {\r
+    class Dom extends EventTarget {\r
         node: HTMLElement | SVGElement;\r
         type: string;\r
 \r
@@ -943,7 +985,6 @@ declare module "@svgdotjs/svg.js" {
          * the instance itself. For example, G element will only return GlobalAttr where Rect\r
          * will return RectAttr instead.\r
          */\r
-        // attr<T extends this>(): AttrTypeMapping<T>;\r
         attr(): any;\r
         /**\r
          * Add or update the attribute from the SVG Element. To remove the attribute from the element set value to null\r
@@ -987,11 +1028,11 @@ declare module "@svgdotjs/svg.js" {
         toggleClass(name: string): this\r
 \r
         // prototype method register in css.js\r
-        css<T extends this>(): StyleTypeMapping<T>;\r
-        css<T extends this>(style: string[]): StyleTypeMapping<T>;\r
+        css(): CSSStyleDeclaration;\r
         css(style: string): string\r
-        css<T extends this>(style: StyleTypeMapping<T>): this\r
         css(style: string, val: any): this\r
+        css(style: CSSStyleDeclaration): this\r
+        css(style: string[]): CSSStyleDeclaration;\r
         show(): this\r
         hide(): this\r
         visible(): boolean\r
@@ -1003,7 +1044,6 @@ declare module "@svgdotjs/svg.js" {
         forget(...keys: string[]): this;\r
         forget(): this;\r
         memory(): Object;\r
-        events: Object\r
 \r
         addEventListener(): void\r
         dispatch(event: Event | string, data?: object): Event\r
@@ -1019,6 +1059,7 @@ declare module "@svgdotjs/svg.js" {
 \r
     // clip.js\r
     class ClipPath extends Container {\r
+        constructor();\r
         constructor(node?: SVGClipPathElement);\r
         constructor(attr: Object);\r
         node: SVGClipPathElement;\r
@@ -1043,6 +1084,7 @@ declare module "@svgdotjs/svg.js" {
         flatten(parent: Dom, depth?: number): this;\r
         gradient(type: string, block?: (stop: Gradient) => void): Gradient;\r
         group(): G;\r
+\r
         image(): Image;\r
         image(href?: string, callback?: (e: Event) => void): Image;\r
         line(points?: PointArrayAlias): Line;\r
@@ -1129,6 +1171,7 @@ declare module "@svgdotjs/svg.js" {
         after(element: Element): Element;\r
         animate(duration?: number, ease?: string, delay?: number): Runner;\r
         animate(info: { ease?: string; duration?: number; delay?: number }): Runner;\r
+        delay(by: number, when?: string): Runner\r
         attr(): any;\r
         attr(name: string, value: any, namespace?: string): this;\r
         attr(name: string): any;\r
@@ -1144,11 +1187,6 @@ declare module "@svgdotjs/svg.js" {
         clipper(): ClipPath;\r
         clipWith(element: Element): this;\r
         clone(): this;\r
-        css(): Object;\r
-        css(style: Object[]): Object;\r
-        css(style: string, value: any): this;\r
-        css(style: string): any;\r
-        css(styles: Object): this;\r
         ctm(): Matrix;\r
         cx(): number;\r
         cx(x: number): this;\r
@@ -1165,8 +1203,8 @@ declare module "@svgdotjs/svg.js" {
         event(): Event | CustomEvent;\r
         fill(): any;\r
         fill(color: string): this;\r
-        fill(fill: { color?: string; opacity?: number, rule?: string }): this;\r
-        fill(image: Image): this;\r
+        fill(color: Color | ColorLike): this;\r
+        fill(color: FillData): this;\r
         fill(pattern: Element): this;\r
         fire(event: Event): this;\r
         fire(event: string, data?: any): this;\r
@@ -1293,7 +1331,8 @@ declare module "@svgdotjs/svg.js" {
     }\r
     class Circle extends Shape implements CircleMethods {\r
         constructor(node?: SVGCircleElement);\r
-        constructor(attr: Object);\r
+        constructor(attr: CircleAttr)\r
+        \r
         node: SVGCircleElement;\r
 \r
         rx(rx: number): this;\r
@@ -1304,8 +1343,8 @@ declare module "@svgdotjs/svg.js" {
     }\r
     class Ellipse extends Shape implements CircleMethods {\r
         node: SVGEllipseElement;\r
+        constructor(attr: EllipseAttr)\r
         constructor(node?: SVGEllipseElement);\r
-        constructor(attr: Object);\r
 \r
         rx(rx: number): this;\r
         rx(): this;\r
@@ -1334,10 +1373,15 @@ declare module "@svgdotjs/svg.js" {
         at(offset?: number, color?: ColorAlias, opacity?: number): Stop;\r
         at(opts: StopProperties): Stop;\r
         url(): string;\r
-        url(...params: any[]): never;\r
         toString(): string;\r
+        targets(): List<Element>\r
+        bbox(): Box\r
+\r
+        // gradiented.js\r
         from(x: number, y: number): this;\r
         to(x: number, y: number): this;\r
+\r
+        // TODO: check with main.js\r
         radius(x: number, y?: number): this;\r
         targets(): List<Element>\r
         bbox(): Box\r
@@ -1375,11 +1419,13 @@ declare module "@svgdotjs/svg.js" {
     type PointArrayAlias = number[] | ArrayXY[] | PointArray | string;\r
 \r
     class Line extends Shape {\r
+        constructor(attr: LineAttr)\r
         constructor(node?: SVGLineElement);\r
-        constructor(attr: Object);\r
+\r
         node: SVGLineElement;\r
+\r
         array(): PointArray;\r
-        plot(): PathArray\r
+        plot(): PointArray\r
         plot(points?: PointArrayAlias): this;\r
         plot(x1: number, y1: number, x2: number, y2: number): this;\r
         move(x: number, y: number): this;\r
@@ -1389,7 +1435,12 @@ declare module "@svgdotjs/svg.js" {
     }\r
 \r
     // marker.js\r
+    // TODO: check register method marker\r
     class Marker extends Container {\r
+        constructor();\r
+\r
+        node: SVGMarkerElement;\r
+\r
         ref(x: string | number, y: string | number): this;\r
         update(block: (marker: Marker) => void): this;\r
         toString(): string;\r
@@ -1405,21 +1456,19 @@ declare module "@svgdotjs/svg.js" {
 \r
     // path.js\r
     class Path extends Shape {\r
+        constructor(attr: PathAttr)\r
         constructor(node?: SVGPathElement);\r
-        constructor(attr: Object);\r
-        /**\r
-         * DO NOT USE, it only for testing purpose\r
-         */\r
-        _array: PathArray\r
-\r
+        \r
         node: SVGPathElement;\r
 \r
         morphArray: PathArray;\r
         array(): PathArray;\r
         plot(): PathArray;\r
         plot(d: PathArrayAlias): this;\r
-        marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;\r
-        marker(position: string, marker: Marker): Marker;\r
+        marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): this;\r
+        marker(position: string, marker: Marker): this;\r
+\r
+        // sugar.js\r
         length(): number;\r
         pointAt(length: number): { x: number, y: number };\r
         text(text: string): TextPath\r
@@ -1428,6 +1477,7 @@ declare module "@svgdotjs/svg.js" {
 \r
     }\r
 \r
+\r
     // pattern.js\r
     class Pattern extends Container {\r
         url(): string;\r
@@ -1438,11 +1488,6 @@ declare module "@svgdotjs/svg.js" {
 \r
     // poly.js\r
     interface poly {\r
-        /**\r
-         * DO NOT USE THIS, it for test purpose only\r
-         */\r
-        _array: PointArray\r
-\r
         array(): PointArray;\r
         plot(): PointArray\r
         plot(p: PointArrayAlias): this;\r
@@ -1465,9 +1510,9 @@ declare module "@svgdotjs/svg.js" {
 \r
     class Polyline extends Shape implements poly, pointed {\r
         constructor(node?: SVGPolylineElement);\r
-        constructor(attr: Object);\r
+        constructor(attr: PolyAttr);\r
+\r
         node: SVGPolylineElement;\r
-        _array: PointArray\r
 \r
         array(): PointArray;\r
         plot(): PointArray\r
@@ -1480,9 +1525,9 @@ declare module "@svgdotjs/svg.js" {
 \r
     class Polygon extends Shape implements poly {\r
         constructor(node?: SVGPolygonElement);\r
-        constructor(attr: Object);\r
+        constructor(attr: PolyAttr)\r
+\r
         node: SVGPolygonElement;\r
-        _array: PointArray;\r
         array(): PointArray;\r
         plot(): PointArray;\r
         plot(p: PointArrayAlias): this;\r
@@ -1494,7 +1539,7 @@ declare module "@svgdotjs/svg.js" {
 \r
     class Rect extends Shape {\r
         constructor(node?: SVGRectElement);\r
-        constructor(attr: Object);\r
+        constructor(attr: RectAttr)\r
         node: SVGRectElement;\r
         radius(x: number, y?: number): this;\r
     }\r
@@ -1538,10 +1583,7 @@ declare module "@svgdotjs/svg.js" {
     // text.js\r
     class Text extends Shape implements Textable {\r
         constructor(node?: SVGElement);\r
-        constructor(attr: Object);\r
-        // for the purpose of testing only\r
-        _rebuild: boolean\r
-        _build: boolean\r
+        constructor(attr: TextAttr)\r
 \r
         clone(): this;\r
         text(): string;\r
@@ -1551,10 +1593,8 @@ declare module "@svgdotjs/svg.js" {
         leading(leading: NumberAlias): this;\r
         rebuild(enabled: boolean): this;\r
         build(enabled: boolean): this;\r
-        plain(text: string): this;\r
-        tspan(text: string): Tspan;\r
-        tspan(block: (tspan: Tspan) => void): this;\r
         clear(): this;\r
+        plain(text: string): this;\r
         length(): number;\r
         get(i: number): Tspan;\r
         path(): TextPath\r
@@ -1566,11 +1606,15 @@ declare module "@svgdotjs/svg.js" {
         ay(): string\r
         ay(y: string): this\r
         amove(x: number, y: number): this\r
+\r
+        // main.js, from extend/copy prototypes from Tspan\r
+        tspan(text: string): Tspan;\r
+        tspan(block: (tspan: Tspan) => void): this;\r
     }\r
 \r
-    class Tspan extends Shape implements Textable {\r
+    class Tspan extends Text implements Textable {\r
         constructor(node?: SVGElement);\r
-        constructor(attr: Object);\r
+        constructor(attr: TextAttr);\r
         dx(): number;\r
         dx(x: NumberAlias): this;\r
         dy(): number;\r
@@ -1581,12 +1625,15 @@ declare module "@svgdotjs/svg.js" {
         length(): number;\r
         text(): string;\r
         text(text: string): this;\r
+        text(block: (text: this) => void): this;\r
         plain(text: string): this;\r
     }\r
 \r
     // textpath.js\r
     class TextPath extends Text {\r
         constructor();\r
+        constructor(attr: TextPathAttr)\r
+\r
         array(): Array<any>\r
         plot(): PathArray\r
         plot(d: string): this\r