Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

1034 lignes
29 KiB

  1. export = svgjs;
  2. export as namespace svgjs;
  3. declare var svgjs: svgjs.Library;
  4. // todo add SVG.FX
  5. declare namespace svgjs {
  6. export interface Library {
  7. (id: string): Doc;
  8. (domElement: HTMLElement): Doc;
  9. ns: string;
  10. xmlns: string;
  11. xlink: string;
  12. svgjs: string;
  13. supported: boolean;
  14. did: number;
  15. eid(name: string): string;
  16. create(name: string): any;
  17. extend(parent: Object, obj: Object): void;
  18. invent(config: Object): any;
  19. adopt(node: HTMLElement): Element;
  20. prepare(element: HTMLElement): void;
  21. }
  22. interface LinkedHTMLElement extends HTMLElement {
  23. instance: Element;
  24. }
  25. // arrange.js
  26. interface Element {
  27. front(): this;
  28. back(): this;
  29. forward(): this;
  30. backward(): this;
  31. siblings(): Element[];
  32. position(): number;
  33. next(): Element;
  34. previous(): Element;
  35. before(element: Element): Element;
  36. after(element: Element): Element;
  37. }
  38. // array.js
  39. type ArrayAlias = _Array | number[] | string;
  40. interface _Array {
  41. new (array?: ArrayAlias, fallback?: number[]): _Array;
  42. value: number[];
  43. morph(array: number[]): this;
  44. settle(): number[];
  45. at(pos: NumberAlias): _Array;
  46. toString(): string;
  47. valueOf(): number[];
  48. parse(array: ArrayAlias): number[];
  49. split(string: string): number[];
  50. reverse(): this;
  51. clone(): _Array;
  52. }
  53. interface Library { Array: _Array }
  54. // attr.js
  55. interface Element {
  56. attr(): object;
  57. attr(name: string): any;
  58. attr(obj: Object): this;
  59. attr(name: string, value: any, namespace?: string): this;
  60. }
  61. // bare.js
  62. export interface Bare extends Element {
  63. new (element: string, inherit?: any): Bare;
  64. words(text: string): this;
  65. }
  66. interface Parent {
  67. element(element: string, inherit?: Object): Bare;
  68. }
  69. interface Library { Bare: Bare; }
  70. // boxes.js
  71. interface Box {
  72. height: number;
  73. width: number;
  74. y: number;
  75. x: number;
  76. cx: number;
  77. cy: number;
  78. w: number;
  79. h: number;
  80. x2: number;
  81. y2: number;
  82. merge(box: Box): Box;
  83. transform(m: Matrix): Box
  84. }
  85. export interface BBox extends Box {
  86. new (element?: Element): BBox;
  87. }
  88. export interface RBox extends Box {
  89. new (element?: Element): RBox;
  90. }
  91. export interface TBox extends Box {
  92. new (element?: Element): TBox;
  93. }
  94. interface Element {
  95. bbox(): BBox;
  96. rbox(element?: Element): RBox;
  97. tbox(): TBox;
  98. }
  99. interface Library {
  100. BBox: BBox;
  101. RBox: RBox;
  102. TBox: TBox;
  103. }
  104. // clip.js
  105. export interface ClipPath extends Container {
  106. new (): ClipPath;
  107. targets: Element[];
  108. remove(): this;
  109. }
  110. interface Container {
  111. clip(): ClipPath;
  112. }
  113. interface Element {
  114. clipWith(element: Element): this;
  115. clipper: ClipPath;
  116. unclip(): this;
  117. }
  118. interface Library { ClipPath: ClipPath; }
  119. // color.js
  120. interface ColorLike {
  121. r: number;
  122. g: number;
  123. b: number;
  124. }
  125. type ColorAlias = string | ColorLike;
  126. export interface Color extends ColorLike{
  127. new (): Color;
  128. new (color: ColorAlias): Color;
  129. toString(): string;
  130. toHex(): string;
  131. toRgb(): string;
  132. brightness(): number;
  133. morph(color: ColorAlias): Color;
  134. at(pos: number): Color;
  135. }
  136. interface Library { Color: Color; }
  137. // container.js
  138. interface ViewBoxLike {
  139. x: number;
  140. y: number;
  141. width: number;
  142. height:number;
  143. }
  144. export interface Container extends Parent {
  145. new (): Container;
  146. }
  147. interface Library { Container: Container }
  148. // data.js
  149. interface Element {
  150. data(name: string): any;
  151. data(name: string, value: any, sustain?: boolean): this;
  152. }
  153. // default.js
  154. interface Library {
  155. defaults: {
  156. attrs: {
  157. 'fill-opacity': number;
  158. 'stroke-opacity': number;
  159. 'stroke-width': number;
  160. 'stroke-linejoin': string;
  161. 'stroke-linecap': string;
  162. 'fill': string;
  163. 'stroke': string;
  164. 'opacity': number;
  165. 'x': number;
  166. 'y': number;
  167. 'cx': number;
  168. 'cy': number;
  169. 'width': number;
  170. 'height': number;
  171. 'r': number;
  172. 'rx': number;
  173. 'ry': number;
  174. 'offset': number;
  175. 'stop-opacity': number;
  176. 'stop-color': string;
  177. 'font-size': number;
  178. 'font-family': string;
  179. 'text-anchor': string;
  180. }
  181. }
  182. }
  183. // defs.js
  184. export interface Defs extends Container {
  185. new (): Defs;
  186. }
  187. interface Library { Defs: Defs }
  188. // doc.js
  189. export interface Doc extends Container {
  190. new (): Doc;
  191. new (id: string): Doc;
  192. new (domElement: HTMLElement): Doc;
  193. namespace(): this;
  194. defs(): Defs;
  195. parent(): HTMLElement;
  196. spof(): this;
  197. remove(): this;
  198. }
  199. interface Library { Doc: Doc; }
  200. type ParentTypeAlias = string | Doc | Nested | G;
  201. // element.js
  202. export interface Element {
  203. new (): Element;
  204. node: LinkedHTMLElement;
  205. type: string;
  206. x(x: NumberAlias): this;
  207. x(): number;
  208. y(y: NumberAlias): this;
  209. y(): number;
  210. //cx(x: number, anchor?: boolean): this;
  211. cx(x: number): this;
  212. cx(): number;
  213. //cy(y: number, anchor?: boolean): this;
  214. cy(y: number): this;
  215. cy(): number;
  216. move(x: NumberAlias, y: NumberAlias): this;
  217. center(x: number, y: number): this;
  218. width(width: NumberAlias): this;
  219. width(): number;
  220. height(height: NumberAlias): this;
  221. height(): number;
  222. size(width?: NumberAlias, height?: NumberAlias): this;
  223. clone(): Element;
  224. remove(): this;
  225. replace(element: Element): Element;
  226. addTo(parent: Parent): this;
  227. putIn(parent: Parent): Parent;
  228. id(): string;
  229. id(id: string): this;
  230. inside(x: number, y: number): boolean;
  231. show(): this;
  232. hide(): this;
  233. visible(): boolean;
  234. toString(): string;
  235. classes(): string[];
  236. hasClass(name: string): boolean;
  237. addClass(name: string): this;
  238. removeClass(name: string): this;
  239. toggleClass(name: string): this;
  240. reference(type: string): Element;
  241. // Add HTMLElement for Doc inheritance
  242. parent(type?: ParentTypeAlias): Parent | HTMLElement;
  243. doc(): Parent;
  244. parents(): Parent[];
  245. matches(selector: string): boolean;
  246. native(): LinkedHTMLElement;
  247. svg(svg: string): this;
  248. svg(): string;
  249. writeDataToDom(): this;
  250. setData(data: object): this;
  251. is(cls: any): boolean;
  252. }
  253. interface Library { Element: Element; }
  254. // ellipse.js
  255. interface CircleMethods extends Shape {
  256. rx(rx: number): this;
  257. rx(): this;
  258. ry(ry: number): this;
  259. ry(): this;
  260. radius(x: number, y?: number): this;
  261. }
  262. export interface Circle extends CircleMethods {
  263. new (): Circle;
  264. }
  265. export interface Ellipse extends CircleMethods {
  266. new (): Ellipse;
  267. }
  268. interface Container {
  269. circle(size?: number): Circle;
  270. ellipse(width?: number, height?: number): Ellipse;
  271. }
  272. interface Library {
  273. Circle: Circle;
  274. Ellipse: Ellipse;
  275. }
  276. // event.js
  277. interface Element {
  278. on(event: string, cb: Function, context?: Object): this;
  279. off(event: string, cb?: Function, context?: Object): this;
  280. fire(event: string, data?: any): this;
  281. fire(event: Event): this;
  282. event(): Event | CustomEvent;
  283. click(cb: Function): this;
  284. dblclick(cb: Function): this;
  285. mousedown(cb: Function): this;
  286. mouseup(cb: Function): this;
  287. mouseover(cb: Function): this;
  288. mouseout(cb: Function): this;
  289. mousemove(cb: Function): this;
  290. touchstart(cb: Function): this;
  291. touchmove(cb: Function): this;
  292. touchleave(cb: Function): this;
  293. touchend(cb: Function): this;
  294. touchcancel(cb: Function): this;
  295. }
  296. //fx.js
  297. interface Library {
  298. easing: {
  299. '-'(pos: number): number;
  300. '<>'(pos: number): number;
  301. '>'(pos: number): number;
  302. '<'(pos: number): number;
  303. }
  304. }
  305. interface Element {
  306. animate(duration?: number, ease?: string, delay?: number): Animation;
  307. animate(info: { ease?: string; duration?: number; delay?: number }): Animation;
  308. stop(jumpToEnd:boolean,clearQueue:boolean): Animation;
  309. }
  310. // TODO finishs FX
  311. interface StopProperties {
  312. color?: ColorAlias;
  313. offset?: number;
  314. opacity?: number;
  315. }
  316. // gradient.js
  317. export interface Stop extends Element {
  318. new (): Stop;
  319. update(offset?: number, color?: ColorAlias, opacity?: number): this;
  320. update(opts: StopProperties): this;
  321. }
  322. export interface Gradient extends Container {
  323. new (type: string): Gradient;
  324. at(offset?: number, color?: ColorAlias, opacity?: number): Stop;
  325. at(opts: StopProperties): Stop;
  326. update(block?: Function): this;
  327. fill(): string;
  328. fill(...params: any[]): never;
  329. toString(): string;
  330. from(x: number, y: number): this;
  331. to(x: number, y: number): this;
  332. radius(x: number, y?: number): this;
  333. }
  334. interface Container {
  335. gradient(type: string, block?: (stop: Gradient) => void): Gradient;
  336. }
  337. interface Library {
  338. Gradient: Gradient;
  339. Stop: Stop;
  340. }
  341. // group.js
  342. export interface G extends Container {
  343. new (): G;
  344. gbox(): BBox;
  345. }
  346. interface Container { group(): G; }
  347. interface Library { G: G; }
  348. // hyperlink.js
  349. export interface A extends Container {
  350. new (): A;
  351. to(url: string): this;
  352. to(): string;
  353. show(target: string): this;
  354. show(): string;
  355. show(...params: any[]): never;
  356. target(target: string): this;
  357. target(): string;
  358. }
  359. interface Container {
  360. link(url: string): A;
  361. }
  362. interface Element {
  363. linkTo(url: string): A;
  364. linkTo(url: (link: A) => void): A;
  365. }
  366. interface Library { A: A; }
  367. // image.js
  368. export interface Image extends Shape {
  369. new (): Image;
  370. load(url?: string): this;
  371. loaded(cb: (info: { width: number, height: number, ratio: number, url: string }) => void): this;
  372. error(cb: (event: Event) => void): this;
  373. }
  374. interface Container {
  375. image(): Image;
  376. image(href: string, size?: number): Image;
  377. image(href: string, width?: number, height?: number): Image;
  378. }
  379. interface Library { Image: Image; }
  380. // line.js
  381. interface ArrayPoint extends Array<number> { }
  382. type PointArrayAlias = ArrayPoint[] | number[] | PointArray | string;
  383. export interface Line extends Shape {
  384. new (): Line;
  385. array(): PointArray;
  386. plot(points: PointArrayAlias): this;
  387. plot(x1: number, y1: number, x2: number, y2: number): this;
  388. move(x: number, y: number): this;
  389. size(width?: number, height?: number): this;
  390. }
  391. interface Container {
  392. line(points: PointArrayAlias): Line;
  393. line(x1: number, y1: number, x2: number, y2: number): Line;
  394. }
  395. interface Library { Line: Line; }
  396. // marker.js
  397. export interface Marker extends Container {
  398. new (): Marker;
  399. ref(x: string | number, y: string | number): this;
  400. update(block: (marker: Marker) => void): this;
  401. toString(): string;
  402. }
  403. interface Container {
  404. marker(width?: number, height?: number, block?: (marker: Marker) => void): Marker
  405. }
  406. interface Defs {
  407. marker(width?: number, height?: number, block?: (marker: Marker) => void): Marker
  408. }
  409. interface Line {
  410. marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;
  411. marker(position: string, marker: Marker): Marker;
  412. }
  413. interface Polyline {
  414. marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;
  415. marker(position: string, marker: Marker): Marker;
  416. }
  417. interface Polygon {
  418. marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;
  419. marker(position: string, marker: Marker): Marker;
  420. }
  421. interface Path {
  422. marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;
  423. marker(position: string, marker: Marker): Marker;
  424. }
  425. interface Library {
  426. Marker: Marker;
  427. }
  428. // mask.js
  429. export interface Mask extends Container {
  430. new (): Mask;
  431. targets: Element[];
  432. }
  433. interface Container { mask(): Mask; }
  434. interface Element {
  435. maskWith(mask: Mask): this;
  436. maskWith(element: Element): this;
  437. masker: Mask;
  438. unmask(): this;
  439. }
  440. interface Library { Mask: Mask; }
  441. // matrix.js
  442. interface MatrixExtract {
  443. x: number;
  444. y: number;
  445. transformedX: number;
  446. transformedY: number;
  447. skewX: number;
  448. skewY: number;
  449. scaleX: number;
  450. scaleY: number;
  451. rotation: number;
  452. a: number;
  453. b: number;
  454. c: number;
  455. d: number;
  456. e: number;
  457. f: number;
  458. matrix: Matrix;
  459. }
  460. interface MatrixLike {
  461. a: number;
  462. b: number;
  463. c: number;
  464. d: number;
  465. e: number;
  466. f: number;
  467. }
  468. type MatrixAlias = MatrixLike | number[] | Element | string;
  469. export interface Matrix {
  470. new (): Matrix;
  471. new (source: MatrixAlias): Matrix;
  472. new (a: number, b: number, c: number, d: number, e: number, f: number): Matrix;
  473. a: number;
  474. b: number;
  475. c: number;
  476. d: number;
  477. e: number;
  478. f: number;
  479. extract(): MatrixExtract;
  480. clone(): Matrix;
  481. morph(matrix: Matrix): this;
  482. at(pos: number): Matrix;
  483. multiply(matrix: Matrix): Matrix;
  484. inverse(): Matrix;
  485. translate(x: number, y: number): Matrix;
  486. scale(x: number, y?: number, cx?: number, cy?: number): Matrix;
  487. rotate(r: number, cx?: number, cy?: number): Matrix;
  488. flip(a: string, offset?: number): Matrix;
  489. flip(offset?: number): Matrix;
  490. skew(x: number, y?: number, cx?: number, cy?: number): Matrix;
  491. skewX(x: number, cx?: number, cy?: number): Matrix;
  492. skewY(y: number, cx?: number, cy?: number): Matrix;
  493. around(cx: number, cy: number, matrix: Matrix): Matrix;
  494. native(): SVGMatrix;
  495. toString(): string;
  496. }
  497. interface Element {
  498. ctm(): Matrix;
  499. screenCTM(): Matrix;
  500. }
  501. interface Library { Matrix: Matrix }
  502. // memory.js
  503. interface Element {
  504. remember(name: string, value: any): this;
  505. remember(name: string): any;
  506. remember(obj: Object): this;
  507. forget(...keys: string[]): this;
  508. forget(): this;
  509. memory(): Object;
  510. }
  511. // nested.js
  512. export interface Nested extends Container {
  513. new (): Nested;
  514. }
  515. interface Container { nested(): Nested; }
  516. interface Library { Nested: Nested; }
  517. // number.js
  518. interface _Number {
  519. new (): _Number;
  520. new (value: _Number): _Number;
  521. new (value: string): _Number;
  522. new (value: number, unit?: any): _Number;
  523. toString(): string;
  524. toJSON(): Object;
  525. valueOf(): number;
  526. plus(number: number): _Number;
  527. minus(number: number): _Number;
  528. times(number: number): _Number;
  529. divide(number: number): _Number;
  530. to(unit: string): _Number;
  531. morph(number: any): this;
  532. at(pos: number): _Number;
  533. }
  534. interface Library { Number: _Number; }
  535. type NumberAlias = _Number | number | string;
  536. // parent.js
  537. export interface Parent extends Element {
  538. new (): Parent;
  539. children(): Element[];
  540. add(element: Element, i?: number): this;
  541. put(element: Element, i?: number): Element;
  542. has(element: Element): boolean;
  543. index(element: Element): number;
  544. get(i: number): Element;
  545. first(): Element;
  546. last(): Element;
  547. each(block: (index: number, children: Element[]) => void, deep?: boolean): this;
  548. removeElement(element: Element): this;
  549. clear(): this;
  550. defs(): Defs;
  551. }
  552. interface Library{ Parent: Parent }
  553. // path.js
  554. interface PathArrayPoint extends Array<number | string> { }
  555. type PathArrayAlias = PathArray | (string | number)[] | PathArrayPoint[] | string;
  556. export interface Path extends Shape {
  557. new (): Path;
  558. morphArray: PathArray;
  559. array(): PathArray;
  560. plot(d: PathArrayAlias): this;
  561. }
  562. interface Container {
  563. path(): Path;
  564. path(d: PathArrayAlias): Path;
  565. }
  566. interface Library{ Path: Path }
  567. // pathArray.js
  568. export interface PathArray extends _Array {
  569. new (): PathArray;
  570. new (d: PathArrayAlias): PathArray;
  571. move(x: number, y: number): this;
  572. size(width?: number, height?: number): this;
  573. parse(array: PathArrayAlias): PathArrayPoint[];
  574. parse(array: ArrayAlias): never;
  575. bbox(): BBox;
  576. }
  577. interface Library { PathArray: PathArray; }
  578. // pattern.js
  579. export interface Pattern extends Container {
  580. new (): Pattern;
  581. fill(): string;
  582. fill(...rest: any[]): never;
  583. update(block: (pattern: Pattern) => void): this;
  584. toString(): string;
  585. }
  586. interface Container {
  587. pattern(width?: number, height?: number, block?: (pattern: Pattern) => void): Pattern
  588. }
  589. interface Library { Pattern: Pattern }
  590. // point.js
  591. export interface Point {
  592. new (): Point;
  593. new (position: ArrayPoint): Point;
  594. new (point: Point): Point;
  595. new (position: { x: number, y: number }): Point;
  596. new (x: number, y: number): Point;
  597. x: number;
  598. y: number;
  599. clone(): Point;
  600. morph(point: Point): this;
  601. at(pos: number): Point;
  602. native(): SVGPoint;
  603. transform(matrix: Matrix): Point;
  604. }
  605. interface Library { Point: Point; }
  606. interface Element {
  607. point(): Point;
  608. point(position: ArrayPoint): Point;
  609. point(position: { x: number, y: number }): Point;
  610. point(x: number, y: number): Point;
  611. }
  612. // pointArray.js
  613. export interface PointArray extends _Array {
  614. new (): PointArray;
  615. new (points: PointArrayAlias): PointArray;
  616. toString(): string;
  617. toLine(): {
  618. x1: number;
  619. y1: number;
  620. x2: number;
  621. y2: number;
  622. };
  623. parse(points: PointArrayAlias): ArrayPoint[];
  624. parse(array: ArrayAlias): never;
  625. move(x: number, y: number): this;
  626. size(width?: number, height?: number): this;
  627. bbox(): BBox;
  628. }
  629. interface Library { PointArray: PointArray }
  630. // poly.js
  631. interface poly extends Shape {
  632. array(): PointArray;
  633. plot(p: PointArrayAlias): this;
  634. move(x: number, y: number): this;
  635. size(width: number, height: number): this;
  636. }
  637. export interface PolyLine extends poly {
  638. new (): PolyLine;
  639. }
  640. interface Library { PolyLine: PolyLine; }
  641. interface Container {
  642. polyline(points: PointArrayAlias): PolyLine;
  643. }
  644. export interface Polygon extends poly {
  645. new (): Polygon;
  646. }
  647. interface Library { Polygon: Polygon; }
  648. interface Container {
  649. polygon(points: PointArrayAlias): Polygon;
  650. }
  651. // rect.js
  652. export interface Rect extends Shape {
  653. new (): Rect;
  654. radius(x: number, y?: number): this;
  655. }
  656. interface Library { Rect: Rect; }
  657. interface Container {
  658. rect(width?: number, height?: number): Rect;
  659. }
  660. // regex.js
  661. interface Library {
  662. regex: {
  663. numberAndUnit: RegExp;
  664. hex: RegExp;
  665. rgb: RegExp;
  666. reference: RegExp;
  667. transforms: RegExp;
  668. whitespace: RegExp;
  669. isHex: RegExp;
  670. isRgb: RegExp;
  671. isCss: RegExp;
  672. isBlank: RegExp;
  673. isNumber: RegExp;
  674. isPercent: RegExp;
  675. isImage: RegExp;
  676. delimiter: RegExp;
  677. hyphen: RegExp;
  678. pathLetters: RegExp;
  679. isPathLetter: RegExp;
  680. dots: RegExp;
  681. }
  682. }
  683. // selector.js
  684. interface Library {
  685. get(id: string): Element;
  686. select(query: string, parent?: HTMLElement): Set;
  687. }
  688. interface Parent {
  689. select(query: string): Set;
  690. }
  691. // set.js
  692. export interface Set {
  693. new (members?: Element[]): Set;
  694. add(...elments: Element[]): this;
  695. remove(element: Element): this;
  696. each(block: (index: number, members: Element[]) => void): this;
  697. clear(): this;
  698. length(): number;
  699. has(element: Element): this;
  700. index(element: Element): number;
  701. get(i: number): Element;
  702. first(): Element;
  703. last(): Element;
  704. valueOf(): Element[];
  705. bbox(): BBox;
  706. click(cb: Function): Set;
  707. }
  708. interface Container { set(members?: Element[]): Set; }
  709. interface Library { Set: Set; }
  710. // shape.js
  711. export interface Shape extends Element {
  712. new (): Shape;
  713. }
  714. interface Library { Shape: Shape; }
  715. // style.js
  716. interface Element {
  717. style(styles: Object): this;
  718. style(style: string): any;
  719. style(style: string, value: any): this;
  720. }
  721. // sugar.js
  722. interface StrokeData {
  723. color?: string;
  724. width?: number;
  725. opacity?: number;
  726. linecap?: string;
  727. linejoin?: string;
  728. miterlimit?: number;
  729. dasharray?: string;
  730. dashoffset?: number;
  731. }
  732. interface Element {
  733. fill(fill: { color?: string; opacity?: number, rule?: string }): this;
  734. fill(color: string): this;
  735. fill(pattern: Element): this;
  736. fill(image: Image): this;
  737. stroke(stroke: StrokeData): this;
  738. stroke(color: string): this;
  739. rotate(d: number, cx?: number, cy?: number): this;
  740. skew(x: number, y?: number, cx?: number, cy?: number): this;
  741. scale(x: number, y?: number, cx?: number, cy?: number): this;
  742. translate(x: number, y: number): this;
  743. flip(a: string, offset?: number): this;
  744. flip(offset?: number): this;
  745. matrix(m: MatrixAlias): this;
  746. matrix(a: number, b: number, c: number, d: number, e: number, f: number): this;
  747. opacity(o: number): this;
  748. opacity(): number;
  749. dx(x: NumberAlias): this;
  750. dy(y: NumberAlias): this;
  751. dmove(x: NumberAlias, y: NumberAlias): this;
  752. }
  753. interface Path {
  754. length(): number;
  755. pointAt(length: number): { x: number, y: number };
  756. }
  757. interface FontData {
  758. family?: string;
  759. size?: NumberAlias;
  760. anchor?: string;
  761. leading?: NumberAlias;
  762. weight?: string;
  763. style?: string
  764. }
  765. interface Parent {
  766. font(font: FontData): this;
  767. }
  768. interface Text {
  769. font(font: FontData): this;
  770. }
  771. // text.js
  772. export interface Text extends Shape {
  773. new (): Text;
  774. clone(): Text;
  775. text(): string;
  776. text(text: string): this;
  777. text(block: (text: Text) => void): this;
  778. size(fontSize: NumberAlias): this;
  779. leading(): number;
  780. leading(leading: NumberAlias): this;
  781. lines(): Set;
  782. rebuild(enabled: boolean): this;
  783. build(enabled: boolean): this;
  784. plain(text: string): this;
  785. tspan(text: string): Tspan;
  786. tspan(block: (tspan: Tspan) => void): this;
  787. clear(): this;
  788. length(): number;
  789. }
  790. interface Container {
  791. text(text: string): Text;
  792. text(block: (tspan: Tspan) => void): Text;
  793. plain(text: string): Text;
  794. }
  795. interface Library { Text: Text; }
  796. export interface Tspan extends Shape {
  797. new (): Tspan;
  798. text(): string;
  799. text(text: string): Tspan;
  800. text(block: (tspan: Tspan) => void): this;
  801. dx(x: NumberAlias): this;
  802. dy(y: NumberAlias): this;
  803. newLine(): this;
  804. plain(text: any): this;
  805. tspan(text: string): Tspan;
  806. tspan(block: (tspan: Tspan) => void): this;
  807. clear(): this;
  808. length(): number;
  809. }
  810. interface Library { Tspan: Tspan; }
  811. // textpath.js
  812. export interface TextPath extends Parent {
  813. new (): TextPath;
  814. }
  815. interface Text {
  816. path(d: PathArrayAlias): this;
  817. track(): Element;
  818. textPath(): Element;
  819. }
  820. interface Library { TextPath: TextPath; }
  821. // transform.js
  822. interface Element {
  823. transform(t: Transform, relative?: boolean): Element;
  824. transform(): Transform;
  825. untransform(): this;
  826. matrixify(): Matrix;
  827. toParent(parent: Parent): this;
  828. toDoc(): this;
  829. }
  830. interface Transform {
  831. x?: number;
  832. y?: number;
  833. rotation?: number;
  834. cx?: number;
  835. cy?: number;
  836. scaleX?: number;
  837. scaleY?: number;
  838. skewX?: number;
  839. skewY?: number;
  840. matrix?: Matrix; // 1,0,0,1,0,0
  841. a?: number; // direct digits of matrix
  842. b?: number;
  843. c?: number;
  844. d?: number;
  845. e?: number;
  846. f?: number;
  847. scale?: number;
  848. }
  849. export interface Transformation {
  850. new (...transform: Transform[]): Transformation;
  851. new (source: Transform, inversed?: boolean): Transformation;
  852. at(pos: number): Matrix;
  853. undo(transform: Transform): this
  854. }
  855. export interface Translate extends Transformation {new (): Translate}
  856. export interface Rotate extends Transformation {new (): Rotate}
  857. export interface Scale extends Transformation {new (): Scale}
  858. export interface Skew extends Transformation {new (): Skew}
  859. interface Library {
  860. Transformation: Transformation;
  861. Translate: Translate;
  862. Rotate: Rotate;
  863. Scale: Scale;
  864. Skew: Skew;
  865. }
  866. // ungroup.js
  867. interface Parent {
  868. ungroup(parent: Parent, depth?: number): this;
  869. flatten(parent: Parent, depth?: number): this;
  870. }
  871. // use.js
  872. export interface Use extends Shape {
  873. new (): Use;
  874. element(element: Element, file?: string): this;
  875. }
  876. interface Container {
  877. use(element: Element | string, file?: string): Use;
  878. }
  879. interface Library { Use: Use; }
  880. // utilities.js
  881. interface Library {
  882. utils: {
  883. map(array: any[], block: Function): any;
  884. filter(array: any[], block: Function): any;
  885. radians(d: number): number;
  886. degrees(r: number): number;
  887. filterSVGElements: HTMLElement[]
  888. }
  889. }
  890. // viewbox.js
  891. type ViewBoxAlias = ViewBoxLike | number[] | string | Element;
  892. interface ViewBox {
  893. new (source: ViewBoxAlias): ViewBox;
  894. new (x: number, y: number, width: number, height: number): ViewBox;
  895. x: number;
  896. y: number;
  897. width: number;
  898. height: number;
  899. zoom?: number;
  900. toString(): string;
  901. morph(source: ViewBoxAlias): ViewBox;
  902. morph(x: number, y: number, width: number, height: number): ViewBox;
  903. at(pos:number): ViewBox;
  904. }
  905. interface Container {
  906. viewbox(): ViewBox;
  907. viewbox(x: number, y: number, width: number, height: number): this;
  908. viewbox(viewbox: ViewBoxLike): this;
  909. }
  910. interface Library { ViewBox: ViewBox; }
  911. export interface Animation {
  912. stop(): Animation;
  913. finish(): Animation;
  914. pause(): Animation;
  915. play(): Animation;
  916. reverse(reversed?: boolean): Animation;
  917. attr(name: string, value: any, namespace?: string): Animation;
  918. attr(obj: Object): Animation;
  919. attr(name: string): any;
  920. attr(): object;
  921. viewbox(x: number, y: number, w: number, h: number): Animation;
  922. move(x: number, y: number, anchor?: boolean): Animation;
  923. dmove(x: number, y: number): Animation;
  924. x(x: number, anchor?: boolean): Animation;
  925. y(y: number, anchor?: boolean): Animation;
  926. center(x: number, y: number, anchor?: boolean): Animation;
  927. cx(x: number, anchor?: boolean): Animation;
  928. cy(y: number, anchor?: boolean): Animation;
  929. size(w: number, h: number, anchor?: boolean): Animation;
  930. during(cb: (pos: number) => void): Animation;
  931. to(value: number): Animation;
  932. after(cb: () => void): Animation;
  933. delay(delayMS: number): Animation;
  934. rotate(degrees: number, cx?: number, cy?: number): Animation;
  935. skew(skewX: number, skewY?: number, cx?: number, cy?: number): Animation;
  936. scale(scaleX: number, scaleY?: number, cx?: number, cy?: number): Animation;
  937. translate(x: number, y: number): Animation;
  938. transform(t: Transform, relative?: boolean): Animation;
  939. // TODO style, etc, bbox...
  940. }
  941. }