@dynatrace/strato-components-testing 0.85.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE +174 -0
  2. package/README.md +1 -0
  3. package/esm/index.js +1 -0
  4. package/esm/index.js.map +7 -0
  5. package/esm/jest/custom-render.js +29 -0
  6. package/esm/jest/custom-render.js.map +7 -0
  7. package/esm/jest/index.js +45 -0
  8. package/esm/jest/index.js.map +7 -0
  9. package/esm/jest/mocks/bounding-client-rect-mock.js +18 -0
  10. package/esm/jest/mocks/bounding-client-rect-mock.js.map +7 -0
  11. package/esm/jest/mocks/canvas-mock.js +174 -0
  12. package/esm/jest/mocks/canvas-mock.js.map +7 -0
  13. package/esm/jest/mocks/dom-rect-mock.js +38 -0
  14. package/esm/jest/mocks/dom-rect-mock.js.map +7 -0
  15. package/esm/jest/mocks/resize-observer-mock.js +24 -0
  16. package/esm/jest/mocks/resize-observer-mock.js.map +7 -0
  17. package/esm/jest/mocks/scroll-width-mock.js +21 -0
  18. package/esm/jest/mocks/scroll-width-mock.js.map +7 -0
  19. package/esm/jest/mocks/text-ellipsis-mock.js +31 -0
  20. package/esm/jest/mocks/text-ellipsis-mock.js.map +7 -0
  21. package/esm/jest/preset/index.js +5 -0
  22. package/esm/jest/preset/index.js.map +7 -0
  23. package/esm/jest/preset/jest-preset.js +13 -0
  24. package/esm/jest/preset/jest-preset.js.map +7 -0
  25. package/esm/jest/preset/resolver.js +23 -0
  26. package/esm/jest/preset/resolver.js.map +7 -0
  27. package/esm/jest/setup.js +24 -0
  28. package/esm/jest/setup.js.map +7 -0
  29. package/index.d.ts +0 -0
  30. package/index.js +0 -0
  31. package/jest/custom-render.d.ts +8 -0
  32. package/jest/custom-render.js +55 -0
  33. package/jest/index.d.ts +9 -0
  34. package/jest/index.js +46 -0
  35. package/jest/mocks/bounding-client-rect-mock.d.ts +4 -0
  36. package/jest/mocks/bounding-client-rect-mock.js +36 -0
  37. package/jest/mocks/canvas-mock.d.ts +11 -0
  38. package/jest/mocks/canvas-mock.js +192 -0
  39. package/jest/mocks/dom-rect-mock.d.ts +12 -0
  40. package/jest/mocks/dom-rect-mock.js +56 -0
  41. package/jest/mocks/resize-observer-mock.d.ts +7 -0
  42. package/jest/mocks/resize-observer-mock.js +42 -0
  43. package/jest/mocks/scroll-width-mock.d.ts +4 -0
  44. package/jest/mocks/scroll-width-mock.js +39 -0
  45. package/jest/mocks/text-ellipsis-mock.d.ts +4 -0
  46. package/jest/mocks/text-ellipsis-mock.js +43 -0
  47. package/jest/preset/index.d.ts +1 -0
  48. package/jest/preset/index.js +23 -0
  49. package/jest/preset/jest-preset.d.ts +9 -0
  50. package/jest/preset/jest-preset.js +31 -0
  51. package/jest/preset/resolver.js +13 -0
  52. package/jest/setup.d.ts +4 -0
  53. package/jest/setup.js +36 -0
  54. package/package.json +35 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/text-ellipsis-mock.ts"],
