{"version":3,"file":"rrweb-types.umd.cjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n  serializedNodeWithId,\n  Mirror,\n  INode,\n  DataURLOptions,\n} from '@smartesting/rrweb-snapshot';\n\nexport enum EventType {\n  DomContentLoaded,\n  Load,\n  FullSnapshot,\n  IncrementalSnapshot,\n  Meta,\n  Custom,\n  Plugin,\n}\n\nexport type domContentLoadedEvent = {\n  type: EventType.DomContentLoaded;\n  data: unknown;\n};\n\nexport type loadedEvent = {\n  type: EventType.Load;\n  data: unknown;\n};\n\nexport type fullSnapshotEvent = {\n  type: EventType.FullSnapshot;\n  data: {\n    node: serializedNodeWithId;\n    initialOffset: {\n      top: number;\n      left: number;\n    };\n  };\n};\n\nexport type incrementalSnapshotEvent = {\n  type: EventType.IncrementalSnapshot;\n  data: incrementalData;\n};\n\nexport type metaEvent = {\n  type: EventType.Meta;\n  data: {\n    href: string;\n    width: number;\n    height: number;\n  };\n};\n\nexport type customEvent<T = unknown> = {\n  type: EventType.Custom;\n  data: {\n    tag: string;\n    payload: T;\n  };\n};\n\nexport type pluginEvent<T = unknown> = {\n  type: EventType.Plugin;\n  data: {\n    plugin: string;\n    payload: T;\n  };\n};\n\nexport enum IncrementalSource {\n  Mutation,\n  MouseMove,\n  MouseInteraction,\n  Scroll,\n  ViewportResize,\n  Input,\n  TouchMove,\n  MediaInteraction,\n  StyleSheetRule,\n  CanvasMutation,\n  Font,\n  Log,\n  Drag,\n  StyleDeclaration,\n  Selection,\n  AdoptedStyleSheet,\n  CustomElement,\n}\n\nexport type mutationData = {\n  source: IncrementalSource.Mutation;\n} & mutationCallbackParam;\n\nexport type mousemoveData = {\n  source:\n    | IncrementalSource.MouseMove\n    | IncrementalSource.TouchMove\n    | IncrementalSource.Drag;\n  positions: mousePosition[];\n};\n\nexport type mouseInteractionData = {\n  source: IncrementalSource.MouseInteraction;\n} & mouseInteractionParam;\n\nexport type scrollData = {\n  source: IncrementalSource.Scroll;\n} & scrollPosition;\n\nexport type viewportResizeData = {\n  source: IncrementalSource.ViewportResize;\n} & viewportResizeDimension;\n\nexport type inputData = {\n  source: IncrementalSource.Input;\n  id: number;\n} & inputValue;\n\nexport type mediaInteractionData = {\n  source: IncrementalSource.MediaInteraction;\n} & mediaInteractionParam;\n\nexport type styleSheetRuleData = {\n  source: IncrementalSource.StyleSheetRule;\n} & styleSheetRuleParam;\n\nexport type styleDeclarationData = {\n  source: IncrementalSource.StyleDeclaration;\n} & styleDeclarationParam;\n\nexport type canvasMutationData = {\n  source: IncrementalSource.CanvasMutation;\n} & canvasMutationParam;\n\nexport type fontData = {\n  source: IncrementalSource.Font;\n} & fontParam;\n\nexport type selectionData = {\n  source: IncrementalSource.Selection;\n} & selectionParam;\n\nexport type adoptedStyleSheetData = {\n  source: IncrementalSource.AdoptedStyleSheet;\n} & adoptedStyleSheetParam;\n\nexport type customElementData = {\n  source: IncrementalSource.CustomElement;\n} & customElementParam;\n\nexport type incrementalData =\n  | mutationData\n  | mousemoveData\n  | mouseInteractionData\n  | scrollData\n  | viewportResizeData\n  | inputData\n  | mediaInteractionData\n  | styleSheetRuleData\n  | canvasMutationData\n  | fontData\n  | selectionData\n  | styleDeclarationData\n  | adoptedStyleSheetData\n  | customElementData;\n\nexport type eventWithoutTime =\n  | domContentLoadedEvent\n  | loadedEvent\n  | fullSnapshotEvent\n  | incrementalSnapshotEvent\n  | metaEvent\n  | customEvent\n  | pluginEvent;\n\n/**\n * @deprecated intended for internal use\n * a synonym for eventWithoutTime\n */\nexport type event = eventWithoutTime;\n\nexport type eventWithTime = eventWithoutTime & {\n  timestamp: number;\n  delay?: number;\n};\n\nexport type canvasEventWithTime = eventWithTime & {\n  type: EventType.IncrementalSnapshot;\n  data: canvasMutationData;\n};\n\nexport type blockClass = string | RegExp;\n\nexport type maskTextClass = string | RegExp;\n\nexport type SamplingStrategy = Partial<{\n  /**\n   * false means not to record mouse/touch move events\n   * number is the throttle threshold of recording mouse/touch move\n   */\n  mousemove: boolean | number;\n  /**\n   * number is the throttle threshold of mouse/touch move callback\n   */\n  mousemoveCallback: number;\n  /**\n   * false means not to record mouse interaction events\n   * can also specify record some kinds of mouse interactions\n   */\n  mouseInteraction: boolean | Record<string, boolean | undefined>;\n  /**\n   * number is the throttle threshold of recording scroll\n   */\n  scroll: number;\n  /**\n   * number is the throttle threshold of recording media interactions\n   */\n  media: number;\n  /**\n   * 'all' will record all the input events\n   * 'last' will only record the last input value while input a sequence of chars\n   */\n  input: 'all' | 'last';\n  /**\n   * 'all' will record every single canvas call\n   * number between 1 and 60, will record an image snapshots in a web-worker a (maximum) number of times per second.\n   *                          Number only supported where [`OffscreenCanvas`](http://mdn.io/offscreencanvas) is supported.\n   */\n  canvas: 'all' | number;\n}>;\n\nexport interface ICrossOriginIframeMirror {\n  getId(\n    iframe: HTMLIFrameElement,\n    remoteId: number,\n    parentToRemoteMap?: Map<number, number>,\n    remoteToParentMap?: Map<number, number>,\n  ): number;\n  getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[];\n  getRemoteId(\n    iframe: HTMLIFrameElement,\n    parentId: number,\n    map?: Map<number, number>,\n  ): number;\n  getRemoteIds(iframe: HTMLIFrameElement, parentId: number[]): number[];\n  reset(iframe?: HTMLIFrameElement): void;\n}\n\nexport type RecordPlugin<TOptions = unknown> = {\n  name: string;\n  observer?: (\n    cb: (...args: Array<unknown>) => void,\n    win: IWindow,\n    options: TOptions,\n  ) => listenerHandler;\n  eventProcessor?: <TExtend>(event: eventWithTime) => eventWithTime & TExtend;\n  getMirror?: (mirrors: {\n    nodeMirror: Mirror;\n    crossOriginIframeMirror: ICrossOriginIframeMirror;\n    crossOriginIframeStyleMirror: ICrossOriginIframeMirror;\n  }) => void;\n  options: TOptions;\n};\n\nexport type hooksParam = {\n  mutation?: mutationCallBack;\n  mousemove?: mousemoveCallBack;\n  mouseInteraction?: mouseInteractionCallBack;\n  scroll?: scrollCallback;\n  viewportResize?: viewportResizeCallback;\n  input?: inputCallback;\n  mediaInteaction?: mediaInteractionCallback;\n  styleSheetRule?: styleSheetRuleCallback;\n  styleDeclaration?: styleDeclarationCallback;\n  canvasMutation?: canvasMutationCallback;\n  font?: fontCallback;\n  selection?: selectionCallback;\n  customElement?: customElementCallback;\n};\n\n// https://dom.spec.whatwg.org/#interface-mutationrecord\nexport type mutationRecord = Readonly<{\n  type: string;\n  target: Node;\n  oldValue: string | null;\n  addedNodes: NodeList;\n  removedNodes: NodeList;\n  attributeName: string | null;\n}>;\n\nexport type textCursor = {\n  node: Node;\n  value: string | null;\n};\nexport type textMutation = {\n  id: number;\n  value: string | null;\n};\n\nexport type styleOMValue = {\n  [key: string]: styleValueWithPriority | string | false;\n};\n\nexport type styleValueWithPriority = [string, string];\n\nexport type attributeCursor = {\n  node: Node;\n  attributes: {\n    [key: string]: string | styleOMValue | null;\n  };\n  styleDiff: styleOMValue;\n  _unchangedStyles: styleOMValue;\n};\nexport type attributeMutation = {\n  id: number;\n  attributes: {\n    [key: string]: string | styleOMValue | null;\n  };\n};\n\nexport type removedNodeMutation = {\n  parentId: number;\n  id: number;\n  isShadow?: boolean;\n};\n\nexport type addedNodeMutation = {\n  parentId: number;\n  // Newly recorded mutations will not have previousId any more, just for compatibility\n  previousId?: number | null;\n  nextId: number | null;\n  node: serializedNodeWithId;\n};\n\nexport type mutationCallbackParam = {\n  texts: textMutation[];\n  attributes: attributeMutation[];\n  removes: removedNodeMutation[];\n  adds: addedNodeMutation[];\n  isAttachIframe?: true;\n};\n\nexport type mutationCallBack = (m: mutationCallbackParam) => void;\n\nexport type mousemoveCallBack = (\n  p: mousePosition[],\n  source:\n    | IncrementalSource.MouseMove\n    | IncrementalSource.TouchMove\n    | IncrementalSource.Drag,\n) => void;\n\nexport type mousePosition = {\n  x: number;\n  y: number;\n  id: number;\n  timeOffset: number;\n};\n\nexport type mouseMovePos = {\n  x: number;\n  y: number;\n  id: number;\n  debugData: incrementalData;\n};\n\nexport enum MouseInteractions {\n  MouseUp,\n  MouseDown,\n  Click,\n  ContextMenu,\n  DblClick,\n  Focus,\n  Blur,\n  TouchStart,\n  TouchMove_Departed, // we will start a separate observer for touch move event\n  TouchEnd,\n  TouchCancel,\n}\n\nexport enum PointerTypes {\n  Mouse,\n  Pen,\n  Touch,\n}\n\nexport enum CanvasContext {\n  '2D',\n  WebGL,\n  WebGL2,\n}\n\nexport type SerializedCanvasArg =\n  | {\n      rr_type: 'ArrayBuffer';\n      base64: string; // base64\n    }\n  | {\n      rr_type: 'Blob';\n      data: Array<CanvasArg>;\n      type?: string;\n    }\n  | {\n      rr_type: string;\n      src: string; // url of image\n    }\n  | {\n      rr_type: string;\n      args: Array<CanvasArg>;\n    }\n  | {\n      rr_type: string;\n      index: number;\n    };\n\nexport type CanvasArg =\n  | SerializedCanvasArg\n  | string\n  | number\n  | boolean\n  | null\n  | CanvasArg[];\n\ntype mouseInteractionParam = {\n  type: MouseInteractions;\n  id: number;\n  x?: number;\n  y?: number;\n  pointerType?: PointerTypes;\n};\n\nexport type mouseInteractionCallBack = (d: mouseInteractionParam) => void;\n\nexport type scrollPosition = {\n  id: number;\n  x: number;\n  y: number;\n};\n\nexport type scrollCallback = (p: scrollPosition) => void;\n\nexport type styleSheetAddRule = {\n  rule: string;\n  index?: number | number[];\n};\n\nexport type styleSheetDeleteRule = {\n  index: number | number[];\n};\n\nexport type styleSheetRuleParam = {\n  id?: number;\n  styleId?: number;\n  removes?: styleSheetDeleteRule[];\n  adds?: styleSheetAddRule[];\n  replace?: string;\n  replaceSync?: string;\n};\n\nexport type styleSheetRuleCallback = (s: styleSheetRuleParam) => void;\n\nexport type adoptedStyleSheetParam = {\n  // id indicates the node id of document or shadow DOMs' host element.\n  id: number;\n  // New CSSStyleSheets which have never appeared before.\n  styles?: {\n    styleId: number;\n    rules: styleSheetAddRule[];\n  }[];\n  // StyleSheet ids to be adopted.\n  styleIds: number[];\n};\n\nexport type adoptedStyleSheetCallback = (a: adoptedStyleSheetParam) => void;\n\nexport type styleDeclarationParam = {\n  id?: number;\n  styleId?: number;\n  index: number[];\n  set?: {\n    property: string;\n    value: string | null;\n    priority: string | undefined;\n  };\n  remove?: {\n    property: string;\n  };\n};\n\nexport type styleDeclarationCallback = (s: styleDeclarationParam) => void;\n\nexport type canvasMutationCommand = {\n  property: string;\n  args: Array<unknown>;\n  setter?: true;\n};\n\nexport type canvasMutationParam =\n  | {\n      id: number;\n      type: CanvasContext;\n      commands: canvasMutationCommand[];\n    }\n  | ({\n      id: number;\n      type: CanvasContext;\n    } & canvasMutationCommand);\n\nexport type canvasMutationWithType = {\n  type: CanvasContext;\n} & canvasMutationCommand;\n\nexport type canvasMutationCallback = (p: canvasMutationParam) => void;\n\nexport type canvasManagerMutationCallback = (\n  target: HTMLCanvasElement,\n  p: canvasMutationWithType,\n) => void;\n\nexport type ImageBitmapDataURLWorkerParams = {\n  id: number;\n  bitmap: ImageBitmap;\n  width: number;\n  height: number;\n  dataURLOptions: DataURLOptions;\n};\n\nexport type ImageBitmapDataURLWorkerResponse =\n  | {\n      id: number;\n    }\n  | {\n      id: number;\n      type: string;\n      base64: string;\n      width: number;\n      height: number;\n    };\n\nexport type fontParam = {\n  family: string;\n  fontSource: string;\n  buffer: boolean;\n  descriptors?: FontFaceDescriptors;\n};\n\nexport type fontCallback = (p: fontParam) => void;\n\nexport type viewportResizeDimension = {\n  width: number;\n  height: number;\n};\n\nexport type viewportResizeCallback = (d: viewportResizeDimension) => void;\n\nexport type inputValue = {\n  text: string;\n  isChecked: boolean;\n\n  // `userTriggered` indicates if this event was triggered directly by user (userTriggered: true)\n  // or was triggered indirectly (userTriggered: false)\n  // Example of `userTriggered` in action:\n  // User clicks on radio element (userTriggered: true) which triggers the other radio element to change (userTriggered: false)\n  userTriggered?: boolean;\n};\n\nexport type inputCallback = (v: inputValue & { id: number }) => void;\n\nexport const enum MediaInteractions {\n  Play,\n  Pause,\n  Seeked,\n  VolumeChange,\n  RateChange,\n}\n\nexport type mediaInteractionParam = {\n  type: MediaInteractions;\n  id: number;\n  currentTime?: number;\n  volume?: number;\n  muted?: boolean;\n  loop?: boolean;\n  playbackRate?: number;\n};\n\nexport type mediaInteractionCallback = (p: mediaInteractionParam) => void;\n\nexport type DocumentDimension = {\n  x: number;\n  y: number;\n  // scale value relative to its parent iframe\n  relativeScale: number;\n  // scale value relative to the root iframe\n  absoluteScale: number;\n};\n\nexport type SelectionRange = {\n  start: number;\n  startOffset: number;\n  end: number;\n  endOffset: number;\n};\n\nexport type selectionParam = {\n  ranges: Array<SelectionRange>;\n};\n\nexport type selectionCallback = (p: selectionParam) => void;\n\nexport type customElementParam = {\n  define?: {\n    name: string;\n  };\n};\n\nexport type customElementCallback = (c: customElementParam) => void;\n\nexport type DeprecatedMirror = {\n  map: {\n    [key: number]: INode;\n  };\n  getId: (n: Node) => number;\n  getNode: (id: number) => INode | null;\n  removeNodeFromMap: (n: Node) => void;\n  has: (id: number) => boolean;\n  reset: () => void;\n};\n\nexport type throttleOptions = {\n  leading?: boolean;\n  trailing?: boolean;\n};\n\nexport type listenerHandler = () => void;\nexport type hookResetter = () => void;\n\nexport type playerMetaData = {\n  startTime: number;\n  endTime: number;\n  totalTime: number;\n};\n\nexport type actionWithDelay = {\n  doAction: () => void;\n  delay: number;\n};\n\nexport type Handler = (event?: unknown) => void;\n\nexport type Emitter = {\n  on(type: string, handler: Handler): void;\n  emit(type: string, event?: unknown): void;\n  off(type: string, handler: Handler): void;\n};\n\nexport type Arguments<T> = T extends (...payload: infer U) => unknown\n  ? U\n  : unknown;\n\nexport enum ReplayerEvents {\n  Start = 'start',\n  Pause = 'pause',\n  /**\n   * @deprecated use Play instead\n   */\n  Resume = 'resume',\n  Resize = 'resize',\n  Finish = 'finish',\n  FullsnapshotRebuilded = 'fullsnapshot-rebuilded',\n  LoadStylesheetStart = 'load-stylesheet-start',\n  LoadStylesheetEnd = 'load-stylesheet-end',\n  SkipStart = 'skip-start',\n  SkipEnd = 'skip-end',\n  MouseInteraction = 'mouse-interaction',\n  EventCast = 'event-cast',\n  CustomEvent = 'custom-event',\n  Flush = 'flush',\n  StateChange = 'state-change',\n  PlayBack = 'play-back',\n  Destroy = 'destroy',\n}\n\nexport type KeepIframeSrcFn = (src: string) => boolean;\n\ndeclare global {\n  interface Window {\n    FontFace: typeof FontFace;\n  }\n}\n\nexport type IWindow = Window & typeof globalThis;\n\nexport type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\n\nexport type GetTypedKeys<Obj extends object, ValueType> = TakeTypeHelper<\n  Obj,\n  ValueType\n>[keyof TakeTypeHelper<Obj, ValueType>];\nexport type TakeTypeHelper<Obj extends object, ValueType> = {\n  [K in keyof Obj]: Obj[K] extends ValueType ? K : never;\n};\n\nexport type TakeTypedKeyValues<Obj extends object, Type> = Pick<\n  Obj,\n  TakeTypeHelper<Obj, Type>[keyof TakeTypeHelper<Obj, Type>]\n>;\n"],"names":["EventType","IncrementalSource","MouseInteractions","PointerTypes","CanvasContext","MediaInteractions","ReplayerEvents"],"mappings":"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"}