@dynatrace/strato-components-testing 1.18.0 → 3.0.1

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 (117) hide show
  1. package/esm/jest/index.js +102 -3
  2. package/esm/jest/index.js.map +2 -2
  3. package/esm/jest/mocks/create-mock-element.js +81 -0
  4. package/esm/jest/mocks/create-mock-element.js.map +7 -0
  5. package/esm/jest/mocks/create-range-mock.js +28 -0
  6. package/esm/jest/mocks/create-range-mock.js.map +7 -0
  7. package/esm/jest/mocks/crypto-mock.js +20 -0
  8. package/esm/jest/mocks/crypto-mock.js.map +7 -0
  9. package/esm/jest/mocks/dom-rect-mock.js.map +2 -2
  10. package/esm/jest/mocks/element-from-point-mock.js +12 -0
  11. package/esm/jest/mocks/element-from-point-mock.js.map +7 -0
  12. package/esm/jest/mocks/fetch-mock.js +20 -0
  13. package/esm/jest/mocks/fetch-mock.js.map +7 -0
  14. package/esm/jest/mocks/framer-motion-mock.js +59 -0
  15. package/esm/jest/mocks/framer-motion-mock.js.map +7 -0
  16. package/esm/jest/mocks/intersection-observer-mock.js +40 -0
  17. package/esm/jest/mocks/intersection-observer-mock.js.map +7 -0
  18. package/esm/jest/mocks/match-media-mock.js +27 -0
  19. package/esm/jest/mocks/match-media-mock.js.map +7 -0
  20. package/esm/jest/mocks/offset-height-mock.js +21 -0
  21. package/esm/jest/mocks/offset-height-mock.js.map +7 -0
  22. package/esm/jest/mocks/offset-width-mock.js +21 -0
  23. package/esm/jest/mocks/offset-width-mock.js.map +7 -0
  24. package/esm/jest/mocks/pointer-event-mock.js +24 -0
  25. package/esm/jest/mocks/pointer-event-mock.js.map +7 -0
  26. package/esm/jest/mocks/screen-size-mock.js +16 -0
  27. package/esm/jest/mocks/screen-size-mock.js.map +7 -0
  28. package/esm/jest/mocks/scroll-into-view-mock.js +16 -0
  29. package/esm/jest/mocks/scroll-into-view-mock.js.map +7 -0
  30. package/esm/jest/mocks/streamdown.mock.js +8 -0
  31. package/esm/jest/mocks/streamdown.mock.js.map +7 -0
  32. package/esm/jest/mocks/table-virtualization-mock.js +87 -0
  33. package/esm/jest/mocks/table-virtualization-mock.js.map +7 -0
  34. package/esm/jest/mocks/virtualization-mock.js +155 -0
  35. package/esm/jest/mocks/virtualization-mock.js.map +7 -0
  36. package/esm/jest/preset/jest-preset.js +2 -1
  37. package/esm/jest/preset/jest-preset.js.map +2 -2
  38. package/esm/jest/setup/index.js +51 -0
  39. package/esm/jest/setup/index.js.map +2 -2
  40. package/esm/jest/testing-helpers/filters/filter-field.js +424 -0
  41. package/esm/jest/testing-helpers/filters/filter-field.js.map +7 -0
  42. package/esm/jest/testing-helpers/forms/base-input.js +32 -0
  43. package/esm/jest/testing-helpers/forms/base-input.js.map +7 -0
  44. package/esm/jest/testing-helpers/forms/password-input.js +29 -0
  45. package/esm/jest/testing-helpers/forms/password-input.js.map +7 -0
  46. package/esm/jest/testing-helpers/forms/search-input.js +27 -0
  47. package/esm/jest/testing-helpers/forms/search-input.js.map +7 -0
  48. package/esm/jest/testing-helpers/forms/select.js +131 -0
  49. package/esm/jest/testing-helpers/forms/select.js.map +7 -0
  50. package/esm/jest/testing-helpers/forms/text-input.js +24 -0
  51. package/esm/jest/testing-helpers/forms/text-input.js.map +7 -0
  52. package/esm/jest/testing-helpers/tables/datatable.js +794 -0
  53. package/esm/jest/testing-helpers/tables/datatable.js.map +7 -0
  54. package/esm/jest/testing-helpers/utils/isFakeTimersEnabled.js +9 -0
  55. package/esm/jest/testing-helpers/utils/isFakeTimersEnabled.js.map +7 -0
  56. package/esm/jest/testing-helpers/utils/setup-user-event.js +15 -0
  57. package/esm/jest/testing-helpers/utils/setup-user-event.js.map +7 -0
  58. package/jest/index.d.ts +22 -1
  59. package/jest/index.js +54 -3
  60. package/jest/mocks/create-mock-element.d.ts +15 -0
  61. package/jest/mocks/create-mock-element.js +99 -0
  62. package/jest/mocks/create-range-mock.d.ts +11 -0
  63. package/jest/mocks/create-range-mock.js +46 -0
  64. package/jest/mocks/crypto-mock.d.ts +12 -0
  65. package/jest/mocks/crypto-mock.js +48 -0
  66. package/jest/mocks/dom-rect-mock.d.ts +1 -0
  67. package/jest/mocks/element-from-point-mock.d.ts +11 -0
  68. package/jest/{setup.js → mocks/element-from-point-mock.js} +10 -16
  69. package/jest/mocks/fetch-mock.d.ts +10 -0
  70. package/jest/mocks/fetch-mock.js +38 -0
  71. package/jest/mocks/framer-motion-mock.d.ts +18 -0
  72. package/jest/mocks/framer-motion-mock.js +75 -0
  73. package/jest/mocks/intersection-observer-mock.d.ts +11 -0
  74. package/jest/mocks/intersection-observer-mock.js +58 -0
  75. package/jest/mocks/match-media-mock.d.ts +11 -0
  76. package/jest/mocks/match-media-mock.js +45 -0
  77. package/jest/mocks/offset-height-mock.d.ts +10 -0
  78. package/jest/mocks/offset-height-mock.js +39 -0
  79. package/jest/mocks/offset-width-mock.d.ts +10 -0
  80. package/jest/mocks/offset-width-mock.js +39 -0
  81. package/jest/mocks/pointer-event-mock.d.ts +10 -0
  82. package/jest/mocks/pointer-event-mock.js +42 -0
  83. package/jest/mocks/screen-size-mock.d.ts +10 -0
  84. package/jest/mocks/screen-size-mock.js +34 -0
  85. package/jest/mocks/scroll-into-view-mock.d.ts +10 -0
  86. package/jest/mocks/scroll-into-view-mock.js +34 -0
  87. package/jest/mocks/streamdown.mock.d.ts +2 -0
  88. package/jest/mocks/streamdown.mock.js +26 -0
  89. package/jest/mocks/table-virtualization-mock.d.ts +15 -0
  90. package/jest/mocks/table-virtualization-mock.js +102 -0
  91. package/jest/mocks/virtualization-mock.d.ts +9 -0
  92. package/jest/mocks/virtualization-mock.js +170 -0
  93. package/jest/preset/jest-preset.d.ts +2 -3
  94. package/jest/preset/jest-preset.js +2 -1
  95. package/jest/setup/index.js +27 -0
  96. package/jest/testing-helpers/filters/filter-field.d.ts +109 -0
  97. package/jest/testing-helpers/filters/filter-field.js +436 -0
  98. package/jest/testing-helpers/forms/base-input.d.ts +17 -0
  99. package/jest/testing-helpers/forms/base-input.js +50 -0
  100. package/jest/testing-helpers/forms/password-input.d.ts +16 -0
  101. package/jest/testing-helpers/forms/password-input.js +47 -0
  102. package/jest/testing-helpers/forms/search-input.d.ts +20 -0
  103. package/jest/testing-helpers/forms/search-input.js +45 -0
  104. package/jest/testing-helpers/forms/select.d.ts +65 -0
  105. package/jest/testing-helpers/forms/select.js +159 -0
  106. package/jest/testing-helpers/forms/text-input.d.ts +19 -0
  107. package/jest/testing-helpers/forms/text-input.js +42 -0
  108. package/jest/testing-helpers/tables/datatable.d.ts +239 -0
  109. package/jest/testing-helpers/tables/datatable.js +812 -0
  110. package/jest/testing-helpers/utils/isFakeTimersEnabled.d.ts +5 -0
  111. package/jest/testing-helpers/utils/isFakeTimersEnabled.js +27 -0
  112. package/jest/testing-helpers/utils/setup-user-event.d.ts +6 -0
  113. package/jest/testing-helpers/utils/setup-user-event.js +43 -0
  114. package/package.json +11 -3
  115. package/esm/jest/setup.js +0 -24
  116. package/esm/jest/setup.js.map +0 -7
  117. package/jest/setup.d.ts +0 -14