4
+ "sourcesContent": ["import {\n clearGetBoundingClientRectMock,\n setupGetBoundingClientRectMock,\n} from './bounding-client-rect-mock.js';\nimport {\n clearCanvasMeasureTextMock,\n setupCanvasMeasureTextMock,\n} from './canvas-mock.js';\nimport { createDOMRect } from './dom-rect-mock.js';\nimport { clearScrollWidthMock } from './scroll-width-mock.js';\n\n/** Mocks DOM properties and functions required for the TextEllipsis component to work. */\nexport function setupTextEllipsisMock(\n containerWidth: number = 250,\n textWidth: number = 200,\n mockCanvas: boolean = false,\n) {\n setupGetBoundingClientRectMock(function (this: HTMLElement) {\n // container width\n if (this.getAttribute('data-ellipsis') !== null) {\n return createDOMRect(containerWidth, 0);\n }\n // actual text width\n return createDOMRect(textWidth, 0);\n });\n\n if (mockCanvas) {\n setupCanvasMeasureTextMock();\n }\n}\n\n/** Clears mocked DOM properties and functions required for the TextEllipsis component to work. */\nexport function clearTextEllipsisMock() {\n clearGetBoundingClientRectMock();\n clearScrollWidthMock();\n clearCanvasMeasureTextMock();\n}\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AAG9B,SAAS,sBACd,iBAAyB,KACzB,YAAoB,KACpB,aAAsB,OACtB;AACA,iCAA+B,WAA6B;AAE1D,QAAI,KAAK,aAAa,eAAe,MAAM,MAAM;AAC/C,aAAO,cAAc,gBAAgB,CAAC;AAAA,IACxC;AAEA,WAAO,cAAc,WAAW,CAAC;AAAA,EACnC,CAAC;AAED,MAAI,YAAY;AACd,+BAA2B;AAAA,EAC7B;AACF;AAGO,SAAS,wBAAwB;AACtC,iCAA+B;AAC/B,uBAAqB;AACrB,6BAA2B;AAC7B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ import { stratoPreset } from "./jest-preset.js";
2
+ export {
3
+ stratoPreset
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/preset/index.ts"],
4
+ "sourcesContent": ["export { stratoPreset } from './jest-preset.js';\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ const stratoPreset = {
2
+ moduleNameMapper: {
3
+ "^d3-(.*)$": "<rootDir>/node_modules/d3-$1/dist/d3-$1",
4
+ "^@codemirror/legacy-modes/mode/(.*)$": "<rootDir>/node_modules/@codemirror/legacy-modes/mode/$1.cjs",
5
+ nanoid: "<rootDir>/node_modules/nanoid/index.cjs",
6
+ "\\.(css|less|scss|sass)$": "identity-obj-proxy"
7
+ },
8
+ resolver: "<rootDir>/node_modules/@dynatrace/strato-components-testing/jest/preset/resolver.js"
9
+ };
10
+ export {
11
+ stratoPreset
12
+ };
13
+ //# sourceMappingURL=jest-preset.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/preset/jest-preset.ts"],
4
+ "sourcesContent": ["export const stratoPreset = {\n moduleNameMapper: {\n '^d3-(.*)$': '<rootDir>/node_modules/d3-$1/dist/d3-$1',\n '^@codemirror/legacy-modes/mode/(.*)$':\n '<rootDir>/node_modules/@codemirror/legacy-modes/mode/$1.cjs',\n nanoid: '<rootDir>/node_modules/nanoid/index.cjs',\n '\\\\.(css|less|scss|sass)$': 'identity-obj-proxy',\n },\n resolver:\n '<rootDir>/node_modules/@dynatrace/strato-components-testing/jest/preset/resolver.js',\n};\n"],
5
+ "mappings": "AAAO,MAAM,eAAe;AAAA,EAC1B,kBAAkB;AAAA,IAChB,aAAa;AAAA,IACb,wCACE;AAAA,IACF,QAAQ;AAAA,IACR,4BAA4B;AAAA,EAC9B;AAAA,EACA,UACE;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __commonJS = (cb, mod) => function __require() {
3
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
+ };
5
+ var require_resolver = __commonJS({
6
+ "packages/components-testing/src/jest/preset/resolver.ts"(exports, module) {
7
+ module.exports = (path, options) => {
8
+ return options.defaultResolver(path, {
9
+ ...options,
10
+ // Use packageFilter to process parsed `package.json` before the resolution (see https://www.npmjs.com/package/resolve#resolveid-opts-cb)
11
+ packageFilter: (pkg) => {
12
+ if (pkg.name === "uuid") {
13
+ delete pkg["exports"];
14
+ delete pkg["module"];
15
+ }
16
+ return pkg;
17
+ }
18
+ });
19
+ };
20
+ }
21
+ });
22
+ export default require_resolver();
23
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/preset/resolver.ts"],
4
+ "sourcesContent": ["module.exports = (path, options) => {\n // Call the defaultResolver, so we leverage its cache, error handling, etc.\n return options.defaultResolver(path, {\n ...options,\n // Use packageFilter to process parsed `package.json` before the resolution (see https://www.npmjs.com/package/resolve#resolveid-opts-cb)\n packageFilter: (pkg) => {\n // This is a workaround for https://github.com/uuidjs/uuid/pull/616\n //\n // jest-environment-jsdom 28+ tries to use browser exports instead of default exports,\n // but uuid only offers an ESM browser export and not a CommonJS one. Jest does not yet\n // support ESM modules natively, so this causes a Jest error related to trying to parse\n // \"export\" syntax.\n //\n // This workaround prevents Jest from considering uuid's module-based exports at all;\n // it falls back to uuid's CommonJS+node \"main\" property.\n //\n // Once we're able to migrate our Jest config to ESM and a browser crypto\n // implementation is available for the browser+ESM version of uuid to use (eg, via\n // https://github.com/jsdom/jsdom/pull/3352 or a similar polyfill), this can go away.\n if (pkg.name === 'uuid') {\n delete pkg['exports'];\n delete pkg['module'];\n }\n return pkg;\n },\n });\n};\n"],
5
+ "mappings": ";;;;AAAA;AAAA;AAAA,WAAO,UAAU,CAAC,MAAM,YAAY;AAElC,aAAO,QAAQ,gBAAgB,MAAM;AAAA,QACnC,GAAG;AAAA;AAAA,QAEH,eAAe,CAAC,QAAQ;AActB,cAAI,IAAI,SAAS,QAAQ;AACvB,mBAAO,IAAI,SAAS;AACpB,mBAAO,IAAI,QAAQ;AAAA,UACrB;AACA,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,24 @@
1
+ import {
2
+ clearCanvasMeasureTextMock,
3
+ setupCanvasMeasureTextMock
4
+ } from "./mocks/canvas-mock.js";
5
+ import { setupDomRectMock, clearDomRectMock } from "./mocks/dom-rect-mock.js";
6
+ import {
7
+ setupResizeObserverMock,
8
+ clearResizeObserverMock
9
+ } from "./mocks/resize-observer-mock.js";
10
+ function setup() {
11
+ setupResizeObserverMock();
12
+ setupDomRectMock();
13
+ setupCanvasMeasureTextMock(-Infinity);
14
+ }
15
+ function clear() {
16
+ clearResizeObserverMock();
17
+ clearCanvasMeasureTextMock();
18
+ clearDomRectMock();
19
+ }
20
+ export {
21
+ clear,
22
+ setup
23
+ };
24
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/jest/setup.ts"],
4
+ "sourcesContent": ["import {\n clearCanvasMeasureTextMock,\n setupCanvasMeasureTextMock,\n} from './mocks/canvas-mock.js';\nimport { setupDomRectMock, clearDomRectMock } from './mocks/dom-rect-mock.js';\nimport {\n setupResizeObserverMock,\n clearResizeObserverMock,\n} from './mocks/resize-observer-mock.js';\n\n/** Sets up design-system mocks. */\nexport function setup() {\n setupResizeObserverMock();\n setupDomRectMock();\n setupCanvasMeasureTextMock(-Infinity);\n}\n\n/** Resets design-system mocks. */\nexport function clear() {\n clearResizeObserverMock();\n clearCanvasMeasureTextMock();\n clearDomRectMock();\n}\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB,wBAAwB;AACnD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAGA,SAAS,QAAQ;AACtB,0BAAwB;AACxB,mBAAiB;AACjB,6BAA2B,SAAS;AACtC;AAGO,SAAS,QAAQ;AACtB,0BAAwB;AACxB,6BAA2B;AAC3B,mBAAiB;AACnB;",
6
+ "names": []
7
+ }
package/index.d.ts ADDED
File without changes
package/index.js ADDED
File without changes
@@ -0,0 +1,8 @@
1
+ import { RenderOptions, RenderResult } from '@testing-library/react';
2
+ import React from 'react';
3
+ export type RenderWithIntlOptions = {
4
+ locale?: string;
5
+ timeZone?: string;
6
+ } & Omit<RenderOptions, 'queries'>;
7
+ /** Wrapper to render components with all required providers */
8
+ export declare const customRender: (ui: React.ReactElement, { locale, timeZone, wrapper: CustomWrapper, ...renderOptions }?: RenderWithIntlOptions) => RenderResult;
@@ -0,0 +1,55 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var custom_render_exports = {};
29
+ __export(custom_render_exports, {
30
+ customRender: () => customRender
31
+ });
32
+ module.exports = __toCommonJS(custom_render_exports);
33
+ var import_react = require("@testing-library/react");
34
+ var import_react2 = __toESM(require("react"));
35
+ var import_react_intl = require("react-intl");
36
+ const AllProviders = ({
37
+ children,
38
+ locale = "en",
39
+ timeZone = "UTC"
40
+ }) => {
41
+ return /* @__PURE__ */ import_react2.default.createElement(import_react_intl.IntlProvider, { locale, timeZone }, children);
42
+ };
43
+ const DefaultWrapper = (props) => (
44
+ // eslint-disable-next-line react/jsx-no-useless-fragment
45
+ /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, props.children)
46
+ );
47
+ const customRender = (ui, {
48
+ locale = "en",
49
+ timeZone = "UTC",
50
+ wrapper: CustomWrapper = DefaultWrapper,
51
+ ...renderOptions
52
+ } = {}) => (0, import_react.render)(ui, {
53
+ wrapper: ({ children }) => /* @__PURE__ */ import_react2.default.createElement(AllProviders, { locale, timeZone }, /* @__PURE__ */ import_react2.default.createElement(CustomWrapper, null, children)),
54
+ ...renderOptions
55
+ });
@@ -0,0 +1,9 @@
1
+ export { customRender as render, type RenderWithIntlOptions, } from './custom-render.js';
2
+ export { setup, clear } from './setup.js';
3
+ export { stratoPreset } from './preset/index.js';
4
+ export { setupGetBoundingClientRectMock, clearGetBoundingClientRectMock, } from './mocks/bounding-client-rect-mock.js';
5
+ export { setupCanvasMeasureTextMock, clearCanvasMeasureTextMock, } from './mocks/canvas-mock.js';
6
+ export { setupResizeObserverMock, clearResizeObserverMock, } from './mocks/resize-observer-mock.js';
7
+ export { setupDomRectMock, clearDomRectMock } from './mocks/dom-rect-mock.js';
8
+ export { setupScrollWidthMock, clearScrollWidthMock, } from './mocks/scroll-width-mock.js';
9
+ export { setupTextEllipsisMock, clearTextEllipsisMock, } from './mocks/text-ellipsis-mock.js';
package/jest/index.js ADDED
@@ -0,0 +1,46 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var jest_exports = {};
19
+ __export(jest_exports, {
20
+ clear: () => import_setup.clear,
21
+ clearCanvasMeasureTextMock: () => import_canvas_mock.clearCanvasMeasureTextMock,
22
+ clearDomRectMock: () => import_dom_rect_mock.clearDomRectMock,
23
+ clearGetBoundingClientRectMock: () => import_bounding_client_rect_mock.clearGetBoundingClientRectMock,
24
+ clearResizeObserverMock: () => import_resize_observer_mock.clearResizeObserverMock,
25
+ clearScrollWidthMock: () => import_scroll_width_mock.clearScrollWidthMock,
26
+ clearTextEllipsisMock: () => import_text_ellipsis_mock.clearTextEllipsisMock,
27
+ render: () => import_custom_render.customRender,
28
+ setup: () => import_setup.setup,
29
+ setupCanvasMeasureTextMock: () => import_canvas_mock.setupCanvasMeasureTextMock,
30
+ setupDomRectMock: () => import_dom_rect_mock.setupDomRectMock,
31
+ setupGetBoundingClientRectMock: () => import_bounding_client_rect_mock.setupGetBoundingClientRectMock,
32
+ setupResizeObserverMock: () => import_resize_observer_mock.setupResizeObserverMock,
33
+ setupScrollWidthMock: () => import_scroll_width_mock.setupScrollWidthMock,
34
+ setupTextEllipsisMock: () => import_text_ellipsis_mock.setupTextEllipsisMock,
35
+ stratoPreset: () => import_preset.stratoPreset
36
+ });
37
+ module.exports = __toCommonJS(jest_exports);
38
+ var import_custom_render = require("./custom-render.js");
39
+ var import_setup = require("./setup.js");
40
+ var import_preset = require("./preset/index.js");
41
+ var import_bounding_client_rect_mock = require("./mocks/bounding-client-rect-mock.js");
42
+ var import_canvas_mock = require("./mocks/canvas-mock.js");
43
+ var import_resize_observer_mock = require("./mocks/resize-observer-mock.js");
44
+ var import_dom_rect_mock = require("./mocks/dom-rect-mock.js");
45
+ var import_scroll_width_mock = require("./mocks/scroll-width-mock.js");
46
+ var import_text_ellipsis_mock = require("./mocks/text-ellipsis-mock.js");
@@ -0,0 +1,4 @@
1
+ /** Mocks the `getBoundingClientRect()` function on all HTMLElements. */
2
+ export declare function setupGetBoundingClientRectMock(widthOrMockFn: number | (() => DOMRect | null), height?: number, x?: number, y?: number, top?: number, right?: number, bottom?: number, left?: number): void;
3
+ /** Clears mocked `getBoundingClientRect()` function on HTMLElements. */
4
+ export declare function clearGetBoundingClientRectMock(): void;
@@ -0,0 +1,36 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var bounding_client_rect_mock_exports = {};
19
+ __export(bounding_client_rect_mock_exports, {
20
+ clearGetBoundingClientRectMock: () => clearGetBoundingClientRectMock,
21
+ setupGetBoundingClientRectMock: () => setupGetBoundingClientRectMock
22
+ });
23
+ module.exports = __toCommonJS(bounding_client_rect_mock_exports);
24
+ var import_dom_rect_mock = require("./dom-rect-mock.js");
25
+ const pristineGetBoundingClientRect = Element.prototype.getBoundingClientRect;
26
+ function setupGetBoundingClientRectMock(widthOrMockFn, height, x, y, top, right, bottom, left) {
27
+ Object.defineProperty(Element.prototype, "getBoundingClientRect", {
28
+ writable: true,
29
+ value: typeof widthOrMockFn === "number" ? () => (0, import_dom_rect_mock.createDOMRect)(widthOrMockFn, height, x, y, top, right, bottom, left) : function getBoundingClientRectMock() {
30
+ return widthOrMockFn.call(this) ?? import_dom_rect_mock.FALLBACK_DOM_RECT;
31
+ }
32
+ });
33
+ }
34
+ function clearGetBoundingClientRectMock() {
35
+ Element.prototype.getBoundingClientRect = pristineGetBoundingClientRect;
36
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Mocks the `getContext()` function of HTMLCanvasElements so it returns an
3
+ * object with an implementation of `measureText()`. If no `mockTextWidth` is
4
+ * set, it will fall back to a default implementation that attempts to calculate
5
+ * a reasonable value for each given string.
6
+ *
7
+ * @param mockTextWidth - The value returned by the `measureText()` mock for all strings
8
+ */
9
+ export declare function setupCanvasMeasureTextMock(mockTextWidth?: number): void;
10
+ /** Clears mocked `getContext()` function on HTMLCanvasElements. */
11
+ export declare function clearCanvasMeasureTextMock(): void;
@@ -0,0 +1,192 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var canvas_mock_exports = {};
19
+ __export(canvas_mock_exports, {
20
+ clearCanvasMeasureTextMock: () => clearCanvasMeasureTextMock,
21
+ setupCanvasMeasureTextMock: () => setupCanvasMeasureTextMock
22
+ });
23
+ module.exports = __toCommonJS(canvas_mock_exports);
24
+ const AVG_CHARACTER_WIDTH = 8;
25
+ const TEXT_WIDTH_MAPPINGS = {
26
+ "\u2026": 11,
27
+ "0": 9,
28
+ "1": 7,
29
+ "2": 9,
30
+ "3": 8,
31
+ "4": 9,
32
+ "5": 10,
33
+ "6": 10,
34
+ "7": 9,
35
+ "8": 9,
36
+ "9": 8,
37
+ " ": 0,
38
+ "!": 4,
39
+ '"': 6,
40
+ "#": 10,
41
+ $: 9,
42
+ "%": 12,
43
+ "&": 10,
44
+ "'": 2,
45
+ "(": 7,
46
+ ")": 5,
47
+ "*": 7,
48
+ "+": 9,
49
+ ",": 3,
50
+ "-": 5,
51
+ ".": 4,
52
+ "/": 7,
53
+ ":": 4,
54
+ ";": 3,
55
+ "<": 7,
56
+ "=": 9,
57
+ ">": 9,
58
+ "?": 7,
59
+ "@": 14,
60
+ A: 11,
61
+ B: 11,
62
+ C: 10,
63
+ D: 11,
64
+ E: 10,
65
+ F: 10,
66
+ G: 10,
67
+ H: 12,
68
+ I: 4,
69
+ J: 8,
70
+ K: 12,
71
+ L: 10,
72
+ M: 14,
73
+ N: 12,
74
+ O: 11,
75
+ P: 11,
76
+ Q: 11,
77
+ R: 11,
78
+ S: 9,
79
+ T: 10,
80
+ U: 11,
81
+ V: 10,
82
+ W: 14,
83
+ X: 10,
84
+ Y: 10,
85
+ Z: 9,
86
+ "[": 6,
87
+ "\\": 7,
88
+ "]": 4,
89
+ "^": 7,
90
+ _: 8,
91
+ "`": 4,
92
+ a: 8,
93
+ b: 10,
94
+ c: 8,
95
+ d: 8,
96
+ e: 8,
97
+ f: 6,
98
+ g: 8,
99
+ h: 9,
100
+ i: 4,
101
+ j: 4,
102
+ k: 10,
103
+ l: 4,
104
+ m: 14,
105
+ n: 9,
106
+ o: 9,
107
+ p: 10,
108
+ q: 8,
109
+ r: 7,
110
+ s: 8,
111
+ t: 5,
112
+ u: 9,
113
+ v: 8,
114
+ w: 12,
115
+ x: 8,
116
+ y: 8,
117
+ z: 8,
118
+ "{": 6,
119
+ "|": 4,
120
+ "}": 5,
121
+ "~": 11
122
+ };
123
+ function getCharWidth(character) {
124
+ return TEXT_WIDTH_MAPPINGS[character] ?? AVG_CHARACTER_WIDTH;
125
+ }
126
+ const pristineGetContext = HTMLCanvasElement.prototype.getContext;
127
+ function setupCanvasMeasureTextMock(mockTextWidth) {
128
+ Object.defineProperty(HTMLCanvasElement.prototype, "getContext", {
129
+ writable: true,
130
+ value: () => ({
131
+ measureText: (text) => {
132
+ const charWidth = mockTextWidth !== void 0 ? mockTextWidth : [...text].reduce((prev, curr) => prev + getCharWidth(curr), 0);
133
+ return {
134
+ width: charWidth,
135
+ actualBoundingBoxLeft: 0,
136
+ actualBoundingBoxRight: charWidth,
137
+ fontBoundingBoxAscent: 0,
138
+ fontBoundingBoxDescent: 0,
139
+ actualBoundingBoxAscent: 0,
140
+ actualBoundingBoxDescent: 0,
141
+ alphabeticBaseline: 0,
142
+ emHeightAscent: 0,
143
+ emHeightDescent: 0,
144
+ hangingBaseline: 0,
145
+ ideographicBaseline: 0
146
+ };
147
+ },
148
+ scale: () => {
149
+ return null;
150
+ },
151
+ clearRect: () => {
152
+ return null;
153
+ },
154
+ draw: () => {
155
+ return null;
156
+ },
157
+ beginPath: () => {
158
+ return null;
159
+ },
160
+ stroke: () => {
161
+ return null;
162
+ },
163
+ closePath: () => {
164
+ return null;
165
+ },
166
+ moveTo: () => {
167
+ return null;
168
+ },
169
+ lineTo: () => {
170
+ return null;
171
+ },
172
+ arc: () => {
173
+ return null;
174
+ },
175
+ fill: () => {
176
+ return null;
177
+ },
178
+ rect: () => {
179
+ return null;
180
+ },
181
+ save: () => {
182
+ return null;
183
+ },
184
+ restore: () => {
185
+ return null;
186
+ }
187
+ })
188
+ });
189
+ }
190
+ function clearCanvasMeasureTextMock() {
191
+ HTMLCanvasElement.prototype.getContext = pristineGetContext;
192
+ }
@@ -0,0 +1,12 @@
1
+ /** Creates a DOMRect instance. Unspecified values default to `0`. */
2
+ export declare function createDOMRect(width: number, height?: number, x?: number, y?: number, top?: number, right?: number, bottom?: number, left?: number): DOMRect;
3
+ export declare const FALLBACK_DOM_RECT: DOMRect;
4
+ /**
5
+ * Mocks the domRect since jsdom doesn't provide it
6
+ * @param mockDomRect - Override values for DOMRect
7
+ */
8
+ export declare function setupDomRectMock(mockDomRect?: DOMRect): void;
9
+ /**
10
+ * Clears the DomRect
11
+ */
12
+ export declare function clearDomRectMock(): void;
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var dom_rect_mock_exports = {};
19
+ __export(dom_rect_mock_exports, {
20
+ FALLBACK_DOM_RECT: () => FALLBACK_DOM_RECT,
21
+ clearDomRectMock: () => clearDomRectMock,
22
+ createDOMRect: () => createDOMRect,
23
+ setupDomRectMock: () => setupDomRectMock
24
+ });
25
+ module.exports = __toCommonJS(dom_rect_mock_exports);
26
+ function createDOMRect(width, height, x, y, top, right, bottom, left) {
27
+ return {
28
+ width,
29
+ height: height ?? 0,
30
+ x: x ?? 0,
31
+ y: y ?? 0,
32
+ top: top ?? 0,
33
+ right: right ?? 0,
34
+ bottom: bottom ?? 0,
35
+ left: left ?? 0,
36
+ toJSON: function() {
37
+ const { toJSON, ...remainingProps } = this;
38
+ return remainingProps;
39
+ }
40
+ };
41
+ }
42
+ const FALLBACK_DOM_RECT = Object.freeze(createDOMRect(0));
43
+ const prisitineDomRect = window.DOMRect;
44
+ function setupDomRectMock(mockDomRect = FALLBACK_DOM_RECT) {
45
+ Object.defineProperties(window, {
46
+ DOMRect: {
47
+ writable: true,
48
+ value: {
49
+ fromRect: () => mockDomRect
50
+ }
51
+ }
52
+ });
53
+ }
54
+ function clearDomRectMock() {
55
+ window.DOMRect = prisitineDomRect;
56
+ }
@@ -0,0 +1,7 @@
1
+ import { PartialDeep } from 'type-fest';
2
+ /** Mocks the Resize Observer */
3
+ export declare function setupResizeObserverMock(
4
+ /** When the Resize Observer should return specific results, you can pass them here */
5
+ mockedObserveCallbackValue?: PartialDeep<ResizeObserverEntry>[]): void;
6
+ /** Clears the Resize Observer */
7
+ export declare function clearResizeObserverMock(): void;
@@ -0,0 +1,42 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var resize_observer_mock_exports = {};
19
+ __export(resize_observer_mock_exports, {
20
+ clearResizeObserverMock: () => clearResizeObserverMock,
21
+ setupResizeObserverMock: () => setupResizeObserverMock
22
+ });
23
+ module.exports = __toCommonJS(resize_observer_mock_exports);
24
+ var import_globals = require("@jest/globals");
25
+ const pristineResizeObserver = window.ResizeObserver;
26
+ function setupResizeObserverMock(mockedObserveCallbackValue) {
27
+ Object.defineProperty(window, "ResizeObserver", {
28
+ writable: true,
29
+ value: import_globals.jest.fn(
30
+ (callback) => ({
31
+ observe: mockedObserveCallbackValue ? import_globals.jest.fn().mockImplementation(() => {
32
+ callback(mockedObserveCallbackValue);
33
+ }) : import_globals.jest.fn(),
34
+ unobserve: import_globals.jest.fn(),
35
+ disconnect: import_globals.jest.fn()
36
+ })
37
+ )
38
+ });
39
+ }
40
+ function clearResizeObserverMock() {
41
+ window.ResizeObserver = pristineResizeObserver;
42
+ }
@@ -0,0 +1,4 @@
1
+ /** Mocks the return value of the `scrollWidth` property on all `HTMLElements`. */
2
+ export declare function setupScrollWidthMock(scrollWidth: number): void;
3
+ /** Clears mocked `scrollWidth` property on `HTMLElements`. */
4
+ export declare function clearScrollWidthMock(): void;
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var scroll_width_mock_exports = {};
19
+ __export(scroll_width_mock_exports, {
20
+ clearScrollWidthMock: () => clearScrollWidthMock,
21
+ setupScrollWidthMock: () => setupScrollWidthMock
22
+ });
23
+ module.exports = __toCommonJS(scroll_width_mock_exports);
24
+ const pristineScrollWidthDescriptor = Object.getOwnPropertyDescriptor(
25
+ HTMLElement.prototype,
26
+ "scrollWidth"
27
+ );
28
+ function setupScrollWidthMock(scrollWidth) {
29
+ Object.defineProperty(HTMLElement.prototype, "scrollWidth", {
30
+ configurable: true,
31
+ get: () => scrollWidth
32
+ });
33
+ }
34
+ function clearScrollWidthMock() {
35
+ Object.defineProperty(HTMLElement.prototype, "scrollWidth", {
36
+ configurable: true,
37
+ get: pristineScrollWidthDescriptor?.get ? pristineScrollWidthDescriptor.get : () => 0
38
+ });
39
+ }