{"version":3,"file":"vts-voffice-ng-vts-core-testing.mjs","sources":["../../components/core/testing/event-objects.ts","../../components/core/testing/dispatch-events.ts","../../components/core/testing/type-in-element.ts","../../components/core/testing/wrapped-error-message.ts","../../components/core/testing/fake-viewport-ruler.ts","../../components/core/testing/mock-ng-zone.ts","../../components/core/testing/component-bed.ts","../../components/core/testing/public-api.ts","../../components/core/testing/vts-voffice-ng-vts-core-testing.ts"],"sourcesContent":["/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\n\r\n/** Creates a browser MouseEvent with the specified options. */\r\nexport function createMouseEvent(\r\n  type: string,\r\n  x: number = 0,\r\n  y: number = 0,\r\n  button: number = 0\r\n): MouseEvent {\r\n  const event = document.createEvent('MouseEvent');\r\n\r\n  event.initMouseEvent(\r\n    type,\r\n    true /* canBubble */,\r\n    false /* cancelable */,\r\n    window /* view */,\r\n    0 /* detail */,\r\n    x /* screenX */,\r\n    y /* screenY */,\r\n    x /* clientX */,\r\n    y /* clientY */,\r\n    false /* ctrlKey */,\r\n    false /* altKey */,\r\n    false /* shiftKey */,\r\n    false /* metaKey */,\r\n    button /* button */,\r\n    null /* relatedTarget */\r\n  );\r\n\r\n  // `initMouseEvent` doesn't allow us to pass the `buttons` and\r\n  // defaults it to 0 which looks like a fake event.\r\n  Object.defineProperty(event, 'buttons', { get: () => 1 });\r\n\r\n  return event;\r\n}\r\n\r\n/** Creates a browser TouchEvent with the specified pointer coordinates. */\r\nexport function createTouchEvent(type: string, pageX: number = 0, pageY: number = 0): UIEvent {\r\n  // In favor of creating events that work for most of the browsers, the event is created\r\n  // as a basic UI Event. The necessary details for the event will be set manually.\r\n  const event = new UIEvent(type, { detail: 0, view: window });\r\n  const touchDetails = { pageX, pageY, clientX: pageX, clientY: pageY };\r\n\r\n  // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\r\n  // the touch details.\r\n  Object.defineProperties(event, {\r\n    touches: { value: [touchDetails] },\r\n    targetTouches: { value: [touchDetails] },\r\n    changedTouches: { value: [touchDetails] }\r\n  });\r\n\r\n  return event;\r\n}\r\n\r\n/** Dispatches a keydown event from an element. */\r\nexport function createKeyboardEvent(\r\n  type: string,\r\n  keyCode: number,\r\n  target?: Element,\r\n  key?: string,\r\n  ctrlKey?: boolean,\r\n  metaKey?: boolean,\r\n  shiftKey?: boolean\r\n): KeyboardEvent {\r\n  const event = document.createEvent('KeyboardEvent') as VtsSafeAny;\r\n  const originalPreventDefault = event.preventDefault;\r\n\r\n  // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\r\n  if (event.initKeyEvent) {\r\n    event.initKeyEvent(type, true, true, window, 0, 0, 0, 0, 0, keyCode);\r\n  } else {\r\n    event.initKeyboardEvent(type, true, true, window, 0, key, 0, '', false);\r\n  }\r\n\r\n  // Webkit Browsers don't set the keyCode when calling the init function.\r\n  // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\r\n  Object.defineProperties(event, {\r\n    keyCode: { get: () => keyCode },\r\n    key: { get: () => key },\r\n    target: { get: () => target },\r\n    ctrlKey: { get: () => ctrlKey },\r\n    metaKey: { get: () => metaKey },\r\n    shiftKey: { get: () => shiftKey }\r\n  });\r\n\r\n  // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\r\n  // tslint:disable-next-line:typedef\r\n  event.preventDefault = function () {\r\n    Object.defineProperty(event, 'defaultPrevented', {\r\n      get: () => true,\r\n      configurable: true\r\n    });\r\n    // tslint:disable-next-line:no-invalid-this\r\n    return originalPreventDefault.apply(this, arguments);\r\n  };\r\n\r\n  return event;\r\n}\r\n\r\n/** Creates a fake event object with any desired event type. */\r\nexport function createFakeEvent(\r\n  type: string,\r\n  canBubble: boolean = true,\r\n  cancelable: boolean = true\r\n): Event {\r\n  const event = document.createEvent('Event');\r\n  event.initEvent(type, canBubble, cancelable);\r\n  return event;\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\nimport {\r\n  createFakeEvent,\r\n  createKeyboardEvent,\r\n  createMouseEvent,\r\n  createTouchEvent\r\n} from './event-objects';\r\n\r\n/** Utility to dispatch any event on a Node. */\r\nexport function dispatchEvent(node: Node | Window, event: Event): Event {\r\n  node.dispatchEvent(event);\r\n  return event;\r\n}\r\n\r\n/** Shorthand to dispatch a fake event on a specified node. */\r\nexport function dispatchFakeEvent(node: Node | Window, type: string, canBubble?: boolean): Event {\r\n  return dispatchEvent(node, createFakeEvent(type, canBubble));\r\n}\r\n\r\n/** Shorthand to dispatch a keyboard event with a specified key code. */\r\nexport function dispatchKeyboardEvent(\r\n  node: Node,\r\n  type: string,\r\n  keyCode: number,\r\n  target?: Element\r\n): KeyboardEvent {\r\n  return dispatchEvent(node, createKeyboardEvent(type, keyCode, target)) as KeyboardEvent;\r\n}\r\n\r\n/** Shorthand to dispatch a mouse event on the specified coordinates. */\r\nexport function dispatchMouseEvent(\r\n  node: Node,\r\n  type: string,\r\n  x: number = 0,\r\n  y: number = 0,\r\n  event: MouseEvent = createMouseEvent(type, x, y)\r\n): MouseEvent {\r\n  return dispatchEvent(node, event) as MouseEvent;\r\n}\r\n\r\n/** Shorthand to dispatch a touch event on the specified coordinates. */\r\nexport function dispatchTouchEvent(\r\n  node: Node,\r\n  type: string,\r\n  x: number = 0,\r\n  y: number = 0\r\n): TouchEvent {\r\n  return dispatchEvent(node, createTouchEvent(type, x, y)) as TouchEvent;\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\nimport { dispatchFakeEvent } from './dispatch-events';\r\n\r\n/**\r\n * Focuses an input, sets its value and dispatches\r\n * the `input` event, simulating the user typing.\r\n * @param value Value to be set on the input.\r\n * @param element Element onto which to set the value.\r\n */\r\nexport function typeInElement(\r\n  value: string,\r\n  element: HTMLInputElement | HTMLTextAreaElement\r\n): void {\r\n  element.focus();\r\n  element.value = value;\r\n  dispatchFakeEvent(element, 'input');\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\n/**\r\n * Gets a RegExp used to detect an angular wrapped error message.\r\n * See https://github.com/angular/angular/issues/8348\r\n */\r\nexport function wrappedErrorMessage(e: Error): RegExp {\r\n  const escapedMessage = e.message.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\r\n  return new RegExp(escapedMessage);\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\ninterface FakeViewportRect {\r\n  left: number;\r\n  top: number;\r\n  width: number;\r\n  height: number;\r\n  bottom: number;\r\n  right: number;\r\n}\r\n\r\ninterface FakeViewportSize {\r\n  width: number;\r\n  height: number;\r\n}\r\n\r\ninterface FakeViewportScrollPosition {\r\n  top: number;\r\n  left: number;\r\n}\r\n\r\n/** @docs-private */\r\nexport class FakeViewportRuler {\r\n  getViewportRect(): FakeViewportRect {\r\n    return {\r\n      left: 0,\r\n      top: 0,\r\n      width: 1014,\r\n      height: 686,\r\n      bottom: 686,\r\n      right: 1014\r\n    };\r\n  }\r\n\r\n  getViewportSize(): FakeViewportSize {\r\n    return { width: 1014, height: 686 };\r\n  }\r\n\r\n  getViewportScrollPosition(): FakeViewportScrollPosition {\r\n    return { top: 0, left: 0 };\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\nimport { EventEmitter, Injectable, NgZone } from '@angular/core';\r\n\r\n/**\r\n * Mock synchronous NgZone implementation that can be used\r\n * to flush out `onStable` subscriptions in tests.\r\n *\r\n * via: https://github.com/angular/angular/blob/master/packages/core/testing/src/ng_zone_mock.ts\r\n * @docs-private\r\n */\r\n@Injectable()\r\nexport class MockNgZone extends NgZone {\r\n  // tslint:disable-next-line:no-any\r\n  override onStable: EventEmitter<any> = new EventEmitter(false);\r\n\r\n  constructor() {\r\n    super({ enableLongStackTrace: false });\r\n  }\r\n\r\n  // tslint:disable-next-line:no-any ban-types\r\n  override run(fn: Function): any {\r\n    return fn();\r\n  }\r\n\r\n  // tslint:disable-next-line:ban-types no-any\r\n  override runOutsideAngular(fn: Function): any {\r\n    return fn();\r\n  }\r\n\r\n  simulateZoneExit(): void {\r\n    this.onStable.emit(null);\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { DebugElement, NgModule, NO_ERRORS_SCHEMA, Type } from '@angular/core';\r\nimport { ComponentFixture, TestBed } from '@angular/core/testing';\r\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\ntype ComponentBedOptions = Pick<NgModule, 'providers' | 'declarations' | 'imports'>;\r\nexport interface ComponentBed<T> {\r\n  bed: TestBed;\r\n  fixture: ComponentFixture<T>;\r\n  nativeElement: HTMLElement;\r\n  debugElement: DebugElement;\r\n  component: T;\r\n}\r\nexport function createComponentBed<T>(\r\n  component: Type<T>,\r\n  options: ComponentBedOptions = {\r\n    providers: [],\r\n    declarations: [],\r\n    imports: []\r\n  }\r\n): ComponentBed<T> {\r\n  const { imports, declarations, providers } = options;\r\n  const config = {\r\n    imports: [NoopAnimationsModule, CommonModule, ...(imports || [])],\r\n    declarations: [component, ...(declarations || [])],\r\n    schemas: [NO_ERRORS_SCHEMA],\r\n    providers: providers || []\r\n  };\r\n  const bed = TestBed.configureTestingModule(config);\r\n  const fixture = TestBed.createComponent<T>(component);\r\n  fixture.detectChanges();\r\n  return {\r\n    bed,\r\n    fixture,\r\n    nativeElement: fixture.nativeElement,\r\n    debugElement: fixture.debugElement,\r\n    component: fixture.componentInstance\r\n  };\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\nexport * from './dispatch-events';\r\nexport * from './event-objects';\r\nexport * from './type-in-element';\r\nexport * from './wrapped-error-message';\r\nexport * from './fake-viewport-ruler';\r\nexport * from './mock-ng-zone';\r\nexport {\r\n  createComponentBed as ɵcreateComponentBed,\r\n  ComponentBed as ɵComponentBed\r\n} from './component-bed';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}