{"version":3,"file":"globalpayments-vega-angular-testing.mjs","sources":["../../testing/index.ts","../../testing/public-api.ts","../../testing/globalpayments-vega-angular-testing.ts"],"sourcesContent":["import { FeatureFlag } from '@globalpayments/vega';\nimport { waitForVega } from '@globalpayments/vega';\nimport type { RenderResult } from '@testing-library/angular';\n\ntype Nullable<T> = T | undefined | null;\n\n/**\n * @deprecated This utility is deprecated. Use `waitForVega` from `@heartlandone/vega-testing-library` directly.\n * The `vega-testing-library` package supports Jest fake timers and does not require a `RenderResult` argument.\n * Install it separately: `npm install @heartlandone/vega-testing-library`\n */\nexport async function waitForVegaReady(\n  renderResult: RenderResult<unknown, unknown>,\n  delay: number = 300,\n): Promise<RenderResult<unknown, unknown>> {\n  await waitForVega();\n\n  /*\n     * The following code is added to load the vega component, and the attribute value is set after each component is loaded.\n     * To determine whether there is a hydrated style that cannot meet the requirements after the component is loaded,\n     * It need to set the sleep time to ensure that each attribute of the vega component is fully loaded\n     *\n     code link: ./node_modules/vega-react/dist/react-component-lib/utils/attachProps.js(line 28-33)}\n    */\n  await sleep(delay);\n  return renderResult;\n}\n\n/**\n * @deprecated This type is deprecated. Use `MockedResizeObserverController` from `@heartlandone/vega-testing-library` directly.\n * Install it separately: `npm install @heartlandone/vega-testing-library`\n */\nexport type MockedResizeObserverController = {\n  hide: (selector: string, container?: HTMLElement) => void;\n  show: (selector: string, container?: HTMLElement) => void;\n};\n\n/**\n * @deprecated This function is deprecated. Use `mockResizeObserver` from `@heartlandone/vega-testing-library` directly.\n * Install it separately: `npm install @heartlandone/vega-testing-library`\n */\nexport function mockResizeObserver(): MockedResizeObserverController {\n  type MockedResizeObserver = ResizeObserver & {\n    show: () => void;\n    hide: () => void;\n  };\n  FeatureFlag.disable('VEGA_ANGULAR.USE_JUGGLE_RESIZE_OBSERVER');\n  const resizeObserverElementMap: Map<HTMLElement, MockedResizeObserver> = new Map();\n  const VegaResizeObserver: unknown = class {\n    private readonly callback: ResizeObserverCallback;\n    private observedElements: HTMLElement[] = [];\n    constructor(callback: ResizeObserverCallback) {\n      this.callback = callback;\n    }\n\n    observe(element: HTMLElement): void {\n      if (!this.isObserved(element)) {\n        resizeObserverElementMap.set(element, this);\n        this.observedElements.push(element);\n      }\n    }\n\n    unobserve(element: HTMLElement): void {\n      if (this.isObserved(element)) {\n        resizeObserverElementMap.delete(element);\n        this.observedElements = this.observedElements.filter(\n          (observedElement: HTMLElement) => observedElement !== element,\n        );\n      }\n    }\n\n    disconnect(): void {\n      for (const element of this.observedElements) {\n        resizeObserverElementMap.delete(element);\n      }\n      this.observedElements = [];\n    }\n\n    show(): void {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.callback([{ contentRect: { height: 100 } }] as any, this);\n    }\n\n    hide(): void {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.callback([{ contentRect: { height: 0 } }] as any, this);\n    }\n\n    private isObserved(element: HTMLElement): boolean {\n      return this.observedElements.includes(element);\n    }\n  };\n  Object.assign(window, { VegaResizeObserver });\n  return {\n    show: (selector: string, container?: HTMLElement): void => {\n      (container || document)\n        .querySelectorAll(selector)\n        // eslint-disable-next-line unicorn/no-array-for-each\n        .forEach((el: Element) => {\n          const resizeObserver: Nullable<MockedResizeObserver> = resizeObserverElementMap.get(\n            el as HTMLElement,\n          );\n          if (resizeObserver) {\n            resizeObserver.show();\n          }\n        });\n    },\n    hide: (selector: string, container?: HTMLElement): void => {\n      (container || document)\n        .querySelectorAll(selector)\n        // eslint-disable-next-line unicorn/no-array-for-each\n        .forEach((el: Element) => {\n          const resizeObserver: Nullable<MockedResizeObserver> = resizeObserverElementMap.get(\n            el as HTMLElement,\n          );\n          if (resizeObserver) {\n            resizeObserver.hide();\n          }\n        });\n    },\n  };\n}\n\nfunction sleep(ms: number): Promise<void> {\n  return new Promise((resolve: () => void) => {\n    setTimeout(resolve, ms);\n  });\n}\n","/*\n * Public API Surface of vega-angular\n */\nexport * from './index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAMA;;;;;SAKsB,gBAAgB,CACpC,YAA4C,EAC5C,QAAgB,GAAG;;QAEnB,MAAM,WAAW,EAAE,CAAC;;;;;;;;QASpB,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,YAAY,CAAC;KACrB;CAAA;AAWD;;;;SAIgB,kBAAkB;IAKhC,WAAW,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IAC/D,MAAM,wBAAwB,GAA2C,IAAI,GAAG,EAAE,CAAC;IACnF,MAAM,kBAAkB,GAAY;QAGlC,YAAY,QAAgC;YADpC,qBAAgB,GAAkB,EAAE,CAAC;YAE3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;QAED,OAAO,CAAC,OAAoB;YAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC7B,wBAAwB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrC;SACF;QAED,SAAS,CAAC,OAAoB;YAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC5B,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAClD,CAAC,eAA4B,KAAK,eAAe,KAAK,OAAO,CAC9D,CAAC;aACH;SACF;QAED,UAAU;YACR,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAC3C,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;SAC5B;QAED,IAAI;;YAEF,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAQ,EAAE,IAAI,CAAC,CAAC;SAChE;QAED,IAAI;;YAEF,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAQ,EAAE,IAAI,CAAC,CAAC;SAC9D;QAEO,UAAU,CAAC,OAAoB;YACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAChD;KACF,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,CAAC,QAAgB,EAAE,SAAuB;YAC9C,CAAC,SAAS,IAAI,QAAQ;iBACnB,gBAAgB,CAAC,QAAQ,CAAC;;iBAE1B,OAAO,CAAC,CAAC,EAAW;gBACnB,MAAM,cAAc,GAAmC,wBAAwB,CAAC,GAAG,CACjF,EAAiB,CAClB,CAAC;gBACF,IAAI,cAAc,EAAE;oBAClB,cAAc,CAAC,IAAI,EAAE,CAAC;iBACvB;aACF,CAAC,CAAC;SACN;QACD,IAAI,EAAE,CAAC,QAAgB,EAAE,SAAuB;YAC9C,CAAC,SAAS,IAAI,QAAQ;iBACnB,gBAAgB,CAAC,QAAQ,CAAC;;iBAE1B,OAAO,CAAC,CAAC,EAAW;gBACnB,MAAM,cAAc,GAAmC,wBAAwB,CAAC,GAAG,CACjF,EAAiB,CAClB,CAAC;gBACF,IAAI,cAAc,EAAE;oBAClB,cAAc,CAAC,IAAI,EAAE,CAAC;iBACvB;aACF,CAAC,CAAC;SACN;KACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAmB;QACrC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KACzB,CAAC,CAAC;AACL;;AC/HA;;;;ACAA;;;;;;"}