809507116fc4e3d0e028235a06a2ef2575f376d7e2e51bad5622c33d98d776f135ba3d1140e696aea3b9b0c439893cbb4cb5b927de5fa78faf5f87127c9391 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. export type Dictionary<T> = {
  2. [key: string]: T
  3. }
  4. /**
  5. * Not readonly ArrayLike
  6. * Include Array, TypedArray
  7. */
  8. export type ArrayLike<T> = {
  9. [key: number]: T
  10. length: number
  11. }
  12. export type ImageLike = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement
  13. // subset of CanvasTextBaseline
  14. export type TextVerticalAlign = 'top' | 'middle' | 'bottom'
  15. // | 'center' // DEPRECATED
  16. // TODO: Have not support 'start', 'end' yet.
  17. // subset of CanvasTextAlign
  18. export type TextAlign = 'left' | 'center' | 'right'
  19. // | 'middle' // DEPRECATED
  20. export type FontWeight = 'normal' | 'bold' | 'bolder' | 'lighter' | number;
  21. export type FontStyle = 'normal' | 'italic' | 'oblique';
  22. export type BuiltinTextPosition = 'left' | 'right' | 'top' | 'bottom' | 'inside'
  23. | 'insideLeft' | 'insideRight' | 'insideTop' | 'insideBottom'
  24. | 'insideTopLeft' | 'insideTopRight'| 'insideBottomLeft' | 'insideBottomRight';
  25. export type WXCanvasRenderingContext = CanvasRenderingContext2D & {
  26. draw: () => void
  27. };
  28. export type ZRCanvasRenderingContext = CanvasRenderingContext2D & {
  29. dpr: number
  30. __attrCachedBy: boolean | number
  31. }
  32. // Properties zrender will extended to the raw event
  33. type ZREventProperties = {
  34. zrX: number
  35. zrY: number
  36. zrDelta: number
  37. // 'no_globalout' means: do not trigger "globalout" event to zr user.
  38. // 'only_globalout" means: only trigger "globalout" event, but do not
  39. // trigger other event to zr user.
  40. zrEventControl: 'no_globalout' | 'only_globalout'
  41. zrByTouch: boolean
  42. }
  43. export type ZRRawMouseEvent = MouseEvent & ZREventProperties
  44. export type ZRRawTouchEvent = TouchEvent & ZREventProperties
  45. export type ZRRawPointerEvent = TouchEvent & ZREventProperties
  46. export type ZRRawEvent = ZRRawMouseEvent | ZRRawTouchEvent | ZRRawPointerEvent
  47. export type ZRPinchEvent = ZRRawEvent & {
  48. pinchScale: number
  49. pinchX: number
  50. pinchY: number
  51. gestureEvent: string
  52. }
  53. export type ElementEventName = 'click' | 'dblclick' | 'mousewheel' | 'mouseout' |
  54. 'mouseover' | 'mouseup' | 'mousedown' | 'mousemove' | 'contextmenu' |
  55. 'drag' | 'dragstart' | 'dragend' | 'dragenter' | 'dragleave' | 'dragover' | 'drop' | 'globalout';
  56. export type ElementEventNameWithOn = 'onclick' | 'ondblclick' | 'onmousewheel' | 'onmouseout' |
  57. 'onmouseup' | 'onmousedown' | 'onmousemove' | 'oncontextmenu' |
  58. 'ondrag' | 'ondragstart' | 'ondragend' | 'ondragenter' | 'ondragleave' | 'ondragover' | 'ondrop';
  59. export type RenderedEvent = {
  60. elapsedTime: number
  61. };
  62. // Useful type methods
  63. export type PropType<TObj, TProp extends keyof TObj> = TObj[TProp];
  64. export type AllPropTypes<T> = PropType<T, keyof T>
  65. export type FunctionPropertyNames<T> = {[K in keyof T]: T[K] extends Function ? K : never}[keyof T];
  66. export type MapToType<T extends Dictionary<any>, S> = {
  67. [P in keyof T]: T[P] extends Dictionary<any> ? MapToType<T[P], S> : S
  68. }
  69. // See https://www.staging-typescript.org/docs/handbook/advanced-types.html#distributive-conditional-types
  70. // For the case:
  71. // `keyof A | B` does not equals to `Keyof A | Keyof B`
  72. // KeyOfDistributive<A | B> equals to `KeyOfDistributive<A> | KeyOfDistributive<B>`
  73. export type KeyOfDistributive<T> = T extends unknown ? keyof T : never;
  74. export type WithThisType<Func extends (...args: any) => any, This> =
  75. (this: This, ...args: Parameters<Func>) => ReturnType<Func>;