12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916 |
- // Type definitions for @svgdotjs version 3.x
- // Project: @svgdotjs/svg.js
-
- // trick to keep reference to Array build-in type
- declare class BuiltInArray<T> extends Array<T> {}
-
- // trick to have nice attribute list for CSS
- declare type CSSStyleName = Exclude<
- keyof CSSStyleDeclaration,
- 'parentRule' | 'length'
- >
-
- declare module '@svgdotjs/svg.js' {
- function SVG(): Svg
- /**
- * @param selectorOrHtml pass in a css selector or an html/svg string
- * @param isHTML only used if first argument is an html string. Will treat the svg/html as html and not svg
- */
- function SVG(selectorOrHtml: QuerySelector, isHTML?: boolean): Element
- function SVG<T>(el: T): SVGTypeMapping<T>
- function SVG(domElement: HTMLElement): Element
-
- function eid(name: string): string
- function get(id: string): Element
-
- function create(name: string): any
- function extend(parent: object, obj: object): void
- function invent(config: object): any
- function adopt(node: HTMLElement): Element
- function prepare(element: HTMLElement): void
- function getClass(name: string): Element
-
- function on(
- el: Node | Window,
- events: string,
- cb: EventListener,
- binbind?: any,
- options?: AddEventListenerOptions
- ): void
- function on(
- el: Node | Window,
- events: Event[],
- cb: EventListener,
- binbind?: any,
- options?: AddEventListenerOptions
- ): void
-
- function off(
- el: Node | Window,
- events?: string,
- cb?: EventListener | number,
- options?: AddEventListenerOptions
- ): void
- function off(
- el: Node | Window,
- events?: Event[],
- cb?: EventListener | number,
- options?: AddEventListenerOptions
- ): void
-
- function dispatch(
- node: Node | Window,
- event: Event,
- data?: object,
- options?: object
- ): Event
-
- function find(query: QuerySelector): List<Element>
- function findOne(query: QuerySelector): Element | null
-
- function getWindow(): Window
- function registerWindow(win: Window, doc: Document): void
- function restoreWindow(): void
- function saveWindow(): void
- function withWindow(
- win: Window,
- fn: (win: Window, doc: Document) => void
- ): void
-
- let utils: {
- map(array: any[], block: Function): any
- filter(array: any[], block: Function): any
- radians(d: number): number
- degrees(r: number): number
- camelCase(s: string): string
- unCamelCase(s: string): string
- capitalize(s: string): string
- // proportionalSize
- // getOrigin
- }
-
- let defaults: {
- attrs: {
- 'fill-opacity': number
- 'stroke-opacity': number
- 'stroke-width': number
- 'stroke-linejoin': string
- 'stroke-linecap': string
- fill: string
- stroke: string
- opacity: number
- x: number
- y: number
- cx: number
- cy: number
- width: number
- height: number
- r: number
- rx: number
- ry: number
- offset: number
- 'stop-opacity': number
- 'stop-color': string
- 'font-size': number
- 'font-family': string
- 'text-anchor': string
- }
- timeline: {
- duration: number
- ease: string
- delay: number
- }
- }
-
- // let easing: {
- // '-'(pos: number): number;
- // '<>'(pos: number): number;
- // '>'(pos: number): number;
- // '<'(pos: number): number;
- // bezier(x1: number, y1: number, x2: number, y2: number): (t: number) => number;
- // steps(steps: number, stepPosition?: "jump-start"|"jump-end"|"jump-none"|"jump-both"|"start"|"end"): (t: number, beforeFlag?: boolean) => number;
- // }
-
- let regex: {
- delimiter: RegExp
- dots: RegExp
- hex: RegExp
- hyphen: RegExp
- isBlank: RegExp
- isHex: RegExp
- isImage: RegExp
- isNumber: RegExp
- isPathLetter: RegExp
- isRgb: RegExp
- numberAndUnit: RegExp
- numbersWithDots: RegExp
- pathLetters: RegExp
- reference: RegExp
- rgb: RegExp
- transforms: RegExp
- whitespace: RegExp
- }
-
- let namespaces: {
- ns: string
- xmlns: string
- xlink: string
- svgjs: string
- }
-
- interface LinkedHTMLElement extends HTMLElement {
- instance: Element
- }
-
- // ************ Standard object/option/properties declaration ************
-
- type AttrNumberValue = number | 'auto'
-
- /**
- * The SVG core attributes are all the common attributes that can be specified on any SVG element.
- * More information see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Core
- */
- interface CoreAttr {
- id?: string
- lang?: string
- tabindex?: number
- 'xml:lang'?: string
- }
-
- /**
- * The SVG styling attributes are all the attributes that can be specified on any SVG element to apply CSS styling effects.
- * More information see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Styling
- */
- interface StylingAttr {
- /**
- * a valid HTML class name
- */
- class?: string
- /**
- * SVG css style string format. It all can be find here https://www.w3.org/TR/SVG/styling.html#StyleAttribute
- */
- style?: string
- }
-
- /**
- * A global attribute that can be use with any svg element
- */
- interface GlobalAttr extends CoreAttr, StylingAttr {}
-
- // TODO: implement SVG Presentation Attributes. See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation
-
- interface PathBaseAttr {
- pathLength?: number
- }
-
- interface RadiusAxisAttr {
- rx?: AttrNumberValue
- ry?: AttrNumberValue
- }
-
- /**
- * SVG Rectangle attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect
- */
- interface RectAttr extends RadiusAxisAttr, PathBaseAttr, GlobalAttr {
- x?: number
- y?: number
- width: AttrNumberValue
- height: AttrNumberValue
- }
-
- /**
- * SVG Line attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line
- */
- interface LineAttr extends PathBaseAttr, GlobalAttr {
- x1?: number
- y1?: number
- x2?: number
- y2?: number
- }
-
- /**
- * SVG Circle attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle
- */
- interface CircleAttr extends PathBaseAttr, GlobalAttr {
- cx?: number | string
- cy?: number | string
- r?: number | string
- }
-
- /**
- * SVG Ellipse attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse
- */
- interface EllipseAttr extends PathBaseAttr, GlobalAttr {
- cx?: number | string
- cy?: number | string
- rx?: number | string
- ry?: number | string
- }
-
- /**
- * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path
- */
- interface PathAttr extends PathBaseAttr, GlobalAttr {
- d?: string
- }
-
- /**
- * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon
- * or https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline
- */
- interface PolyAttr extends PathBaseAttr, GlobalAttr {
- points?: string
- }
-
- /**
- * SVG Text attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text
- */
- interface TextAttr extends GlobalAttr {
- x?: number | string
- y?: number | string
- dx?: number | string
- dy?: number | string
- lengthAdjust?: 'spacing' | 'spacingAndGlyphs'
- textLength?: number | string
- // see https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList
- // or https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#List-of-Ts
- // TODO: tbd
- // rotate?: string
- }
-
- /**
- * SVG TextPath attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath
- */
- interface TextPathAttr extends GlobalAttr {
- href?: string
- lengthAdjust?: 'spacing' | 'spacingAndGlyphs'
- method?: 'align' | 'stretch'
- side?: 'left' | 'right'
- spacing?: 'auto' | 'exact'
- startOffset?: number | string
- textLength?: number | string
- // See https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath
- // TODO: tbd as there is no reference to see the detail of how it would look like
- // path?: string
- }
-
- /**
- * A generic Dom Box object.
- * Notice: DOMRect is still in experiment state and document is not complete (Draft)
- * See https://developer.mozilla.org/en-US/docs/Web/API/DOMRect
- */
- interface DOMRect {
- x?: number
- y?: number
- width?: number
- height?: number
- top?: number
- right?: number
- bottom?: number
- left?: number
- }
-
- // ************ SVG.JS generic Conditional Types declaration ************
-
- type SVGTypeMapping<T> = T extends HTMLElement
- ? Dom
- : T extends SVGSVGElement
- ? Svg
- : T extends SVGRectElement
- ? Rect
- : T extends SVGCircleElement
- ? Circle
- : T extends SVGPathElement
- ? Path
- : T extends SVGTextElement
- ? Text
- : T extends SVGTextPathElement
- ? TextPath
- : T extends SVGGElement
- ? G
- : T extends SVGLineElement
- ? Line
- : T extends SVGPolylineElement
- ? Polyline
- : T extends SVGPolygonElement
- ? Polygon
- : T extends SVGGradientElement
- ? Gradient
- : T extends SVGImageElement
- ? Image
- : T extends SVGEllipseElement
- ? Ellipse
- : T extends SVGMaskElement
- ? Mask
- : T extends SVGMarkerElement
- ? Marker
- : T extends SVGClipPathElement
- ? ClipPath
- : T extends SVGTSpanElement
- ? Tspan
- : T extends SVGSymbolElement
- ? Symbol
- : T extends SVGUseElement
- ? Use
- : Element
-
- // element type as string
- type SvgType = 'svg'
- type ClipPathType = 'clipPath'
- type TextType = 'text'
- type GType = 'g'
- type AType = 'a'
-
- type ParentElement = SvgType | GType | AType
-
- type AttrTypeMapping<T> = T extends Rect ? RectAttr : GlobalAttr
-
- type ElementAlias =
- | Dom
- | Svg
- | Rect
- | Line
- | Polygon
- | Polyline
- | Ellipse
- | ClipPath
- | Use
- | Text
- | Path
- | TextPath
- | Circle
- | G
- | Gradient
- | Image
- | Element
-
- type ElementTypeAlias =
- | typeof Dom
- | typeof Svg
- | typeof Rect
- | typeof Line
- | typeof Polygon
- | typeof Polyline
- | typeof Ellipse
- | typeof ClipPath
- | typeof Use
- | typeof Text
- | typeof Path
- | typeof TextPath
- | typeof Circle
- | typeof G
- | typeof Gradient
- | typeof Image
- | typeof Element
-
- type AttributeReference =
- | 'href'
- | 'marker-start'
- | 'marker-mid'
- | 'marker-end'
- | 'mask'
- | 'clip-path'
- | 'filter'
- | 'fill'
-
- // ************* SVG.JS Type Declaration *************
- // ********** Locate in directory src/types **********
-
- // SVGArray.js
- // Notice: below class is defined the name as `Array` rather than `SVGArray`.
- // The purpose of giving the name as `Array` is to allow it to be aligned with SVG.JS export type
- // as SVG.JS export it as `Array` (to be precise `SVG.Array`) so reading through JS documentation
- // should be more straightforward.
- /**
- * Type alias to native array.
- *
- * **Caution**: If argument is a string, generic type must be a number or array of number and
- * the string is format as a concatenate of number separate by comma.
- * This is expensive to build runtime type check for such as case so please use it carefully.
- */
- type ArrayAlias<T> = BuiltInArray<T> | T[] | string
-
- class Array<T> extends BuiltInArray<T> {
- constructor(array?: ArrayAlias<T>)
-
- /**
- * Return array of generic T however it's flatten array by 1 level as it using `apply` function.
- * For example: if T is a `number[]` which is the number of 2 dimension `Array<number[]>` the result will be `number[]`
- */
- toArray(): any[]
- /**
- * return a concatenated string of each element separated by space
- */
- toString(): string
- valueOf(): T[]
- clone(): Array<T>
- toSet(): Set<T>
- parse(a?: ArrayAlias<T>): T[]
- to(a: any): Morphable
- }
-
- // point.js
- class Point {
- x: number
- y: number
- constructor()
- constructor(position: CoordinateXY)
- constructor(point: Point)
- constructor(x: number, y?: number)
- clone(): Point
- transform(matrix: Matrix): this
- transformO(matrix: Matrix): this
- toArray(): ArrayXY
- }
-
- // pointArray.js
- class PointArray extends Array<ArrayXY> {
- constructor()
- constructor(array?: ArrayAlias<ArrayXY> | number[])
-
- toLine(): LineAttr
- transform(m: Matrix | MatrixLike): PointArray
- move(x: number, y: number): this
- size(width: number, height: number): this
- bbox(): Box
- to(a: any): Morphable
- toString(): string
- }
-
- // SVGNumber.js
- type NumberUnit = [number, string]
-
- class Number {
- constructor()
- constructor(value: Number)
- constructor(value: string)
- constructor(value: number, unit?: any)
- constructor(n: NumberUnit)
-
- value: number
- unit: any
-
- toString(): string
- toJSON(): object // same as toString
- toArray(): NumberUnit
- valueOf(): number
- plus(number: NumberAlias): Number
- minus(number: NumberAlias): Number
- times(number: NumberAlias): Number
- divide(number: NumberAlias): Number
- convert(unit: string): Number
- to(a: any): Morphable
- }
-
- type NumberAlias = Number | number | string
-
- // PathArray.js
-
- type LineCommand =
- | ['M' | 'm' | 'L' | 'l', number, number]
- | ['H' | 'h' | 'V' | 'v', number]
- | ['Z' | 'z']
-
- type CurveCommand =
- // Bezier Curves
- | ['C' | 'c', number, number, number, number, number, number]
- | ['S' | 's' | 'Q' | 'q', number, number, number, number]
- | ['T' | 't', number, number]
- // Arcs
- | ['A' | 'a', number, number, number, number, number, number, number]
-
- type PathCommand = LineCommand | CurveCommand
-
- type PathArrayAlias = PathArray | PathCommand[] | (string | number)[] | string
-
- class PathArray extends Array<PathCommand> {
- constructor()
- constructor(d: ArrayAlias<PathCommand> | PathArrayAlias)
-
- move(x: number, y: number): this
- size(width: number, height: number): this
- equalCommands(other: PathArray): boolean
- morph(pa: PathArray): this
- parse(array?: ArrayAlias<PathCommand> | PathArrayAlias): PathCommand[]
- bbox(): Box
- to(a: any): Morphable
- }
-
- // Matrix.js
- interface TransformData {
- origin?: number[]
- scaleX?: number
- scaleY?: number
- shear?: number
- rotate?: number
- translateX?: number
- translateY?: number
- originX?: number
- originY?: number
- }
-
- interface MatrixLike {
- a?: number
- b?: number
- c?: number
- d?: number
- e?: number
- f?: number
- }
-
- interface MatrixExtract extends TransformData, MatrixLike {}
-
- type FlipType = 'both' | 'x' | 'y' | boolean
- type ArrayXY = [number, number]
- type CoordinateXY = ArrayXY | { x: number; y: number }
-
- interface MatrixTransformParam {
- rotate?: number
- flip?: FlipType
- skew?: ArrayXY | number
- skewX?: number
- skewY?: number
- scale?: ArrayXY | number
- scaleX?: number
- scaleY?: number
- shear?: number
- theta?: number
- origin?: CoordinateXY | string
- around?: CoordinateXY
- ox?: number
- originX?: number
- oy?: number
- originY?: number
- position?: CoordinateXY
- px?: number
- positionX?: number
- py?: number
- positionY?: number
- translate?: CoordinateXY
- tx?: number
- translateX?: number
- ty?: number
- translateY?: number
- relative?: CoordinateXY
- rx?: number
- relativeX?: number
- ry?: number
- relativeY?: number
- }
-
- type MatrixAlias =
- | MatrixLike
- | TransformData
- | MatrixTransformParam
- | number[]
- | Element
- | string
-
- class Matrix implements MatrixLike {
- constructor()
- constructor(source: MatrixAlias)
- constructor(
- a: number,
- b: number,
- c: number,
- d: number,
- e: number,
- f: number
- )
-
- a: number
- b: number
- c: number
- d: number
- e: number
- f: number;
-
- // *** To Be use by Test Only in restrict mode ***
- [key: string]: any
-
- clone(): Matrix
- transform(o: MatrixLike | MatrixTransformParam): Matrix
- compose(o: MatrixExtract): Matrix
- decompose(cx?: number, cy?: number): MatrixExtract
- multiply(m: MatrixAlias | Matrix): Matrix
- multiplyO(m: MatrixAlias | Matrix): this
- lmultiply(m: MatrixAlias | Matrix): Matrix
- lmultiplyO(m: MatrixAlias | Matrix): this
- inverse(): Matrix
- inverseO(): this
- translate(x?: number, y?: number): Matrix
- translateO(x?: number, y?: number): this
- scale(x: number, y?: number, cx?: number, cy?: number): Matrix
- scaleO(x: number, y?: number, cx?: number, cy?: number): this
- rotate(r: number, cx?: number, cy?: number): Matrix
- rotateO(r: number, cx?: number, cy?: number): this
- flip(a: NumberAlias, offset?: number): Matrix
- flipO(a: NumberAlias, offset?: number): this
- flip(offset?: number): Matrix
- shear(a: number, cx?: number, cy?: number): Matrix
- shearO(a: number, cx?: number, cy?: number): this
- skew(y?: number, cx?: number, cy?: number): Matrix
- skewO(y?: number, cx?: number, cy?: number): this
- skew(x: number, y?: number, cx?: number, cy?: number): Matrix
- skewX(x: number, cx?: number, cy?: number): Matrix
- skewY(y: number, cx?: number, cy?: number): Matrix
- around(cx?: number, cy?: number, matrix?: Matrix): Matrix
- aroundO(cx?: number, cy?: number, matrix?: Matrix): this
- equals(m: Matrix): boolean
- toString(): string
- toArray(): number[]
- valueOf(): MatrixLike
- to(a: any): Morphable
- }
-
- type ListEachCallback<T> = (el: T, index: number, list: List<T>) => any
-
- // List.js
- class List<T> extends BuiltInArray<T> {
- each(fn: ListEachCallback<T>): List<any>
- each(name: string, ...args: any[]): List<any>
- toArray(): T[]
- }
-
- class Eventobject {
- [key: string]: Eventobject
- }
-
- // EventTarget.js
- class EventTarget {
- events: Eventobject
-
- addEventListener(): void
- dispatch(event: Event | string, data?: object): Event
- dispatchEvent(event: Event): boolean
- fire(event: Event | string, data?: object): this
- getEventHolder(): this | Node
- getEventTarget(): this | Node
-
- on(
- events: string | Event[],
- cb: EventListener,
- binbind?: any,
- options?: AddEventListenerOptions
- ): this
- off(
- events?: string | Event[],
- cb?: EventListener | number,
- options?: AddEventListenerOptions
- ): this
-
- removeEventListener(): void
- }
-
- // Color.js
- interface ColorLike {
- r: number
- g: number
- b: number
-
- x: number
- y: number
- z: number
-
- h: number
- s: number
- l: number
- a: number
- c: number
-
- m: number
- k: number
-
- space: string
- }
-
- type ColorAlias = string | ColorLike
-
- class Color implements ColorLike {
- r: number
- g: number
- b: number
-
- x: number
- y: number
- z: number
-
- h: number
- s: number
- l: number
- a: number
- c: number
-
- m: number
- k: number
-
- space: string
- constructor()
- constructor(color: ColorAlias, space?: string)
- constructor(a: number, b: number, c: number, space?: string)
- constructor(a: number, b: number, c: number, d: number, space?: string)
- constructor(a: number[], space?: string)
-
- rgb(): Color
- lab(): Color
- xyz(): Color
- lch(): Color
- hsl(): Color
- cmyk(): Color
- toHex(): string
- toString(): string
- toRgb(): string
- toArray(): any[]
-
- to(a: any): Morphable
- fromArray(a: any): this
-
- static random(mode: 'sine', time?: number): Color
- static random(mode?: string): Color
- }
-
- // Box.js
- interface BoxLike {
- height: number
- width: number
- y: number
- x: number
- cx?: number
- cy?: number
- w?: number
- h?: number
- x2?: number
- y2?: number
- }
-
- class Box implements BoxLike {
- height: number
- width: number
- y: number
- x: number
- cx: number
- cy: number
- w: number
- h: number
- x2: number
- y2: number
-
- constructor()
- constructor(source: string)
- constructor(source: number[])
- constructor(source: DOMRect)
- constructor(x: number, y: number, width: number, height: number)
-
- merge(box: BoxLike): Box
- transform(m: Matrix): Box
- addOffset(): this
- toString(): string
- toArray(): number[]
- isNulled(): boolean
- to(v: MorphValueLike): Morphable
- }
-
- // Morphable.js
- type MorphValueLike =
- | string
- | number
- | objectBag
- | NonMorphable
- | MatrixExtract
- | Array<any>
- | any[]
-
- class Morphable {
- constructor()
- constructor(st: Stepper)
-
- from(): MorphValueLike
- from(v: MorphValueLike): this
- to(): MorphValueLike
- to(v: MorphValueLike): this
- type(): any
- type(t: any): this
- stepper(): Stepper
- stepper(st: Stepper): this
- done(): boolean
- at(pos: number): any
- }
-
- class objectBag {
- constructor()
- constructor(a: object)
- valueOf(): object
- toArray(): object[]
-
- to(a: object): Morphable
- fromArray(a: any[]): this
- }
-
- class NonMorphable {
- constructor(a: object)
- valueOf(): object
- toArray(): object[]
-
- to(a: object): Morphable
- fromArray(a: object): this
- }
-
- class TransformBag {
- constructor()
- constructor(a: number[])
- constructor(a: TransformData)
- defaults: TransformData
- toArray(): number[]
- to(t: TransformData): Morphable
- fromArray(t: number[]): this
- }
-
- interface Stepper {
- done(c?: object): boolean
- }
-
- class Ease implements Stepper {
- constructor()
- constructor(fn: string)
- constructor(fn: Function)
-
- step(from: number, to: number, pos: number): number
- done(): boolean
- }
-
- class Controller implements Stepper {
- constructor(fn?: Function)
- step(current: number, target: number, dt: number, c: number): number
- done(c?: object): boolean
- }
-
- // Queue.js
- interface QueueParam {
- value: any
- next?: any
- prev?: any
- }
-
- class Queue {
- constructor()
-
- push(value: any): QueueParam
- shift(): any
- first(): number
- last(): number
- remove(item: QueueParam): void
- }
-
- // Timeline.js
- interface ScheduledRunnerInfo {
- start: number
- duration: number
- end: number
- runner: Runner
- }
-
- class Timeline extends EventTarget {
- constructor()
- constructor(fn: Function)
-
- active(): boolean
- schedule(runner: Runner, delay?: number, when?: string): this
- schedule(): ScheduledRunnerInfo[]
- unschedule(runner: Runner): this
- getEndTime(): number
- updateTime(): this
- persist(dtOrForever?: number | boolean): this
- play(): this
- pause(): this
- stop(): this
- finish(): this
- speed(speed: number): this
- reverse(yes: boolean): this
- seek(dt: number): this
- time(): number
- time(time: number): this
- source(): Function
- source(fn: Function): this
- }
-
- // Runner.js
- interface TimesParam {
- duration: number
- delay: number
- when: number | string
- swing: boolean
- wait: number
- times: number
- }
-
- type TimeLike = number | TimesParam | Stepper
-
- type EasingCallback = (...any: any) => number
- type EasingLiteral = '<>' | '-' | '<' | '>'
-
- class Runner {
- constructor()
- constructor(options: Function)
- constructor(options: number)
- constructor(options: Controller)
-
- static sanitise: (
- duration?: TimeLike,
- delay?: number,
- when?: string
- ) => object
-
- element(): Element
- element(el: Element): this
- timeline(): Timeline
- timeline(timeline: Timeline): this
- animate(duration: TimeLike, delay?: number, when?: string): this
- schedule(delay: number, when?: string): this
- schedule(timeline: Timeline, delay?: number, when?: string): this
- unschedule(): this
- loop(times?: number, swing?: boolean, wait?: number): this
- loop(times: TimesParam): this
- delay(delay: number): this
-
- during(fn: Function): this
- queue(
- initFn: Function,
- runFn: Function,
- retargetFn?: boolean | Function,
- isTransform?: boolean
- ): this
- after(fn: EventListener): this
- time(): number
- time(time: number): this
- duration(): number
- loops(): number
- loops(p: number): this
- persist(dtOrForever?: number | boolean): this
- position(): number
- position(p: number): this
- progress(): number
- progress(p: number): this
- step(deta?: number): this
- reset(): this
- finish(): this
- reverse(r?: boolean): this
- ease(fn: EasingCallback): this
- ease(kind: EasingLiteral): this
- active(): boolean
- active(a: boolean): this
- addTransform(m: Matrix): this
- clearTransform(): this
- clearTransformsFromQueue(): void
-
- // extends prototypes
- attr(a: string | object, v?: string): this
- css(s: string | object, v?: string): this
- styleAttr(type: string, name: string | object, val?: string): this
- zoom(level: NumberAlias, point?: Point): this
- transform(
- transforms: MatrixTransformParam,
- relative?: boolean,
- affine?: boolean
- ): this
- x(x: number): this
- y(y: number): this
- dx(dx: number): this
- dy(dy: number): this
- cx(x: number): this
- cy(y: number): this
- dmove(dx: number, dy: number): this
- move(x: number, y: number): this
- center(x: number, y: number): this
- size(width: number, height: number): this
- width(width: number): this
- height(height: number): this
- plot(a: object): this
- plot(a: number, b: number, c: number, d: number): this
- leading(value: number): this
- viewbox(x: number, y: number, width: number, height: number): this
- update(offset: number, color: number, opacity: number): this
- update(o: StopProperties): this
- rx(): number
- rx(rx: number): this
- ry(): number
- ry(ry: number): this
- from(x: NumberAlias, y: NumberAlias): this
- to(x: NumberAlias, y: NumberAlias): this
- }
-
- // Animator.js
- let Animator: {
- nextDraw: any
- frames: Queue
- timeouts: Queue
- immediates: Queue
-
- timer(): boolean
- frame(fn: Function): object
- timeout(fn: Function, delay?: number): object
- immediate(fn: Function): object
- cancelFrame(o: object): void
- clearTimeout(o: object): void
- cancelImmediate(o: object): void
- }
-
- /**
- * Just fancy type alias to refer to css query selector.
- */
- type QuerySelector = string
-
- class Dom extends EventTarget {
- node: HTMLElement | SVGElement
- type: string
-
- constructor(node?: HTMLElement, attr?: object)
- constructor(att: object)
- add(element: Element, i?: number): this
- addTo(parent: Dom | HTMLElement | string, i?: number): this
- children(): List<Element>
- clear(): this
- clone(deep?: boolean, assignNewIds?: boolean): this
- each(
- block: (index: number, children: Element[]) => void,
- deep?: boolean
- ): this
- element(element: string, inherit?: object): this
- first(): Element
- get(i: number): Element
- getEventHolder(): LinkedHTMLElement
- getEventTarget(): LinkedHTMLElement
- has(element: Element): boolean
- id(): string
- id(id: string): this
- index(element: Element): number
- last(): Element
- matches(selector: string): boolean
- /**
- * Finds the closest ancestor which matches the string or is of passed type. If nothing is passed, the parent is returned
- * @param type can be either string, svg.js object or undefined.
- */
- parent(type?: ElementTypeAlias | QuerySelector): Dom | null
- put(element: Element, i?: number): Element
- /**
- * Put the element into the given parent element and returns the parent element
- * @param parent The parent in which the current element is inserted
- */
- putIn(parent: ElementAlias | Node | QuerySelector): Dom
-
- remove(): this
- removeElement(element: Element): this
- replace<T extends Dom>(element: T): T
- round(precision?: number, map?: string[]): this
- svg(): string
- svg(a: string, outer: true): Element
- svg(a: string, outer?: false): this
- svg(a: boolean, outer?: boolean): string
- svg(a: null | Function, outer?: boolean): string
-
- toString(): string
- words(text: string): this
- writeDataToDom(): this
-
- // prototype extend Attribute in attr.js
- /**
- * Get the attribute object of SVG Element. The return object will be vary based on
- * the instance itself. For example, G element will only return GlobalAttr where Rect
- * will return RectAttr instead.
- */
- attr(): any
- /**
- * Add or update the attribute from the SVG Element. To remove the attribute from the element set value to null
- * @param name name of attribute
- * @param value value of attribute can be string or number or null
- * @param namespace optional string that define namespace
- */
- attr(name: string, value: any, namespace?: string): this
- attr(name: string): any
- attr(obj: object): this
- attr(obj: string[]): object
-
- // prototype extend Selector in selector.js
- find(query: string): List<Element>
- findOne(query: string): Dom | null
-
- // prototype method register in data.js
- data(a: string): object | string | number
- data(a: string, v: object, substain?: boolean): this
- data(a: object): this
-
- // prototype method register in arrange.js
- siblings(): List<Element>
- position(): number
- next(): Element
- prev(): Element
- forward(): this
- backward(): this
- front(): this
- back(): this
- before(el: Element): Element
- after(el: Element): Element
- insertBefore(el: Element): this
- insertAfter(el: Element): this
-
- // prototype method register in class.js
- classes(): string[]
- hasClass(name: string): boolean
- addClass(name: string): this
- removeClass(name: string): this
- toggleClass(name: string): this
-
- // prototype method register in css.js
- css(): Partial<CSSStyleDeclaration>
- css<T extends CSSStyleName>(style: T): CSSStyleDeclaration[T]
- css<T extends CSSStyleName[]>(style: T): Partial<CSSStyleDeclaration>
- css<T extends CSSStyleName>(style: T, val: CSSStyleDeclaration[T]): this
- css(style: Partial<CSSStyleDeclaration>): this
- show(): this
- hide(): this
- visible(): boolean
-
- // memory.js
- remember(name: string, value: any): this
- remember(name: string): any
- remember(obj: object): this
- forget(...keys: string[]): this
- forget(): this
- memory(): object
-
- addEventListener(): void
- dispatch(event: Event | string, data?: object): Event
- dispatchEvent(event: Event): boolean
- fire(event: Event | string, data?: object): this
- getEventHolder(): this | Node
- getEventTarget(): this | Node
-
- // on(events: string | Event[], cb: EventListener, binbind?: any, options?: AddEventListenerOptions): this;
- // off(events?: string | Event[], cb?: EventListener | number): this;
- removeEventListener(): void
- }
-
- // clip.js
- class ClipPath extends Container {
- constructor()
- constructor(node?: SVGClipPathElement)
- constructor(attr: object)
- node: SVGClipPathElement
-
- targets(): List<Element>
- remove(): this
- }
-
- // container.js
- interface ViewBoxLike {
- x: number
- y: number
- width: number
- height: number
- }
-
- class Containable {
- circle(size?: NumberAlias): Circle
- clip(): ClipPath
- ellipse(width?: number, height?: number): Ellipse
- foreignObject(width: number, height: number): ForeignObject
- gradient(type: string, block?: (stop: Gradient) => void): Gradient
- group(): G
-
- image(): Image
- image(href?: string, callback?: (e: Event) => void): Image
- line(points?: PointArrayAlias): Line
- line(x1: number, y1: number, x2: number, y2: number): Line
- link(url: string): A
- marker(
- width?: number,
- height?: number,
- block?: (marker: Marker) => void
- ): Marker
- mask(): Mask
- nested(): Svg
- path(): Path
- path(d: PathArrayAlias): Path
- pattern(
- width?: number,
- height?: number,
- block?: (pattern: Pattern) => void
- ): Pattern
- plain(text: string): Text
- polygon(points?: PointArrayAlias): Polygon
- polyline(points?: PointArrayAlias): Polyline
- rect(width?: NumberAlias, height?: NumberAlias): Rect
- style(): Style
- text(block: (tspan: Tspan) => void): Text
- text(text: string): Text
- use(element: Element | string, file?: string): Use
- viewbox(): Box
- viewbox(viewbox: ViewBoxLike | string): this
- viewbox(x: number, y: number, width: number, height: number): this
- textPath(text: string | Text, path: string | Path): TextPath
- symbol(): Symbol
- zoom(): number
- zoom(level: NumberAlias, point?: Point): this
- }
-
- type DynamicExtends<T extends {}> = {
- new (...args: any[]): Containable & T
- }
-
- /**
- * only for declaration purpose. actually cannot be used.
- */
- let ContainableDom: DynamicExtends<Dom>
- class Fragment extends ContainableDom {
- constructor(node?: Node)
- }
-
- /**
- * only for declaration purpose. actually cannot be used.
- */
- let ContainableElement: DynamicExtends<Element>
- class Container extends ContainableElement {
- constructor()
- flatten(parent: Dom, depth?: number): this
- ungroup(parent: Dom, depth?: number): this
- }
-
- class Defs extends Container {
- constructor(node?: SVGDefsElement)
- node: SVGDefsElement
- marker(
- width?: number,
- height?: number,
- block?: (marker: Marker) => void
- ): Marker
- }
-
- class Svg extends Container {
- constructor(svgElement?: SVGSVGElement)
- constructor(id: string)
- node: SVGSVGElement
- namespace(): this
- defs(): Defs
- remove(): this
- isRoot(): boolean
- }
-
- interface Sugar {
- fill(): any
- fill(fill: FillData): this
- fill(color: string): this
- fill(pattern: Element): this
- fill(image: Image): this
- stroke(): any
- stroke(stroke: StrokeData): this
- stroke(color: string): this
- matrix(
- a?: number,
- b?: number,
- c?: number,
- d?: number,
- e?: number,
- f?: number
- ): this
- matrix(
- mat: MatrixAlias,
- b?: number,
- c?: number,
- d?: number,
- e?: number,
- f?: number
- ): this
- rotate(degrees: number, cx?: number, cy?: number): this
- skew(skewX?: number, skewY?: number, cx?: number, cy?: number): this
- scale(scaleX?: number, scaleY?: number, cx?: number, cy?: number): this
- translate(x: number, y: number): this
- shear(lam: Matrix, cx: number, cy: number): this
- relative(x: number, y: number): this
- flip(direction?: string, around?: number): this
- flip(around: number): this
- opacity(): number
- opacity(value: number): this
- font(a: string): string
- font(a: string, v: string | number): this
- font(a: object): this
- }
-
- // Symbol.js
- class Symbol extends Container {
- constructor(svgElement?: SVGSymbolElement)
- constructor(attr: object)
- node: SVGSymbolElement
- }
-
- class Element extends Dom implements Sugar {
- constructor(node?: SVGElement)
- constructor(attr: object)
- node: SVGElement
- type: string
- dom: any
-
- addClass(name: string): this
- after(element: Element): Element
- animate(duration?: TimeLike, delay?: number, when?: string): Runner
- delay(by: number, when?: string): Runner
- attr(): any
- attr(name: string, value: any, namespace?: string): this
- attr(name: string): any
- attr(obj: string[]): object
- attr(obj: object): this
- back(): this
- backward(): this
- bbox(): Box
- before(element: Element): Element
- center(x: number, y: number): this
- classes(): string[]
- click(cb: Function | null): this
- clipper(): ClipPath
- clipWith(element: Element): this
- clone(deep?: boolean, assignNewIds?: boolean): this
- ctm(): Matrix
- cx(): number
- cx(x: number): this
- cy(): number
- cy(y: number): this
- data(name: string, value: any, sustain?: boolean): this
- data(name: string): any
- data(val: object): this
- dblclick(cb: Function | null): this
- defs(): Defs
- dmove(x: NumberAlias, y: NumberAlias): this
- dx(x: NumberAlias): this
- dy(y: NumberAlias): this
- event(): Event | CustomEvent
- fill(): any
- fill(color: string): this
- fill(color: Color | ColorLike): this
- fill(color: FillData): this
- fill(pattern: Element): this
- fire(event: Event): this
- fire(event: string, data?: any): this
- flip(a: string, offset?: number): this
- flip(offset?: number): this
- font(a: object): this
- font(a: string, v: string | number): this
- font(a: string): string
- forget(...keys: string[]): this
- forget(): this
- forward(): this
- front(): this
- hasClass(name: string): boolean
- height(): NumberAlias
- height(height: NumberAlias): this
- hide(): this
- hide(): this
- id(): string
- id(id: string): this
- inside(x: number, y: number): boolean
- is(cls: any): boolean
- linkTo(url: (link: A) => void): A
- linkTo(url: string): A
- masker(): Mask
- maskWith(element: Element): this
- maskWith(mask: Mask): this
- matches(selector: string): boolean
- matrix(): Matrix
- matrix(
- a?: number,
- b?: number,
- c?: number,
- d?: number,
- e?: number,
- f?: number
- ): this
- matrix(
- mat: MatrixAlias,
- b?: number,
- c?: number,
- d?: number,
- e?: number,
- f?: number
- ): this
- matrixify(): Matrix
- memory(): object
- mousedown(cb: Function | null): this
- mousemove(cb: Function | null): this
- mouseout(cb: Function | null): this
- mouseover(cb: Function | null): this
- mouseup(cb: Function | null): this
- mouseenter(cb: Function | null): this
- mouseleave(cb: Function | null): this
- move(x: NumberAlias, y: NumberAlias): this
- native(): LinkedHTMLElement
- next(): Element
- // off(events?: string | Event[], cb?: EventListener | number): this;
- // on(event: string, cb: Function, context?: object): this;
- opacity(): number
- opacity(o: number): this
- relative(x: number, y: number): this
- shear(lam: Matrix, cx: number, cy: number): this
- toRoot(): Svg
- /**
- * By default parents will return a list of elements up until the root svg.
- */
- parents(): List<Element>
- /**
- * List the parent by hierarchy until the given parent type or matcher. If the given value is null
- * then the result is only provided the list up until Svg root element which mean no Dom parent element is included.
- * @param util a parent type
- */
- parents<T extends Dom>(util: QuerySelector | T | null): List<Element>
- /**
- * Get reference svg element based on the given attribute.
- * @param attr a svg attribute
- */
- reference<R extends Dom>(attr: AttributeReference): R | null
-
- point(): Point
- point(position: CoordinateXY): Point
- point(point: Point): Point
- point(x: number, y: number): Point
- position(): number
- prev(): Element
- rbox(element?: Element): Box
- reference(type: string): Element
- remember(name: string, value: any): this
- remember(name: string): any
- remember(obj: object): this
- remove(): this
- removeClass(name: string): this
- root(): Svg
- rotate(d: number, cx?: number, cy?: number): this
- scale(x?: number, y?: number, cx?: number, cy?: number): this
- screenCTM(): Matrix
- setData(data: object): this
- show(): this
- show(): this
- size(width?: NumberAlias, height?: NumberAlias): this
- skew(x?: number, y?: number, cx?: number, cy?: number): this
- stop(jumpToEnd: boolean, clearQueue: boolean): Animation
- stop(
- offset?: NumberAlias | string,
- color?: NumberAlias,
- opacity?: NumberAlias
- ): Stop
- stop(val: {
- offset?: NumberAlias | string
- color?: NumberAlias
- opacity?: NumberAlias
- }): Stop
- stroke(): any
- stroke(color: string): this
- stroke(stroke: StrokeData): this
- timeline(): Timeline
- timeline(tl: Timeline): this
- toggleClass(name: string): this
- toParent(parent: Dom): this
- toParent(parent: Dom, i: number): this
- toSvg(): this
- touchcancel(cb: Function | null): this
- touchend(cb: Function | null): this
- touchleave(cb: Function | null): this
- touchmove(cb: Function | null): this
- touchstart(cb: Function | null): this
- transform(): MatrixExtract
- transform(t: MatrixAlias, relative?: boolean): this
- translate(x: number, y: number): this
- unclip(): this
- unmask(): this
- untransform(): this
- visible(): boolean
- width(): NumberAlias
- width(width: NumberAlias): this
- x(): NumberAlias
- x(x: NumberAlias): this
- y(): NumberAlias
- y(y: NumberAlias): this
- }
-
- // ellipse.js
- interface CircleMethods extends Shape {
- rx(rx: number): this
- rx(): this
- ry(ry: number): this
- ry(): this
- radius(x: number, y?: number): this
- }
- class Circle extends Shape implements CircleMethods {
- constructor(node?: SVGCircleElement)
- constructor(attr: CircleAttr)
-
- node: SVGCircleElement
-
- rx(rx: number): this
- rx(): this
- ry(ry: number): this
- ry(): this
- radius(x: number, y?: number): this
- }
- class Ellipse extends Shape implements CircleMethods {
- node: SVGEllipseElement
- constructor(attr: EllipseAttr)
- constructor(node?: SVGEllipseElement)
-
- rx(rx: number): this
- rx(): this
- ry(ry: number): this
- ry(): this
- radius(x: number, y?: number): this
- }
-
- interface StopProperties {
- color?: ColorAlias
- offset?: number | string
- opacity?: number
- }
-
- // gradient.js
- class Stop extends Element {
- update(offset?: number, color?: ColorAlias, opacity?: number): this
- update(opts: StopProperties): this
- }
- class Gradient extends Container {
- constructor(node?: SVGGradientElement)
- constructor(attr: object)
- constructor(type: string)
- node: SVGGradientElement
-
- at(offset?: number, color?: ColorAlias, opacity?: number): Stop
- at(opts: StopProperties): Stop
- url(): string
- toString(): string
- targets(): List<Element>
- bbox(): Box
-
- // gradiented.js
- from(x: number, y: number): this
- to(x: number, y: number): this
-
- // TODO: check with main.js
- radius(x: number, y?: number): this
- targets(): List<Element>
- bbox(): Box
- update(block?: (gradient: Gradient) => void): this
- }
-
- // group.js
- class G extends Container {
- constructor(node?: SVGGElement)
- constructor(attr: object)
- node: SVGGElement
- gbox(): Box
- }
-
- // hyperlink.js
- class A extends Container {
- constructor(node?: SVGAElement)
- constructor(attr: object)
- node: SVGAElement
- to(url: string): this
- to(): string
- target(target: string): this
- target(): string
- }
-
- // ForeignObject.js
- class ForeignObject extends Element {
- constructor(node?: SVGForeignObjectElement, attrs?: object)
- constructor(attrs?: object)
- add(element: Dom, i?: number): this
- }
-
- // image.js
- class Image extends Shape {
- constructor(node?: SVGImageElement)
- constructor(attr: object)
- node: SVGImageElement
- load(url?: string, callback?: (event: Event) => void): this
- }
-
- // line.js
- type PointArrayAlias = number[] | ArrayXY[] | PointArray | string
-
- class Line extends Shape {
- constructor(attr: LineAttr)
- constructor(node?: SVGLineElement)
-
- node: SVGLineElement
-
- array(): PointArray
- plot(): PointArray
- plot(points?: PointArrayAlias): this
- plot(x1: number, y1: number, x2: number, y2: number): this
- move(x: number, y: number): this
- size(width?: number, height?: number): this
- marker(
- position: string,
- width?: number,
- height?: number,
- block?: (marker: Marker) => void
- ): Marker
- marker(position: string, marker: Marker): Marker
- }
-
- // marker.js
- // TODO: check register method marker
- class Marker extends Container {
- constructor()
-
- node: SVGMarkerElement
-
- ref(x: string | number, y: string | number): this
- update(block: (marker: Marker) => void): this
- toString(): string
- orient(orientation: 'auto' | 'auto-start-reverse' | number | Number): this
- orient(): string
- }
- // mask.js
- class Mask extends Container {
- constructor(node?: SVGMaskElement)
- constructor(attr: object)
- node: SVGMaskElement
- remove(): this
- targets(): List<Element>
- }
-
- // path.js
- class Path extends Shape {
- constructor(attr: PathAttr)
- constructor(node?: SVGPathElement)
-
- node: SVGPathElement
-
- morphArray: PathArray
- array(): PathArray
- plot(): PathArray
- plot(d: PathArrayAlias): this
- marker(
- position: string,
- width?: number,
- height?: number,
- block?: (marker: Marker) => void
- ): this
- marker(position: string, marker: Marker): this
-
- // sugar.js
- length(): number
- pointAt(length: number): { x: number; y: number }
- text(text: string): TextPath
- text(text: Text): TextPath
- targets(): List<Element>
- }
-
- // pattern.js
- class Pattern extends Container {
- url(): string
- url(...rest: any[]): never
- update(block: (pattern: Pattern) => void): this
- toString(): string
- }
-
- // poly.js
- interface poly {
- array(): PointArray
- plot(): PointArray
- plot(p: PointArrayAlias): this
- clear(): this
- move(x: number, y: number): this
- size(width: number, height?: number): this
- }
-
- // pointed.js
- interface pointed {
- x(): number
- x(x: number): this
- y(): number
- y(y: number): this
- height(): number
- height(h: number): this
- width(): number
- width(w: number): this
- }
-
- class Polyline extends Shape implements poly, pointed {
- constructor(node?: SVGPolylineElement)
- constructor(attr: PolyAttr)
-
- node: SVGPolylineElement
-
- array(): PointArray
- plot(): PointArray
- plot(p: PointArrayAlias): this
- x(): number
- x(x: number): this
- y(): number
- y(y: number): this
- height(): number
- height(h: number): this
- width(): number
- width(w: number): this
- move(x: number, y: number): this
- size(width: number, height?: number): this
- marker(
- position: string,
- width?: number,
- height?: number,
- block?: (marker: Marker) => void
- ): Marker
- marker(position: string, marker: Marker): Marker
- }
-
- class Polygon extends Shape implements poly, pointed {
- constructor(node?: SVGPolygonElement)
- constructor(attr: PolyAttr)
-
- node: SVGPolygonElement
- array(): PointArray
- plot(): PointArray
- plot(p: PointArrayAlias): this
- x(): number
- x(x: number): this
- y(): number
- y(y: number): this
- height(): number
- height(h: number): this
- width(): number
- width(w: number): this
- move(x: number, y: number): this
- size(width: number, height?: number): this
- marker(
- position: string,
- width?: number,
- height?: number,
- block?: (marker: Marker) => void
- ): Marker
- marker(position: string, marker: Marker): Marker
- }
-
- class Rect extends Shape {
- constructor(node?: SVGRectElement)
- constructor(attr: RectAttr)
- node: SVGRectElement
- radius(x: number, y?: number): this
- }
-
- // shape.js
- class Shape extends Element {}
-
- // sugar.js
- interface StrokeData {
- color?: string
- width?: number
- opacity?: number
- linecap?: string
- linejoin?: string
- miterlimit?: number
- dasharray?: string
- dashoffset?: number
- }
-
- interface FillData {
- color?: string
- opacity?: number
- rule?: string
- }
-
- interface FontData {
- family?: string
- size?: NumberAlias
- anchor?: string
- leading?: NumberAlias
- weight?: string
- style?: string
- }
- // textable.js
- interface Textable {
- plain(text: string): this
- length(): number
- }
-
- // text.js
- class Text extends Shape implements Textable {
- constructor(node?: SVGElement)
- constructor(attr: TextAttr)
-
- clone(): this
- text(): string
- text(text: string): this
- text(block: (text: this) => void): this
- leading(): Number
- leading(leading: NumberAlias): this
- rebuild(enabled: boolean): this
- build(enabled: boolean): this
- clear(): this
- plain(text: string): this
- length(): number
- get(i: number): Tspan
- path(): TextPath
- path(d: PathArrayAlias | Path): TextPath
- track(): Element
- ax(): string
- ax(x: string): this
- ay(): string
- ay(y: string): this
- amove(x: number, y: number): this
- textPath(): TextPath
-
- // main.js, from extend/copy prototypes from Tspan
- tspan(text: string): Tspan
- tspan(block: (tspan: Tspan) => void): this
- }
-
- class Tspan extends Text implements Textable {
- constructor(node?: SVGElement)
- constructor(attr: TextAttr)
- dx(): number
- dx(x: NumberAlias): this
- dy(): number
- dy(y: NumberAlias): this
- newLine(): this
- tspan(text: string): Tspan
- tspan(block: (tspan: Tspan) => void): this
- length(): number
- text(): string
- text(text: string): this
- text(block: (text: this) => void): this
- plain(text: string): this
- }
-
- // textpath.js
- class TextPath extends Text {
- constructor()
- constructor(attr: TextPathAttr)
-
- array(): Array<any>
- plot(): PathArray
- plot(d: string): this
- track(): Path
- }
-
- // style.js
- class Style extends Element {
- constructor(node: SVGElement, attr?: StylingAttr)
- addText(text: string): this
- font(a: object): this
- font(a: string, v: string | number): this
- font(a: string): string
- rule(selector: string, obj: any): this
- }
-
- // use.js
- class Use extends Shape {
- use(element: string, file?: string): this
- }
-
- // viewbox.js
- type ViewBoxAlias = ViewBoxLike | number[] | string | Element
-
- interface ViewBox {
- x: number
- y: number
- width: number
- height: number
- toString(): string
- at(pos: number): ViewBox
- }
- }
|