package/esm/jest/index.js CHANGED
@@ -1,12 +1,31 @@
1
+ import "@testing-library/jest-dom";
1
2
  import {
2
3
  customRender
3
4
  } from "./custom-render.js";
4
- import { setup, clear } from "./setup.js";
5
5
  import { stratoPreset } from "./preset/index.js";
6
+ import {
7
+ getTextInputHelper
8
+ } from "./testing-helpers/forms/text-input.js";
9
+ import {
10
+ getPasswordInputHelper
11
+ } from "./testing-helpers/forms/password-input.js";
12
+ import {
13
+ getSearchInputHelper
14
+ } from "./testing-helpers/forms/search-input.js";
15
+ import {
16
+ getDataTableHelper
17
+ } from "./testing-helpers/tables/datatable.js";
18
+ import {
19
+ getFilterFieldHelper
20
+ } from "./testing-helpers/filters/filter-field.js";
21
+ import {
22
+ getSelectTestingHelper
23
+ } from "./testing-helpers/forms/select.js";
6
24
  import {
7
25
  setupGetBoundingClientRectMock,
8
26
  clearGetBoundingClientRectMock
9
27
  } from "./mocks/bounding-client-rect-mock.js";
28
+ import { createMockElement } from "./mocks/create-mock-element.js";
10
29
  import {
11
30
  setupCanvasMeasureTextMock,
12
31
  clearCanvasMeasureTextMock
@@ -15,31 +34,111 @@ import {
15
34
  setupResizeObserverMock,
16
35
  clearResizeObserverMock
17
36
  } from "./mocks/resize-observer-mock.js";
37
+ import {
38
+ setupOffsetWidthMock,
39
+ clearOffsetWidthMock
40
+ } from "./mocks/offset-width-mock.js";
41
+ import {
42
+ setupOffsetHeightMock,
43
+ clearOffsetHeightMock
44
+ } from "./mocks/offset-height-mock.js";
18
45
  import { setupDomRectMock, clearDomRectMock } from "./mocks/dom-rect-mock.js";
46
+ import {
47
+ setupMatchMediaMock,
48
+ clearMatchMediaMock
49
+ } from "./mocks/match-media-mock.js";
50
+ import {
51
+ setupPointerEventMock,
52
+ clearPointerEventMock
53
+ } from "./mocks/pointer-event-mock.js";
54
+ import {
55
+ setupIntersectionObserverMock,
56
+ clearIntersectionObserverMock
57
+ } from "./mocks/intersection-observer-mock.js";
58
+ import {
59
+ setupCreateRangeMock,
60
+ clearCreateRangeMock
61
+ } from "./mocks/create-range-mock.js";
62
+ import {
63
+ setupScreenSizeMock,
64
+ clearScreenSizeMock
65
+ } from "./mocks/screen-size-mock.js";
66
+ import {
67
+ setupScrollIntoViewMock,
68
+ clearScrollIntoViewMock
69
+ } from "./mocks/scroll-into-view-mock.js";
19
70
  import {
20
71
  setupScrollWidthMock,
21
72
  clearScrollWidthMock
22
73
  } from "./mocks/scroll-width-mock.js";
74
+ import { setupFetchMock, clearFetchMock } from "./mocks/fetch-mock.js";
75
+ import {
76
+ setupTableVirtualizationMock,
77
+ clearTableVirtualizationMock
78
+ } from "./mocks/table-virtualization-mock.js";
79
+ import {
80
+ setupVirtualizationMock,
81
+ clearVirtualizationMock
82
+ } from "./mocks/virtualization-mock.js";
23
83
  import {
24
84
  setupTextEllipsisMock,
25
85
  clearTextEllipsisMock
26
86
  } from "./mocks/text-ellipsis-mock.js";
87
+ import {
88
+ setupFramerMotionMock,
89
+ clearFramerMotionMock
90
+ } from "./mocks/framer-motion-mock.js";
91
+ import {
92
+ setupElementFromPointMock,
93
+ clearElementFromPointMock
94
+ } from "./mocks/element-from-point-mock.js";
27
95
  export {
28
- clear,
29
96
  clearCanvasMeasureTextMock,
97
+ clearCreateRangeMock,
30
98
  clearDomRectMock,
99
+ clearElementFromPointMock,
100
+ clearFetchMock,
101
+ clearFramerMotionMock,
31
102
  clearGetBoundingClientRectMock,
103
+ clearIntersectionObserverMock,
104
+ clearMatchMediaMock,
105
+ clearOffsetHeightMock,
106
+ clearOffsetWidthMock,
107
+ clearPointerEventMock,
32
108
  clearResizeObserverMock,
109
+ clearScreenSizeMock,
110
+ clearScrollIntoViewMock,
33
111
  clearScrollWidthMock,
112
+ clearTableVirtualizationMock,
34
113
  clearTextEllipsisMock,
114
+ clearVirtualizationMock,
115
+ createMockElement,
116
+ getDataTableHelper,
117
+ getFilterFieldHelper,
118
+ getPasswordInputHelper,
119
+ getSearchInputHelper,
120
+ getSelectTestingHelper,
121
+ getTextInputHelper,
35
122
  customRender as render,
36
- setup,
37
123
  setupCanvasMeasureTextMock,
124
+ setupCreateRangeMock,
38
125
  setupDomRectMock,
126
+ setupElementFromPointMock,
127
+ setupFetchMock,
128
+ setupFramerMotionMock,
39
129
  setupGetBoundingClientRectMock,
130
+ setupIntersectionObserverMock,
131
+ setupMatchMediaMock,
132
+ setupOffsetHeightMock,
133
+ setupOffsetWidthMock,
134
+ setupPointerEventMock,
40
135
  setupResizeObserverMock,
136
+ setupScreenSizeMock,
137
+ setupScrollIntoViewMock,
41
138
  setupScrollWidthMock,
139
+ setupTableVirtualizationMock,
42
140
  setupTextEllipsisMock,
141
+ setupVirtualizationMock,
43
142
  stratoPreset
44
143
  };
45
144
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/jest/index.ts"],
4
- "sourcesContent": ["// we no longer re-export @testing-library/user-event or @testing-library/react\n// export * from '@testing-library/react';\n// import userEvent from '@testing-library/user-event';\n// export { userEvent };\n\nexport {\n customRender as render,\n type RenderWithIntlOptions,\n} from './custom-render.js';\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport { setup, clear } from './setup.js';\n\nexport { stratoPreset } from './preset/index.js';\n\n///#region Testing Helpers\n\n///#endregion Testing Helpers\n\n///#region Mocks\nexport {\n setupGetBoundingClientRectMock,\n clearGetBoundingClientRectMock,\n} from './mocks/bounding-client-rect-mock.js';\n\nexport {\n setupCanvasMeasureTextMock,\n clearCanvasMeasureTextMock,\n} from './mocks/canvas-mock.js';\n\nexport {\n setupResizeObserverMock,\n clearResizeObserverMock,\n} from './mocks/resize-observer-mock.js';\n\nexport { setupDomRectMock, clearDomRectMock } from './mocks/dom-rect-mock.js';\n\nexport {\n setupScrollWidthMock,\n clearScrollWidthMock,\n} from './mocks/scroll-width-mock.js';\n\nexport {\n setupTextEllipsisMock,\n clearTextEllipsisMock,\n} from './mocks/text-ellipsis-mock.js';\n\n///#endregion Mocks\n"],
5
- "mappings": "AAKA;AAAA,EACkB;AAAA,OAEX;AAGP,SAAS,OAAO,aAAa;AAE7B,SAAS,oBAAoB;AAO7B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,kBAAkB,wBAAwB;AAEnD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;",
4
+ "sourcesContent": ["// we no longer re-export @testing-library/user-event or @testing-library/react\n// export * from '@testing-library/react';\n// import userEvent from '@testing-library/user-event';\n// export { userEvent };\n\nimport '@testing-library/jest-dom';\n\nexport {\n customRender as render,\n type RenderWithIntlOptions,\n} from './custom-render.js';\n\nexport { stratoPreset } from './preset/index.js';\n\n///#region Testing Helpers\nexport {\n getTextInputHelper,\n type TextInputHelper,\n} from './testing-helpers/forms/text-input.js';\nexport {\n getPasswordInputHelper,\n type PasswordInputHelper,\n} from './testing-helpers/forms/password-input.js';\nexport {\n getSearchInputHelper,\n type SearchInputHelper,\n} from './testing-helpers/forms/search-input.js';\n\nexport {\n getDataTableHelper,\n type DataTableHelper,\n type DataTablePaginationHelper,\n type DataTableUserActionHelper,\n type DataTableSortingHelper,\n type DataTableRowSelectionHelper,\n type DataTableSubRowsHelper,\n type DataTableInteractiveRowsHelper,\n type DataTableDownloadHelper,\n type DataTableExpandableRowHelper,\n} from './testing-helpers/tables/datatable.js';\n\nexport type { BaseInputHelper } from './testing-helpers/forms/base-input.js';\n\nexport {\n getFilterFieldHelper,\n type FilterFieldHelper,\n type FilterFieldPinnedAndRecentSuggestionBase,\n type FilterFieldPinnedSuggestion,\n type FilterFieldRecentSuggestion,\n} from './testing-helpers/filters/filter-field.js';\n\nexport {\n getSelectTestingHelper,\n type SelectTestingHelper,\n} from './testing-helpers/forms/select.js';\n///#endregion Testing Helpers\n\n///#region Mocks\nexport {\n setupGetBoundingClientRectMock,\n clearGetBoundingClientRectMock,\n} from './mocks/bounding-client-rect-mock.js';\n\nexport { createMockElement } from './mocks/create-mock-element.js';\n\nexport {\n setupCanvasMeasureTextMock,\n clearCanvasMeasureTextMock,\n} from './mocks/canvas-mock.js';\n\nexport {\n setupResizeObserverMock,\n clearResizeObserverMock,\n} from './mocks/resize-observer-mock.js';\n\nexport {\n setupOffsetWidthMock,\n clearOffsetWidthMock,\n} from './mocks/offset-width-mock.js';\n\nexport {\n setupOffsetHeightMock,\n clearOffsetHeightMock,\n} from './mocks/offset-height-mock.js';\n\nexport { setupDomRectMock, clearDomRectMock } from './mocks/dom-rect-mock.js';\n\nexport {\n setupMatchMediaMock,\n clearMatchMediaMock,\n} from './mocks/match-media-mock.js';\n\nexport {\n setupPointerEventMock,\n clearPointerEventMock,\n} from './mocks/pointer-event-mock.js';\n\nexport {\n setupIntersectionObserverMock,\n clearIntersectionObserverMock,\n} from './mocks/intersection-observer-mock.js';\n\nexport {\n setupCreateRangeMock,\n clearCreateRangeMock,\n} from './mocks/create-range-mock.js';\n\nexport {\n setupScreenSizeMock,\n clearScreenSizeMock,\n} from './mocks/screen-size-mock.js';\n\nexport {\n setupScrollIntoViewMock,\n clearScrollIntoViewMock,\n} from './mocks/scroll-into-view-mock.js';\n\nexport {\n setupScrollWidthMock,\n clearScrollWidthMock,\n} from './mocks/scroll-width-mock.js';\n\nexport { setupFetchMock, clearFetchMock } from './mocks/fetch-mock.js';\n\nexport {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n setupTableVirtualizationMock,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n clearTableVirtualizationMock,\n} from './mocks/table-virtualization-mock.js';\n\nexport {\n setupVirtualizationMock,\n clearVirtualizationMock,\n} from './mocks/virtualization-mock.js';\n\nexport {\n setupTextEllipsisMock,\n clearTextEllipsisMock,\n} from './mocks/text-ellipsis-mock.js';\n\nexport {\n setupFramerMotionMock,\n clearFramerMotionMock,\n} from './mocks/framer-motion-mock.js';\n\nexport {\n setupElementFromPointMock,\n clearElementFromPointMock,\n} from './mocks/element-from-point-mock.js';\n\n///#endregion Mocks\n"],
5
+ "mappings": "AAKA,OAAO;AAEP;AAAA,EACkB;AAAA,OAEX;AAEP,SAAS,oBAAoB;AAG7B;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AAEP;AAAA,EACE;AAAA,OAUK;AAIP;AAAA,EACE;AAAA,OAKK;AAEP;AAAA,EACE;AAAA,OAEK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,yBAAyB;AAElC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,kBAAkB,wBAAwB;AAEnD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,gBAAgB,sBAAsB;AAE/C;AAAA,EAEE;AAAA,EAEA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,81 @@
1
+ function createMockElement(elementOrTag, left, top, width, height) {
2
+ const el = typeof elementOrTag === "string" ? document.createElement(elementOrTag) : elementOrTag;
3
+ Object.assign(el.style, {
4
+ width: `${width}px`,
5
+ height: `${height}px`
6
+ });
7
+ el.getBoundingClientRect = () => ({
8
+ x: left,
9
+ y: top,
10
+ width,
11
+ height,
12
+ top,
13
+ left,
14
+ right: width + left,
15
+ bottom: height + top,
16
+ toJSON: () => null
17
+ });
18
+ Object.defineProperties(el, {
19
+ offsetWidth: {
20
+ get() {
21
+ return parseFloat(this.style.width) || 0;
22
+ }
23
+ },
24
+ offsetHeight: {
25
+ get() {
26
+ return parseFloat(this.style.height) || 0;
27
+ }
28
+ },
29
+ offsetTop: {
30
+ get() {
31
+ return parseFloat(this.style.marginTop) || 0;
32
+ }
33
+ },
34
+ offsetLeft: {
35
+ get() {
36
+ return parseFloat(this.style.marginLeft) || 0;
37
+ }
38
+ },
39
+ clientWidth: {
40
+ configurable: true,
41
+ get: function() {
42
+ return this._jsdomMockClientWidth || this._clientWidth || 0;
43
+ },
44
+ set(val) {
45
+ this._clientWidth = val;
46
+ }
47
+ },
48
+ clientHeight: {
49
+ configurable: true,
50
+ get: function() {
51
+ return this._jsdomMockClientHight || this._clientHeight || 0;
52
+ },
53
+ set(val) {
54
+ this._clientHeight = val;
55
+ }
56
+ },
57
+ scrollWidth: {
58
+ configurable: true,
59
+ get: function() {
60
+ return this._scrollWidth || 0;
61
+ },
62
+ set(val) {
63
+ this._scrollWidth = val;
64
+ }
65
+ },
66
+ scrollHeight: {
67
+ configurable: true,
68
+ get: function() {
69
+ return this._scrollHeight || 0;
70
+ },
71
+ set(val) {
72
+ this._scrollHeight = val;
73
+ }
74
+ }
75
+ });
76
+ return el;
77
+ }
78
+ export {
79
+ createMockElement
80
+ };
81
+ //# sourceMappingURL=create-mock-element.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/create-mock-element.ts"],
4
+ "sourcesContent": ["/**\n * Creates a mock element: https://github.com/jsdom/jsdom/issues/653\n * @public\n */\nexport function createMockElement(\n /** Element tag name */\n elementOrTag: HTMLElement | string,\n /** Horizontal offset */\n left: number,\n /** Vertical offset */\n top: number,\n /** Element width */\n width: number,\n /** Element height */\n height: number,\n): HTMLElement {\n const el =\n typeof elementOrTag === 'string'\n ? document.createElement(elementOrTag)\n : elementOrTag;\n Object.assign(el.style, {\n width: `${width}px`,\n height: `${height}px`,\n });\n\n el.getBoundingClientRect = () => ({\n x: left,\n y: top,\n width,\n height,\n top,\n left,\n right: width + left,\n bottom: height + top,\n toJSON: () => null,\n });\n\n Object.defineProperties(el, {\n offsetWidth: {\n get() {\n return parseFloat(this.style.width) || 0;\n },\n },\n offsetHeight: {\n get() {\n return parseFloat(this.style.height) || 0;\n },\n },\n offsetTop: {\n get() {\n return parseFloat(this.style.marginTop) || 0;\n },\n },\n offsetLeft: {\n get() {\n return parseFloat(this.style.marginLeft) || 0;\n },\n },\n clientWidth: {\n configurable: true,\n get: function () {\n return this._jsdomMockClientWidth || this._clientWidth || 0;\n },\n set(val: number) {\n this._clientWidth = val;\n },\n },\n clientHeight: {\n configurable: true,\n get: function () {\n return this._jsdomMockClientHight || this._clientHeight || 0;\n },\n set(val: number) {\n this._clientHeight = val;\n },\n },\n scrollWidth: {\n configurable: true,\n get: function () {\n return this._scrollWidth || 0;\n },\n set(val: number) {\n this._scrollWidth = val;\n },\n },\n scrollHeight: {\n configurable: true,\n get: function () {\n return this._scrollHeight || 0;\n },\n set(val: number) {\n this._scrollHeight = val;\n },\n },\n });\n\n return el;\n}\n"],
5
+ "mappings": "AAIO,SAAS,kBAEd,cAEA,MAEA,KAEA,OAEA,QACa;AACb,QAAM,KACJ,OAAO,iBAAiB,WACpB,SAAS,cAAc,YAAY,IACnC;AACN,SAAO,OAAO,GAAG,OAAO;AAAA,IACtB,OAAO,GAAG,KAAK;AAAA,IACf,QAAQ,GAAG,MAAM;AAAA,EACnB,CAAC;AAED,KAAG,wBAAwB,OAAO;AAAA,IAChC,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,QAAQ;AAAA,IACf,QAAQ,SAAS;AAAA,IACjB,QAAQ,MAAM;AAAA,EAChB;AAEA,SAAO,iBAAiB,IAAI;AAAA,IAC1B,aAAa;AAAA,MACX,MAAM;AACJ,eAAO,WAAW,KAAK,MAAM,KAAK,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AACJ,eAAO,WAAW,KAAK,MAAM,MAAM,KAAK;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AACJ,eAAO,WAAW,KAAK,MAAM,SAAS,KAAK;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AACJ,eAAO,WAAW,KAAK,MAAM,UAAU,KAAK;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,cAAc;AAAA,MACd,KAAK,WAAY;AACf,eAAO,KAAK,yBAAyB,KAAK,gBAAgB;AAAA,MAC5D;AAAA,MACA,IAAI,KAAa;AACf,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,cAAc;AAAA,MACd,KAAK,WAAY;AACf,eAAO,KAAK,yBAAyB,KAAK,iBAAiB;AAAA,MAC7D;AAAA,MACA,IAAI,KAAa;AACf,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,cAAc;AAAA,MACd,KAAK,WAAY;AACf,eAAO,KAAK,gBAAgB;AAAA,MAC9B;AAAA,MACA,IAAI,KAAa;AACf,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,cAAc;AAAA,MACd,KAAK,WAAY;AACf,eAAO,KAAK,iBAAiB;AAAA,MAC/B;AAAA,MACA,IAAI,KAAa;AACf,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,28 @@
1
+ import { jest } from "@jest/globals";
2
+ const pristineCreateRange = global.document.createRange;
3
+ function setupCreateRangeMock() {
4
+ Object.defineProperty(global.document, "createRange", {
5
+ writable: true,
6
+ value: () => {
7
+ const range = new Range();
8
+ range.getBoundingClientRect = jest.fn();
9
+ range.getClientRects = () => {
10
+ return {
11
+ item: () => null,
12
+ length: 0,
13
+ [Symbol.iterator]: function* () {
14
+ }
15
+ };
16
+ };
17
+ return range;
18
+ }
19
+ });
20
+ }
21
+ function clearCreateRangeMock() {
22
+ global.document.createRange = pristineCreateRange;
23
+ }
24
+ export {
25
+ clearCreateRangeMock,
26
+ setupCreateRangeMock
27
+ };
28
+ //# sourceMappingURL=create-range-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/create-range-mock.ts"],
4
+ "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { jest } from '@jest/globals';\n\nconst pristineCreateRange = global.document.createRange;\n\n/**\n * Mocks the `document.createRange()` function so it returns\n * a valid `Range` object.\n * @public\n */\nexport function setupCreateRangeMock() {\n Object.defineProperty(global.document, 'createRange', {\n writable: true,\n value: () => {\n const range = new Range();\n\n range.getBoundingClientRect = jest.fn<() => DOMRect>();\n range.getClientRects = () => {\n return {\n item: () => null,\n length: 0,\n [Symbol.iterator]: function* () {\n // next: () => ({ done: true }),\n },\n };\n };\n\n return range;\n },\n });\n}\n\n/**\n * Clears mocked `document.createRange()` function.\n * @public\n */\nexport function clearCreateRangeMock() {\n global.document.createRange = pristineCreateRange;\n}\n"],
5
+ "mappings": "AACA,SAAS,YAAY;AAErB,MAAM,sBAAsB,OAAO,SAAS;AAOrC,SAAS,uBAAuB;AACrC,SAAO,eAAe,OAAO,UAAU,eAAe;AAAA,IACpD,UAAU;AAAA,IACV,OAAO,MAAM;AACX,YAAM,QAAQ,IAAI,MAAM;AAExB,YAAM,wBAAwB,KAAK,GAAkB;AACrD,YAAM,iBAAiB,MAAM;AAC3B,eAAO;AAAA,UACL,MAAM,MAAM;AAAA,UACZ,QAAQ;AAAA,UACR,CAAC,OAAO,QAAQ,GAAG,aAAa;AAAA,UAEhC;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAMO,SAAS,uBAAuB;AACrC,SAAO,SAAS,cAAc;AAChC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,20 @@
1
+ import crypto from "node:crypto";
2
+ const pristineCrypto = global.crypto;
3
+ function setupCryptoMock() {
4
+ Object.defineProperty(globalThis, "crypto", {
5
+ value: {
6
+ randomUUID: () => crypto.randomUUID(),
7
+ getRandomValues: (typedArray) => crypto.getRandomValues(typedArray)
8
+ }
9
+ });
10
+ }
11
+ function clearCryptoMock() {
12
+ Object.defineProperty(globalThis, "crypto", {
13
+ value: pristineCrypto
14
+ });
15
+ }
16
+ export {
17
+ clearCryptoMock,
18
+ setupCryptoMock
19
+ };
20
+ //# sourceMappingURL=crypto-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/crypto-mock.ts"],
4
+ "sourcesContent": ["import crypto from 'node:crypto';\n\nconst pristineCrypto = global.crypto;\n\n/**\n * Mocks crypo web api that is generally available, but missing in jsdom version 20.\n *\n * @internal\n */\nexport function setupCryptoMock() {\n Object.defineProperty(globalThis, 'crypto', {\n value: {\n randomUUID: () => crypto.randomUUID(),\n getRandomValues: (typedArray) => crypto.getRandomValues(typedArray),\n },\n });\n}\n\n/**\n * Clears crypo web api mock.\n *\n * @internal\n */\nexport function clearCryptoMock() {\n Object.defineProperty(globalThis, 'crypto', {\n value: pristineCrypto,\n });\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AAEnB,MAAM,iBAAiB,OAAO;AAOvB,SAAS,kBAAkB;AAChC,SAAO,eAAe,YAAY,UAAU;AAAA,IAC1C,OAAO;AAAA,MACL,YAAY,MAAM,OAAO,WAAW;AAAA,MACpC,iBAAiB,CAAC,eAAe,OAAO,gBAAgB,UAAU;AAAA,IACpE;AAAA,EACF,CAAC;AACH;AAOO,SAAS,kBAAkB;AAChC,SAAO,eAAe,YAAY,UAAU;AAAA,IAC1C,OAAO;AAAA,EACT,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/mocks/dom-rect-mock.ts"],
4
- "sourcesContent": ["/**\n * Creates a DOMRect instance. Unspecified values default to `0`.\n * @internal\n */\nexport function createDOMRect(\n width: number,\n height?: number,\n x?: number,\n y?: number,\n top?: number,\n right?: number,\n bottom?: number,\n left?: number,\n): DOMRect {\n return {\n width,\n height: height ?? 0,\n x: x ?? 0,\n y: y ?? 0,\n top: top ?? 0,\n right: right ?? 0,\n bottom: bottom ?? 0,\n left: left ?? 0,\n toJSON: function () {\n const { toJSON, ...remainingProps } = this;\n\n return remainingProps;\n },\n };\n}\n\nexport const FALLBACK_DOM_RECT: DOMRect = Object.freeze(createDOMRect(0));\n\nconst prisitineDomRect = window.DOMRect;\n\n/**\n * Mocks the domRect since jsdom doesn't provide it\n * @param mockDomRect - Override values for DOMRect\n * @public\n */\nexport function setupDomRectMock(mockDomRect: DOMRect = FALLBACK_DOM_RECT) {\n Object.defineProperties(window, {\n DOMRect: {\n writable: true,\n value: {\n fromRect: () => mockDomRect,\n },\n },\n });\n}\n\n/**\n * Clears the DomRect\n * @public\n */\nexport function clearDomRectMock() {\n window.DOMRect = prisitineDomRect;\n}\n"],
5
- "mappings": "AAIO,SAAS,cACd,OACA,QACA,GACA,GACA,KACA,OACA,QACA,MACS;AACT,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,GAAG,KAAK;AAAA,IACR,GAAG,KAAK;AAAA,IACR,KAAK,OAAO;AAAA,IACZ,OAAO,SAAS;AAAA,IAChB,QAAQ,UAAU;AAAA,IAClB,MAAM,QAAQ;AAAA,IACd,QAAQ,WAAY;AAClB,YAAM,EAAE,QAAQ,GAAG,eAAe,IAAI;AAEtC,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,MAAM,oBAA6B,OAAO,OAAO,cAAc,CAAC,CAAC;AAExE,MAAM,mBAAmB,OAAO;AAOzB,SAAS,iBAAiB,cAAuB,mBAAmB;AACzE,SAAO,iBAAiB,QAAQ;AAAA,IAC9B,SAAS;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,QACL,UAAU,MAAM;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAMO,SAAS,mBAAmB;AACjC,SAAO,UAAU;AACnB;",
4
+ "sourcesContent": ["/**\n * Creates a DOMRect instance. Unspecified values default to `0`.\n * @internal\n */\nexport function createDOMRect(\n width: number,\n height?: number,\n x?: number,\n y?: number,\n top?: number,\n right?: number,\n bottom?: number,\n left?: number,\n): DOMRect {\n return {\n width,\n height: height ?? 0,\n x: x ?? 0,\n y: y ?? 0,\n top: top ?? 0,\n right: right ?? 0,\n bottom: bottom ?? 0,\n left: left ?? 0,\n toJSON: function () {\n const { toJSON, ...remainingProps } = this;\n\n return remainingProps;\n },\n };\n}\n\n/** @internal */\nexport const FALLBACK_DOM_RECT: DOMRect = Object.freeze(createDOMRect(0));\n\nconst prisitineDomRect = window.DOMRect;\n\n/**\n * Mocks the domRect since jsdom doesn't provide it\n * @param mockDomRect - Override values for DOMRect\n * @public\n */\nexport function setupDomRectMock(mockDomRect: DOMRect = FALLBACK_DOM_RECT) {\n Object.defineProperties(window, {\n DOMRect: {\n writable: true,\n value: {\n fromRect: () => mockDomRect,\n },\n },\n });\n}\n\n/**\n * Clears the DomRect\n * @public\n */\nexport function clearDomRectMock() {\n window.DOMRect = prisitineDomRect;\n}\n"],
5
+ "mappings": "AAIO,SAAS,cACd,OACA,QACA,GACA,GACA,KACA,OACA,QACA,MACS;AACT,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,GAAG,KAAK;AAAA,IACR,GAAG,KAAK;AAAA,IACR,KAAK,OAAO;AAAA,IACZ,OAAO,SAAS;AAAA,IAChB,QAAQ,UAAU;AAAA,IAClB,MAAM,QAAQ;AAAA,IACd,QAAQ,WAAY;AAClB,YAAM,EAAE,QAAQ,GAAG,eAAe,IAAI;AAEtC,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAGO,MAAM,oBAA6B,OAAO,OAAO,cAAc,CAAC,CAAC;AAExE,MAAM,mBAAmB,OAAO;AAOzB,SAAS,iBAAiB,cAAuB,mBAAmB;AACzE,SAAO,iBAAiB,QAAQ;AAAA,IAC9B,SAAS;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,QACL,UAAU,MAAM;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAMO,SAAS,mBAAmB;AACjC,SAAO,UAAU;AACnB;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,12 @@
1
+ const prisitineElementFromPoint = document.elementFromPoint;
2
+ function setupElementFromPointMock(element = null) {
3
+ document.elementFromPoint = () => element;
4
+ }
5
+ function clearElementFromPointMock() {
6
+ document.elementFromPoint = prisitineElementFromPoint;
7
+ }
8
+ export {
9
+ clearElementFromPointMock,
10
+ setupElementFromPointMock
11
+ };
12
+ //# sourceMappingURL=element-from-point-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/element-from-point-mock.ts"],
4
+ "sourcesContent": ["const prisitineElementFromPoint = document.elementFromPoint;\n\n/**\n * Mocks the elementFromPoint function since jsdom doesn't provide it\n * @param element - Override the element returned from elementFromPoint\n * @public\n */\nexport function setupElementFromPointMock(element: Element | null = null) {\n document.elementFromPoint = () => element;\n}\n\n/**\n * Clears the elementFromPoint mock.\n * @public\n */\nexport function clearElementFromPointMock() {\n document.elementFromPoint = prisitineElementFromPoint;\n}\n"],
5
+ "mappings": "AAAA,MAAM,4BAA4B,SAAS;AAOpC,SAAS,0BAA0B,UAA0B,MAAM;AACxE,WAAS,mBAAmB,MAAM;AACpC;AAMO,SAAS,4BAA4B;AAC1C,WAAS,mBAAmB;AAC9B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,20 @@
1
+ import { jest } from "@jest/globals";
2
+ const pristineFetch = global.fetch;
3
+ function setupFetchMock(mockedValue = {
4
+ ok: true,
5
+ status: 200,
6
+ json: () => {
7
+ return {};
8
+ }
9
+ }) {
10
+ const mockedFetchPromise = Promise.resolve(mockedValue);
11
+ global.fetch = jest.fn(() => mockedFetchPromise);
12
+ }
13
+ function clearFetchMock() {
14
+ global.fetch = pristineFetch;
15
+ }
16
+ export {
17
+ clearFetchMock,
18
+ setupFetchMock
19
+ };
20
+ //# sourceMappingURL=fetch-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/fetch-mock.ts"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n// eslint-disable-next-line no-restricted-imports\nimport { jest } from '@jest/globals';\n\nconst pristineFetch = global.fetch;\n\n/**\n * Mocks the global `fetch` function since JSDom has no implementation\n * @public\n */\nexport function setupFetchMock(\n mockedValue: any = {\n ok: true,\n status: 200,\n json: () => {\n return {};\n },\n },\n) {\n const mockedFetchPromise = Promise.resolve(mockedValue) as any;\n\n global.fetch = jest.fn(() => mockedFetchPromise as any);\n}\n\n/**\n * Clears mocked `fetch` function.\n * @public\n */\nexport function clearFetchMock() {\n global.fetch = pristineFetch;\n}\n"],
5
+ "mappings": "AAEA,SAAS,YAAY;AAErB,MAAM,gBAAgB,OAAO;AAMtB,SAAS,eACd,cAAmB;AAAA,EACjB,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,MAAM,MAAM;AACV,WAAO,CAAC;AAAA,EACV;AACF,GACA;AACA,QAAM,qBAAqB,QAAQ,QAAQ,WAAW;AAEtD,SAAO,QAAQ,KAAK,GAAG,MAAM,kBAAyB;AACxD;AAMO,SAAS,iBAAiB;AAC/B,SAAO,QAAQ;AACjB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,59 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { jest } from "@jest/globals";
3
+ import {
4
+ forwardRef
5
+ } from "react";
6
+ const actual = jest.requireActual("framer-motion");
7
+ function setupFramerMotionMock() {
8
+ const MockedTransition = jest.fn(({ children: children2 }) => children2);
9
+ const MockedAnimatePresence = jest.fn(({ children: children2 }) => /* @__PURE__ */ jsx(MockedTransition, { children: children2 }));
10
+ function motionMock(Component, _customMotionComponentConfig = {}) {
11
+ const motion = {
12
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/prefer-ts-expect-error
13
+ // @ts-ignore geo load has some weird type error here in the tests here.
14
+ div: forwardRef((props, forwardedRef) => (
15
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
16
+ // @ts-expect-error
17
+ /* @__PURE__ */ jsx("div", { ...props, ref: forwardedRef })
18
+ ))
19
+ };
20
+ return forwardRef((props, forwardedRef) => {
21
+ const componentProps = Object.fromEntries(
22
+ // do not pass framer props to DOM element
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ Object.entries(props).filter(
25
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
26
+ // @ts-expect-error
27
+ ([key]) => !actual.isValidMotionProp(key)
28
+ )
29
+ );
30
+ if (typeof Component === "string") {
31
+ const MotionComponent = motion[Component];
32
+ return /* @__PURE__ */ jsx(MotionComponent, { ...componentProps, ref: forwardedRef });
33
+ }
34
+ return (
35
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
36
+ // @ts-expect-error
37
+ /* @__PURE__ */ jsx(Component, { ref: forwardedRef, ...{ ...componentProps, children } })
38
+ );
39
+ });
40
+ }
41
+ const motionProxy = new Proxy(motionMock, {
42
+ get: (_target, prop) => motionMock(prop)
43
+ });
44
+ return {
45
+ motion: motionProxy,
46
+ AnimatePresence: MockedAnimatePresence,
47
+ useReducedMotion: (value = true) => value,
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ cubicBezier: actual.cubicBezier
50
+ };
51
+ }
52
+ function clearFramerMotionMock() {
53
+ jest.unmock("framer-motion");
54
+ }
55
+ export {
56
+ clearFramerMotionMock,
57
+ setupFramerMotionMock
58
+ };
59
+ //# sourceMappingURL=framer-motion-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/framer-motion-mock.tsx"],
4
+ "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { jest } from '@jest/globals';\nimport {\n type PropsWithChildren,\n ComponentType,\n type JSXElementConstructor,\n type ReactElement,\n RefAttributes,\n forwardRef,\n} from 'react';\n\nconst actual = jest.requireActual('framer-motion');\n\n// Copy from the framer motion types, as they are not exported any more.\ninterface CustomMotionComponentConfig {\n forwardMotionProps?: boolean;\n}\n\n/**\n * Mocks framer motion so children are rendered without animations for easier testing.\n * Needs to be called inside 'jest.mock' at the root level of the test,\n * since jest hoists 'jest.mock' to before any imports:\n *\n * jest.mock('framer-motion', () =\\> setupFramerMotionMock());\n * @public\n */\nexport function setupFramerMotionMock(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n motion: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n AnimatePresence: any;\n useReducedMotion: (value?: boolean) => boolean;\n cubicBezier: (\n mX1: number,\n mY1: number,\n mX2: number,\n mY2: number,\n ) => (t: number) => number;\n} {\n const MockedTransition = jest.fn(({ children }) => children);\n\n const MockedAnimatePresence = jest.fn(({ children }) => (\n <MockedTransition>{children}</MockedTransition>\n ));\n\n // Calling a motion with e.g. 'motion.div', the Component will be a string.\n // Calling a motion with e.g. 'motion(Flex)', the Component is the Flex component.\n // Depending on the type, we return either the corresponding html element or\n // the actual component, exluding all the framer-motion props.\n function motionMock<Props extends Record<string, unknown>>(\n Component: string | ComponentType<PropsWithChildren<Props>>,\n _customMotionComponentConfig: CustomMotionComponentConfig = {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n // Needs to be extended if we need other motion elements.\n const motion: Record<\n string,\n (\n props: RefAttributes<unknown>,\n ) => ReactElement<unknown, string | JSXElementConstructor<unknown>> | null\n > = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/prefer-ts-expect-error\n // @ts-ignore geo load has some weird type error here in the tests here.\n div: forwardRef((props, forwardedRef) => (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n <div {...props} ref={forwardedRef} />\n )),\n };\n\n return forwardRef((props, forwardedRef) => {\n const componentProps = Object.fromEntries(\n // do not pass framer props to DOM element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Object.entries(props as any).filter(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ([key]) => !actual.isValidMotionProp(key),\n ),\n );\n\n if (typeof Component === 'string') {\n const MotionComponent = motion[Component];\n return <MotionComponent {...componentProps} ref={forwardedRef} />;\n }\n\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n <Component ref={forwardedRef} {...{ ...componentProps, children }} />\n );\n });\n }\n\n const motionProxy = new Proxy(motionMock, {\n get: (_target, prop: string) => motionMock(prop),\n });\n\n return {\n motion: motionProxy,\n AnimatePresence: MockedAnimatePresence,\n useReducedMotion: (value = true) => value,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cubicBezier: (actual as any).cubicBezier as (\n mX1: number,\n mY1: number,\n mX2: number,\n mY2: number,\n ) => (t: number) => number,\n };\n}\n\n/**\n * @public\n */\nexport function clearFramerMotionMock() {\n jest.unmock('framer-motion');\n}\n"],
5
+ "mappings": "AA0CI;AAzCJ,SAAS,YAAY;AACrB;AAAA,EAME;AAAA,OACK;AAEP,MAAM,SAAS,KAAK,cAAc,eAAe;AAe1C,SAAS,wBAYd;AACA,QAAM,mBAAmB,KAAK,GAAG,CAAC,EAAE,UAAAA,UAAS,MAAMA,SAAQ;AAE3D,QAAM,wBAAwB,KAAK,GAAG,CAAC,EAAE,UAAAA,UAAS,MAChD,oBAAC,oBAAkB,UAAAA,WAAS,CAC7B;AAMD,WAAS,WACP,WACA,+BAA4D,CAAC,GAExD;AAEL,UAAM,SAKF;AAAA;AAAA;AAAA,MAGF,KAAK,WAAW,CAAC,OAAO;AAAA;AAAA;AAAA,QAGtB,oBAAC,SAAK,GAAG,OAAO,KAAK,cAAc;AAAA,OACpC;AAAA,IACH;AAEA,WAAO,WAAW,CAAC,OAAO,iBAAiB;AACzC,YAAM,iBAAiB,OAAO;AAAA;AAAA;AAAA,QAG5B,OAAO,QAAQ,KAAY,EAAE;AAAA;AAAA;AAAA,UAG3B,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,kBAAkB,GAAG;AAAA,QAC1C;AAAA,MACF;AAEA,UAAI,OAAO,cAAc,UAAU;AACjC,cAAM,kBAAkB,OAAO,SAAS;AACxC,eAAO,oBAAC,mBAAiB,GAAG,gBAAgB,KAAK,cAAc;AAAA,MACjE;AAEA;AAAA;AAAA;AAAA,QAGE,oBAAC,aAAU,KAAK,cAAe,GAAG,EAAE,GAAG,gBAAgB,SAAS,GAAG;AAAA;AAAA,IAEvE,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,IAAI,MAAM,YAAY;AAAA,IACxC,KAAK,CAAC,SAAS,SAAiB,WAAW,IAAI;AAAA,EACjD,CAAC;AAED,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,kBAAkB,CAAC,QAAQ,SAAS;AAAA;AAAA,IAEpC,aAAc,OAAe;AAAA,EAM/B;AACF;AAKO,SAAS,wBAAwB;AACtC,OAAK,OAAO,eAAe;AAC7B;",
6
+ "names": ["children"]
7
+ }
@@ -0,0 +1,40 @@
1
+ import { jest } from "@jest/globals";
2
+ const pristineIntersectionObserver = window.IntersectionObserver;
3
+ function setupIntersectionObserverMock(entries = [
4
+ {
5
+ isIntersecting: true,
6
+ intersectionRatio: 1
7
+ }
8
+ ]) {
9
+ class MockIntersectionObserver {
10
+ root = null;
11
+ rootMargin = "";
12
+ thresholds = [];
13
+ callback;
14
+ /**
15
+ * Mock constructor
16
+ * @param callback - callback function
17
+ * @param options - options
18
+ */
19
+ constructor(callback, options) {
20
+ this.callback = callback;
21
+ }
22
+ disconnect = jest.fn();
23
+ observe = jest.fn(() => this.callback(entries));
24
+ takeRecords = jest.fn();
25
+ unobserve = jest.fn();
26
+ }
27
+ Object.defineProperty(global, "IntersectionObserver", {
28
+ writable: true,
29
+ configurable: true,
30
+ value: MockIntersectionObserver
31
+ });
32
+ }
33
+ function clearIntersectionObserverMock() {
34
+ global.IntersectionObserver = pristineIntersectionObserver;
35
+ }
36
+ export {
37
+ clearIntersectionObserverMock,
38
+ setupIntersectionObserverMock
39
+ };
40
+ //# sourceMappingURL=intersection-observer-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/intersection-observer-mock.ts"],
4
+ "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { jest } from '@jest/globals';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst pristineIntersectionObserver = window.IntersectionObserver;\n\n/**\n * Mocks the IntersectionObserver\n * @param entries - entries for the callback function which is called when IntersectionObserver.observe is invoked\n * @public\n */\nexport function setupIntersectionObserverMock(\n entries: any = [\n {\n isIntersecting: true,\n intersectionRatio: 1,\n },\n ],\n) {\n class MockIntersectionObserver implements IntersectionObserver {\n readonly root = null;\n readonly rootMargin: string = '';\n readonly thresholds: ReadonlyArray<number> = [];\n readonly callback;\n\n /**\n * Mock constructor\n * @param callback - callback function\n * @param options - options\n */\n constructor(callback: any, options?: any) {\n this.callback = callback;\n }\n\n disconnect: () => void = jest.fn();\n observe: (target: Element) => void = jest.fn(() => this.callback(entries));\n takeRecords: () => IntersectionObserverEntry[] =\n jest.fn<() => IntersectionObserverEntry[]>();\n unobserve: (target: Element) => void = jest.fn();\n }\n\n Object.defineProperty(global, 'IntersectionObserver', {\n writable: true,\n configurable: true,\n value: MockIntersectionObserver,\n });\n}\n\n/**\n * Clears `IntersectionObserver` mock.\n * @public\n */\nexport function clearIntersectionObserverMock() {\n global.IntersectionObserver = pristineIntersectionObserver;\n}\n"],
5
+ "mappings": "AACA,SAAS,YAAY;AAIrB,MAAM,+BAA+B,OAAO;AAOrC,SAAS,8BACd,UAAe;AAAA,EACb;AAAA,IACE,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,EACrB;AACF,GACA;AAAA,EACA,MAAM,yBAAyD;AAAA,IACpD,OAAO;AAAA,IACP,aAAqB;AAAA,IACrB,aAAoC,CAAC;AAAA,IACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOT,YAAY,UAAe,SAAe;AACxC,WAAK,WAAW;AAAA,IAClB;AAAA,IAEA,aAAyB,KAAK,GAAG;AAAA,IACjC,UAAqC,KAAK,GAAG,MAAM,KAAK,SAAS,OAAO,CAAC;AAAA,IACzE,cACE,KAAK,GAAsC;AAAA,IAC7C,YAAuC,KAAK,GAAG;AAAA,EACjD;AAEA,SAAO,eAAe,QAAQ,wBAAwB;AAAA,IACpD,UAAU;AAAA,IACV,cAAc;AAAA,IACd,OAAO;AAAA,EACT,CAAC;AACH;AAMO,SAAS,gCAAgC;AAC9C,SAAO,uBAAuB;AAChC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,27 @@
1
+ import { jest } from "@jest/globals";
2
+ const prisitineMatchMedia = window.matchMedia;
3
+ function setupMatchMediaMock(isMatching = false) {
4
+ Object.defineProperty(window, "matchMedia", {
5
+ writable: true,
6
+ value: jest.fn().mockImplementation((query) => ({
7
+ matches: isMatching,
8
+ media: query,
9
+ onchange: null,
10
+ addListener: jest.fn(),
11
+ // Deprecated
12
+ removeListener: jest.fn(),
13
+ // Deprecated
14
+ addEventListener: jest.fn(),
15
+ removeEventListener: jest.fn(),
16
+ dispatchEvent: jest.fn()
17
+ }))
18
+ });
19
+ }
20
+ function clearMatchMediaMock() {
21
+ window.matchMedia = prisitineMatchMedia;
22
+ }
23
+ export {
24
+ clearMatchMediaMock,
25
+ setupMatchMediaMock
26
+ };
27
+ //# sourceMappingURL=match-media-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/match-media-mock.ts"],
4
+ "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { jest } from '@jest/globals';\n\nconst prisitineMatchMedia = window.matchMedia;\n\n/**\n * Mocks the match media on the window object\n * @param isMatching - whether or not the match query matches\n * @public\n */\nexport function setupMatchMediaMock(isMatching: boolean = false) {\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation((query) => ({\n matches: isMatching,\n media: query,\n onchange: null,\n addListener: jest.fn(), // Deprecated\n removeListener: jest.fn(), // Deprecated\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n });\n}\n\n/**\n * Clears the Match Media mock\n * @public\n */\nexport function clearMatchMediaMock() {\n window.matchMedia = prisitineMatchMedia;\n}\n"],
5
+ "mappings": "AACA,SAAS,YAAY;AAErB,MAAM,sBAAsB,OAAO;AAO5B,SAAS,oBAAoB,aAAsB,OAAO;AAC/D,SAAO,eAAe,QAAQ,cAAc;AAAA,IAC1C,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,CAAC,WAAW;AAAA,MAC9C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa,KAAK,GAAG;AAAA;AAAA,MACrB,gBAAgB,KAAK,GAAG;AAAA;AAAA,MACxB,kBAAkB,KAAK,GAAG;AAAA,MAC1B,qBAAqB,KAAK,GAAG;AAAA,MAC7B,eAAe,KAAK,GAAG;AAAA,IACzB,EAAE;AAAA,EACJ,CAAC;AACH;AAMO,SAAS,sBAAsB;AACpC,SAAO,aAAa;AACtB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,21 @@
1
+ const pristineOffsetHeightDescriptor = Object.getOwnPropertyDescriptor(
2
+ HTMLElement.prototype,
3
+ "offsetHeight"
4
+ );
5
+ function setupOffsetHeightMock(containerHeightOrMockFn) {
6
+ Object.defineProperty(HTMLElement.prototype, "offsetHeight", {
7
+ configurable: true,
8
+ get: typeof containerHeightOrMockFn === "number" ? () => containerHeightOrMockFn : containerHeightOrMockFn
9
+ });
10
+ }
11
+ function clearOffsetHeightMock() {
12
+ Object.defineProperty(HTMLElement.prototype, "offsetHeight", {
13
+ configurable: true,
14
+ get: pristineOffsetHeightDescriptor?.get ?? (() => 0)
15
+ });
16
+ }
17
+ export {
18
+ clearOffsetHeightMock,
19
+ setupOffsetHeightMock
20
+ };
21
+ //# sourceMappingURL=offset-height-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/offset-height-mock.ts"],
4
+ "sourcesContent": ["const pristineOffsetHeightDescriptor = Object.getOwnPropertyDescriptor(\n HTMLElement.prototype,\n 'offsetHeight',\n);\n\n/**\n * Mocks the return value of the offsetHeight property on all HTMLElements.\n * @public\n */\nexport function setupOffsetHeightMock(\n containerHeightOrMockFn: number | (() => number),\n) {\n Object.defineProperty(HTMLElement.prototype, 'offsetHeight', {\n configurable: true,\n get:\n typeof containerHeightOrMockFn === 'number'\n ? () => containerHeightOrMockFn\n : containerHeightOrMockFn,\n });\n}\n\n/**\n * Clears mocked offsetHeight property on HTMLElements.\n * @public\n */\nexport function clearOffsetHeightMock() {\n Object.defineProperty(HTMLElement.prototype, 'offsetHeight', {\n configurable: true,\n get: pristineOffsetHeightDescriptor?.get ?? (() => 0),\n });\n}\n"],
5
+ "mappings": "AAAA,MAAM,iCAAiC,OAAO;AAAA,EAC5C,YAAY;AAAA,EACZ;AACF;AAMO,SAAS,sBACd,yBACA;AACA,SAAO,eAAe,YAAY,WAAW,gBAAgB;AAAA,IAC3D,cAAc;AAAA,IACd,KACE,OAAO,4BAA4B,WAC/B,MAAM,0BACN;AAAA,EACR,CAAC;AACH;AAMO,SAAS,wBAAwB;AACtC,SAAO,eAAe,YAAY,WAAW,gBAAgB;AAAA,IAC3D,cAAc;AAAA,IACd,KAAK,gCAAgC,QAAQ,MAAM;AAAA,EACrD,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,21 @@
1
+ const pristineOffsetWidthDescriptor = Object.getOwnPropertyDescriptor(
2
+ HTMLElement.prototype,
3
+ "offsetWidth"
4
+ );
5
+ function setupOffsetWidthMock(containerWidthOrMockFn) {
6
+ Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
7
+ configurable: true,
8
+ get: typeof containerWidthOrMockFn === "number" ? () => containerWidthOrMockFn : containerWidthOrMockFn
9
+ });
10
+ }
11
+ function clearOffsetWidthMock() {
12
+ Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
13
+ configurable: true,
14
+ get: pristineOffsetWidthDescriptor?.get ?? (() => 0)
15
+ });
16
+ }
17
+ export {
18
+ clearOffsetWidthMock,
19
+ setupOffsetWidthMock
20
+ };
21
+ //# sourceMappingURL=offset-width-mock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/mocks/offset-width-mock.ts"],
4
+ "sourcesContent": ["const pristineOffsetWidthDescriptor = Object.getOwnPropertyDescriptor(\n HTMLElement.prototype,\n 'offsetWidth',\n);\n\n/**\n * Mocks the return value of the offsetWidth property on all HTMLElements.\n * @public\n */\nexport function setupOffsetWidthMock(\n containerWidthOrMockFn: number | (() => number),\n) {\n Object.defineProperty(HTMLElement.prototype, 'offsetWidth', {\n configurable: true,\n get:\n typeof containerWidthOrMockFn === 'number'\n ? () => containerWidthOrMockFn\n : containerWidthOrMockFn,\n });\n}\n\n/**\n * Clears mocked offsetWidth property on HTMLElements.\n * @public\n */\nexport function clearOffsetWidthMock() {\n Object.defineProperty(HTMLElement.prototype, 'offsetWidth', {\n configurable: true,\n get: pristineOffsetWidthDescriptor?.get ?? (() => 0),\n });\n}\n"],
5
+ "mappings": "AAAA,MAAM,gCAAgC,OAAO;AAAA,EAC3C,YAAY;AAAA,EACZ;AACF;AAMO,SAAS,qBACd,wBACA;AACA,SAAO,eAAe,YAAY,WAAW,eAAe;AAAA,IAC1D,cAAc;AAAA,IACd,KACE,OAAO,2BAA2B,WAC9B,MAAM,yBACN;AAAA,EACR,CAAC;AACH;AAMO,SAAS,uBAAuB;AACrC,SAAO,eAAe,YAAY,WAAW,eAAe;AAAA,IAC1D,cAAc;AAAA,IACd,KAAK,+BAA+B,QAAQ,MAAM;AAAA,EACpD,CAAC;AACH;",
6
+ "names": []
7
+ }