@mui/material 5.16.0 → 5.16.2

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 (256) hide show
  1. package/AppBar/AppBar.js +2 -1
  2. package/Autocomplete/Autocomplete.d.ts +6 -7
  3. package/Autocomplete/Autocomplete.js +1 -1
  4. package/Badge/Badge.d.ts +1 -1
  5. package/Badge/Badge.js +2 -2
  6. package/Badge/useBadge.d.ts +13 -0
  7. package/Badge/useBadge.js +41 -0
  8. package/Badge/useBadge.types.d.ts +40 -0
  9. package/Badge/useBadge.types.js +1 -0
  10. package/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  11. package/Breadcrumbs/Breadcrumbs.js +1 -1
  12. package/CHANGELOG.md +53 -0
  13. package/ClickAwayListener/ClickAwayListener.d.ts +47 -0
  14. package/ClickAwayListener/ClickAwayListener.js +178 -0
  15. package/ClickAwayListener/index.d.ts +2 -2
  16. package/ClickAwayListener/index.js +1 -1
  17. package/InputBase/InputBase.js +2 -2
  18. package/ListItem/ListItem.js +1 -1
  19. package/Menu/Menu.js +1 -1
  20. package/Modal/Modal.d.ts +1 -1
  21. package/Modal/Modal.js +2 -2
  22. package/Modal/ModalManager.d.ts +25 -0
  23. package/Modal/ModalManager.js +213 -0
  24. package/Modal/index.d.ts +1 -1
  25. package/Modal/index.js +1 -1
  26. package/Modal/useModal.d.ts +13 -0
  27. package/Modal/useModal.js +195 -0
  28. package/Modal/useModal.types.d.ts +115 -0
  29. package/Modal/useModal.types.js +1 -0
  30. package/NoSsr/NoSsr.d.ts +25 -0
  31. package/NoSsr/NoSsr.js +73 -0
  32. package/NoSsr/NoSsr.types.d.ts +18 -0
  33. package/NoSsr/NoSsr.types.js +1 -0
  34. package/NoSsr/index.d.ts +3 -2
  35. package/NoSsr/index.js +1 -1
  36. package/Popover/Popover.js +2 -1
  37. package/Popper/BasePopper.d.ts +7 -0
  38. package/Popper/BasePopper.js +372 -0
  39. package/Popper/BasePopper.types.d.ts +130 -0
  40. package/Popper/BasePopper.types.js +1 -0
  41. package/Popper/Popper.d.ts +1 -1
  42. package/Popper/Popper.js +1 -1
  43. package/Popper/index.d.ts +2 -1
  44. package/Popper/index.js +2 -1
  45. package/Popper/popperClasses.d.ts +8 -0
  46. package/Popper/popperClasses.js +7 -0
  47. package/Portal/Portal.d.ts +16 -0
  48. package/Portal/Portal.js +92 -0
  49. package/Portal/Portal.types.d.ts +23 -0
  50. package/Portal/Portal.types.js +1 -0
  51. package/Portal/index.d.ts +3 -2
  52. package/Portal/index.js +1 -1
  53. package/Slider/Slider.d.ts +2 -2
  54. package/Slider/Slider.js +3 -2
  55. package/Slider/useSlider.d.ts +14 -0
  56. package/Slider/useSlider.js +655 -0
  57. package/Slider/useSlider.types.d.ts +228 -0
  58. package/Slider/useSlider.types.js +1 -0
  59. package/Snackbar/Snackbar.d.ts +1 -1
  60. package/Snackbar/Snackbar.js +4 -5
  61. package/Snackbar/useSnackbar.d.ts +14 -0
  62. package/Snackbar/useSnackbar.js +131 -0
  63. package/Snackbar/useSnackbar.types.d.ts +60 -0
  64. package/Snackbar/useSnackbar.types.js +1 -0
  65. package/SwipeableDrawer/SwipeableDrawer.js +1 -1
  66. package/TabScrollButton/TabScrollButton.d.ts +1 -1
  67. package/TabScrollButton/TabScrollButton.js +1 -1
  68. package/TablePagination/TablePagination.js +1 -1
  69. package/Tabs/Tabs.d.ts +1 -1
  70. package/Tabs/Tabs.js +1 -1
  71. package/TextareaAutosize/TextareaAutosize.d.ts +14 -0
  72. package/TextareaAutosize/TextareaAutosize.js +223 -0
  73. package/TextareaAutosize/TextareaAutosize.types.d.ts +13 -0
  74. package/TextareaAutosize/TextareaAutosize.types.js +1 -0
  75. package/TextareaAutosize/index.d.ts +3 -2
  76. package/TextareaAutosize/index.js +1 -1
  77. package/Tooltip/Tooltip.js +2 -3
  78. package/Unstable_TrapFocus/FocusTrap.d.ts +10 -0
  79. package/Unstable_TrapFocus/FocusTrap.js +332 -0
  80. package/Unstable_TrapFocus/FocusTrap.types.d.ts +51 -0
  81. package/Unstable_TrapFocus/FocusTrap.types.js +1 -0
  82. package/Unstable_TrapFocus/index.d.ts +2 -2
  83. package/Unstable_TrapFocus/index.js +1 -1
  84. package/index.d.ts +1 -1
  85. package/index.js +2 -2
  86. package/legacy/AppBar/AppBar.js +2 -1
  87. package/legacy/Autocomplete/Autocomplete.js +1 -1
  88. package/legacy/Badge/Badge.js +2 -2
  89. package/legacy/Badge/useBadge.js +42 -0
  90. package/legacy/Badge/useBadge.types.js +1 -0
  91. package/legacy/Breadcrumbs/Breadcrumbs.js +1 -1
  92. package/legacy/ClickAwayListener/ClickAwayListener.js +181 -0
  93. package/legacy/ClickAwayListener/index.js +1 -1
  94. package/legacy/InputBase/InputBase.js +2 -2
  95. package/legacy/ListItem/ListItem.js +1 -1
  96. package/legacy/Menu/Menu.js +1 -1
  97. package/legacy/Modal/Modal.js +2 -2
  98. package/legacy/Modal/ModalManager.js +233 -0
  99. package/legacy/Modal/index.js +1 -1
  100. package/legacy/Modal/useModal.js +206 -0
  101. package/legacy/Modal/useModal.types.js +1 -0
  102. package/legacy/NoSsr/NoSsr.js +75 -0
  103. package/legacy/NoSsr/NoSsr.types.js +1 -0
  104. package/legacy/NoSsr/index.js +1 -1
  105. package/legacy/Popover/Popover.js +2 -1
  106. package/legacy/Popper/BasePopper.js +380 -0
  107. package/legacy/Popper/BasePopper.types.js +1 -0
  108. package/legacy/Popper/Popper.js +1 -1
  109. package/legacy/Popper/index.js +2 -1
  110. package/legacy/Popper/popperClasses.js +7 -0
  111. package/legacy/Portal/Portal.js +92 -0
  112. package/legacy/Portal/Portal.types.js +1 -0
  113. package/legacy/Portal/index.js +1 -1
  114. package/legacy/Slider/Slider.js +3 -2
  115. package/legacy/Slider/useSlider.js +701 -0
  116. package/legacy/Slider/useSlider.types.js +1 -0
  117. package/legacy/Snackbar/Snackbar.js +4 -5
  118. package/legacy/Snackbar/useSnackbar.js +141 -0
  119. package/legacy/Snackbar/useSnackbar.types.js +1 -0
  120. package/legacy/SwipeableDrawer/SwipeableDrawer.js +1 -1
  121. package/legacy/TabScrollButton/TabScrollButton.js +1 -1
  122. package/legacy/TablePagination/TablePagination.js +1 -1
  123. package/legacy/Tabs/Tabs.js +1 -1
  124. package/legacy/TextareaAutosize/TextareaAutosize.js +220 -0
  125. package/legacy/TextareaAutosize/TextareaAutosize.types.js +1 -0
  126. package/legacy/TextareaAutosize/index.js +1 -1
  127. package/legacy/Tooltip/Tooltip.js +2 -3
  128. package/legacy/Unstable_TrapFocus/FocusTrap.js +341 -0
  129. package/legacy/Unstable_TrapFocus/FocusTrap.types.js +1 -0
  130. package/legacy/Unstable_TrapFocus/index.js +1 -1
  131. package/legacy/index.js +2 -2
  132. package/legacy/useAutocomplete/useAutocomplete.js +1078 -2
  133. package/legacy/utils/PolymorphicComponent.js +1 -0
  134. package/legacy/utils/areArraysEqual.js +9 -0
  135. package/legacy/utils/index.js +1 -1
  136. package/legacy/utils/shouldSpreadAdditionalProps.js +1 -1
  137. package/legacy/utils/useSlot.js +3 -1
  138. package/modern/AppBar/AppBar.js +2 -1
  139. package/modern/Autocomplete/Autocomplete.js +1 -1
  140. package/modern/Badge/Badge.js +2 -2
  141. package/modern/Badge/useBadge.js +41 -0
  142. package/modern/Badge/useBadge.types.js +1 -0
  143. package/modern/Breadcrumbs/Breadcrumbs.js +1 -1
  144. package/modern/ClickAwayListener/ClickAwayListener.js +178 -0
  145. package/modern/ClickAwayListener/index.js +1 -1
  146. package/modern/InputBase/InputBase.js +2 -2
  147. package/modern/ListItem/ListItem.js +1 -1
  148. package/modern/Menu/Menu.js +1 -1
  149. package/modern/Modal/Modal.js +2 -2
  150. package/modern/Modal/ModalManager.js +213 -0
  151. package/modern/Modal/index.js +1 -1
  152. package/modern/Modal/useModal.js +193 -0
  153. package/modern/Modal/useModal.types.js +1 -0
  154. package/modern/NoSsr/NoSsr.js +73 -0
  155. package/modern/NoSsr/NoSsr.types.js +1 -0
  156. package/modern/NoSsr/index.js +1 -1
  157. package/modern/Popover/Popover.js +2 -1
  158. package/modern/Popper/BasePopper.js +371 -0
  159. package/modern/Popper/BasePopper.types.js +1 -0
  160. package/modern/Popper/Popper.js +1 -1
  161. package/modern/Popper/index.js +2 -1
  162. package/modern/Popper/popperClasses.js +7 -0
  163. package/modern/Portal/Portal.js +92 -0
  164. package/modern/Portal/Portal.types.js +1 -0
  165. package/modern/Portal/index.js +1 -1
  166. package/modern/Slider/Slider.js +3 -2
  167. package/modern/Slider/useSlider.js +643 -0
  168. package/modern/Slider/useSlider.types.js +1 -0
  169. package/modern/Snackbar/Snackbar.js +4 -5
  170. package/modern/Snackbar/useSnackbar.js +131 -0
  171. package/modern/Snackbar/useSnackbar.types.js +1 -0
  172. package/modern/SwipeableDrawer/SwipeableDrawer.js +1 -1
  173. package/modern/TabScrollButton/TabScrollButton.js +1 -1
  174. package/modern/TablePagination/TablePagination.js +1 -1
  175. package/modern/Tabs/Tabs.js +1 -1
  176. package/modern/TextareaAutosize/TextareaAutosize.js +223 -0
  177. package/modern/TextareaAutosize/TextareaAutosize.types.js +1 -0
  178. package/modern/TextareaAutosize/index.js +1 -1
  179. package/modern/Tooltip/Tooltip.js +2 -3
  180. package/modern/Unstable_TrapFocus/FocusTrap.js +331 -0
  181. package/modern/Unstable_TrapFocus/FocusTrap.types.js +1 -0
  182. package/modern/Unstable_TrapFocus/index.js +1 -1
  183. package/modern/index.js +2 -2
  184. package/modern/useAutocomplete/useAutocomplete.js +987 -2
  185. package/modern/utils/PolymorphicComponent.js +1 -0
  186. package/modern/utils/areArraysEqual.js +4 -0
  187. package/modern/utils/index.js +1 -1
  188. package/modern/utils/shouldSpreadAdditionalProps.js +1 -1
  189. package/modern/utils/useSlot.js +3 -1
  190. package/node/AppBar/AppBar.js +2 -1
  191. package/node/Autocomplete/Autocomplete.js +3 -3
  192. package/node/Badge/Badge.js +5 -5
  193. package/node/Badge/useBadge.js +46 -0
  194. package/node/Badge/useBadge.types.js +5 -0
  195. package/node/Breadcrumbs/Breadcrumbs.js +2 -2
  196. package/node/ClickAwayListener/ClickAwayListener.js +184 -0
  197. package/node/ClickAwayListener/index.js +1 -1
  198. package/node/InputBase/InputBase.js +7 -7
  199. package/node/ListItem/ListItem.js +3 -3
  200. package/node/Menu/Menu.js +3 -3
  201. package/node/Modal/Modal.js +5 -5
  202. package/node/Modal/ModalManager.js +221 -0
  203. package/node/Modal/index.js +2 -2
  204. package/node/Modal/useModal.js +203 -0
  205. package/node/Modal/useModal.types.js +5 -0
  206. package/node/NoSsr/NoSsr.js +81 -0
  207. package/node/NoSsr/NoSsr.types.js +5 -0
  208. package/node/NoSsr/index.js +3 -2
  209. package/node/Popover/Popover.js +5 -4
  210. package/node/Popper/BasePopper.js +380 -0
  211. package/node/Popper/BasePopper.types.js +5 -0
  212. package/node/Popper/Popper.js +2 -2
  213. package/node/Popper/index.js +14 -1
  214. package/node/Popper/popperClasses.js +15 -0
  215. package/node/Portal/Portal.js +100 -0
  216. package/node/Portal/Portal.types.js +5 -0
  217. package/node/Portal/index.js +3 -2
  218. package/node/Slider/Slider.js +14 -13
  219. package/node/Slider/useSlider.js +666 -0
  220. package/node/Slider/useSlider.types.js +5 -0
  221. package/node/Snackbar/Snackbar.js +9 -10
  222. package/node/Snackbar/useSnackbar.js +139 -0
  223. package/node/Snackbar/useSnackbar.types.js +5 -0
  224. package/node/SwipeableDrawer/SwipeableDrawer.js +2 -2
  225. package/node/TabScrollButton/TabScrollButton.js +3 -3
  226. package/node/TablePagination/TablePagination.js +2 -2
  227. package/node/Tabs/Tabs.js +3 -3
  228. package/node/TextareaAutosize/TextareaAutosize.js +230 -0
  229. package/node/TextareaAutosize/TextareaAutosize.types.js +5 -0
  230. package/node/TextareaAutosize/index.js +3 -2
  231. package/node/Tooltip/Tooltip.js +10 -11
  232. package/node/Unstable_TrapFocus/FocusTrap.js +339 -0
  233. package/node/Unstable_TrapFocus/FocusTrap.types.js +5 -0
  234. package/node/Unstable_TrapFocus/index.js +3 -2
  235. package/node/index.js +3 -3
  236. package/node/useAutocomplete/useAutocomplete.js +997 -18
  237. package/node/utils/PolymorphicComponent.js +5 -0
  238. package/node/utils/areArraysEqual.js +10 -0
  239. package/node/utils/index.js +2 -2
  240. package/node/utils/shouldSpreadAdditionalProps.js +3 -2
  241. package/node/utils/useSlot.js +6 -4
  242. package/package.json +6 -7
  243. package/styles/overrides.d.ts +1 -1
  244. package/umd/material-ui.development.js +9211 -9249
  245. package/umd/material-ui.production.min.js +3 -3
  246. package/useAutocomplete/useAutocomplete.d.ts +460 -2
  247. package/useAutocomplete/useAutocomplete.js +994 -2
  248. package/utils/PolymorphicComponent.d.ts +17 -0
  249. package/utils/PolymorphicComponent.js +1 -0
  250. package/utils/areArraysEqual.d.ts +3 -0
  251. package/utils/areArraysEqual.js +4 -0
  252. package/utils/index.d.ts +2 -1
  253. package/utils/index.js +1 -1
  254. package/utils/shouldSpreadAdditionalProps.js +1 -1
  255. package/utils/types.d.ts +2 -1
  256. package/utils/useSlot.js +3 -1
@@ -0,0 +1,206 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import * as React from 'react';
5
+ import { unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback, unstable_createChainedFunction as createChainedFunction } from '@mui/utils';
6
+ import extractEventHandlers from '@mui/utils/extractEventHandlers';
7
+ import { ModalManager, ariaHidden } from './ModalManager';
8
+ function getContainer(container) {
9
+ return typeof container === 'function' ? container() : container;
10
+ }
11
+ function getHasTransition(children) {
12
+ return children ? children.props.hasOwnProperty('in') : false;
13
+ }
14
+
15
+ // A modal manager used to track and manage the state of open Modals.
16
+ // Modals don't open on the server so this won't conflict with concurrent requests.
17
+ var defaultManager = new ModalManager();
18
+ /**
19
+ *
20
+ * Demos:
21
+ *
22
+ * - [Modal](https://mui.com/base-ui/react-modal/#hook)
23
+ *
24
+ * API:
25
+ *
26
+ * - [useModal API](https://mui.com/base-ui/react-modal/hooks-api/#use-modal)
27
+ */
28
+ function useModal(parameters) {
29
+ var container = parameters.container,
30
+ _parameters$disableEs = parameters.disableEscapeKeyDown,
31
+ disableEscapeKeyDown = _parameters$disableEs === void 0 ? false : _parameters$disableEs,
32
+ _parameters$disableSc = parameters.disableScrollLock,
33
+ disableScrollLock = _parameters$disableSc === void 0 ? false : _parameters$disableSc,
34
+ _parameters$manager = parameters.manager,
35
+ manager = _parameters$manager === void 0 ? defaultManager : _parameters$manager,
36
+ _parameters$closeAfte = parameters.closeAfterTransition,
37
+ closeAfterTransition = _parameters$closeAfte === void 0 ? false : _parameters$closeAfte,
38
+ onTransitionEnter = parameters.onTransitionEnter,
39
+ onTransitionExited = parameters.onTransitionExited,
40
+ children = parameters.children,
41
+ onClose = parameters.onClose,
42
+ open = parameters.open,
43
+ rootRef = parameters.rootRef; // @ts-ignore internal logic
44
+ var modal = React.useRef({});
45
+ var mountNodeRef = React.useRef(null);
46
+ var modalRef = React.useRef(null);
47
+ var handleRef = useForkRef(modalRef, rootRef);
48
+ var _React$useState = React.useState(!open),
49
+ exited = _React$useState[0],
50
+ setExited = _React$useState[1];
51
+ var hasTransition = getHasTransition(children);
52
+ var ariaHiddenProp = true;
53
+ if (parameters['aria-hidden'] === 'false' || parameters['aria-hidden'] === false) {
54
+ ariaHiddenProp = false;
55
+ }
56
+ var getDoc = function getDoc() {
57
+ return ownerDocument(mountNodeRef.current);
58
+ };
59
+ var getModal = function getModal() {
60
+ modal.current.modalRef = modalRef.current;
61
+ modal.current.mount = mountNodeRef.current;
62
+ return modal.current;
63
+ };
64
+ var handleMounted = function handleMounted() {
65
+ manager.mount(getModal(), {
66
+ disableScrollLock: disableScrollLock
67
+ });
68
+
69
+ // Fix a bug on Chrome where the scroll isn't initially 0.
70
+ if (modalRef.current) {
71
+ modalRef.current.scrollTop = 0;
72
+ }
73
+ };
74
+ var handleOpen = useEventCallback(function () {
75
+ var resolvedContainer = getContainer(container) || getDoc().body;
76
+ manager.add(getModal(), resolvedContainer);
77
+
78
+ // The element was already mounted.
79
+ if (modalRef.current) {
80
+ handleMounted();
81
+ }
82
+ });
83
+ var isTopModal = React.useCallback(function () {
84
+ return manager.isTopModal(getModal());
85
+ }, [manager]);
86
+ var handlePortalRef = useEventCallback(function (node) {
87
+ mountNodeRef.current = node;
88
+ if (!node) {
89
+ return;
90
+ }
91
+ if (open && isTopModal()) {
92
+ handleMounted();
93
+ } else if (modalRef.current) {
94
+ ariaHidden(modalRef.current, ariaHiddenProp);
95
+ }
96
+ });
97
+ var handleClose = React.useCallback(function () {
98
+ manager.remove(getModal(), ariaHiddenProp);
99
+ }, [ariaHiddenProp, manager]);
100
+ React.useEffect(function () {
101
+ return function () {
102
+ handleClose();
103
+ };
104
+ }, [handleClose]);
105
+ React.useEffect(function () {
106
+ if (open) {
107
+ handleOpen();
108
+ } else if (!hasTransition || !closeAfterTransition) {
109
+ handleClose();
110
+ }
111
+ }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);
112
+ var createHandleKeyDown = function createHandleKeyDown(otherHandlers) {
113
+ return function (event) {
114
+ var _otherHandlers$onKeyD;
115
+ (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
116
+
117
+ // The handler doesn't take event.defaultPrevented into account:
118
+ //
119
+ // event.preventDefault() is meant to stop default behaviors like
120
+ // clicking a checkbox to check it, hitting a button to submit a form,
121
+ // and hitting left arrow to move the cursor in a text input etc.
122
+ // Only special HTML elements have these default behaviors.
123
+ if (event.key !== 'Escape' || event.which === 229 ||
124
+ // Wait until IME is settled.
125
+ !isTopModal()) {
126
+ return;
127
+ }
128
+ if (!disableEscapeKeyDown) {
129
+ // Swallow the event, in case someone is listening for the escape key on the body.
130
+ event.stopPropagation();
131
+ if (onClose) {
132
+ onClose(event, 'escapeKeyDown');
133
+ }
134
+ }
135
+ };
136
+ };
137
+ var createHandleBackdropClick = function createHandleBackdropClick(otherHandlers) {
138
+ return function (event) {
139
+ var _otherHandlers$onClic;
140
+ (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
141
+ if (event.target !== event.currentTarget) {
142
+ return;
143
+ }
144
+ if (onClose) {
145
+ onClose(event, 'backdropClick');
146
+ }
147
+ };
148
+ };
149
+ var getRootProps = function getRootProps() {
150
+ var otherHandlers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
151
+ var propsEventHandlers = extractEventHandlers(parameters);
152
+
153
+ // The custom event handlers shouldn't be spread on the root element
154
+ delete propsEventHandlers.onTransitionEnter;
155
+ delete propsEventHandlers.onTransitionExited;
156
+ var externalEventHandlers = _extends({}, propsEventHandlers, otherHandlers);
157
+ return _extends({
158
+ role: 'presentation'
159
+ }, externalEventHandlers, {
160
+ onKeyDown: createHandleKeyDown(externalEventHandlers),
161
+ ref: handleRef
162
+ });
163
+ };
164
+ var getBackdropProps = function getBackdropProps() {
165
+ var otherHandlers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
166
+ var externalEventHandlers = otherHandlers;
167
+ return _extends({
168
+ 'aria-hidden': true
169
+ }, externalEventHandlers, {
170
+ onClick: createHandleBackdropClick(externalEventHandlers),
171
+ open: open
172
+ });
173
+ };
174
+ var getTransitionProps = function getTransitionProps() {
175
+ var handleEnter = function handleEnter() {
176
+ setExited(false);
177
+ if (onTransitionEnter) {
178
+ onTransitionEnter();
179
+ }
180
+ };
181
+ var handleExited = function handleExited() {
182
+ setExited(true);
183
+ if (onTransitionExited) {
184
+ onTransitionExited();
185
+ }
186
+ if (closeAfterTransition) {
187
+ handleClose();
188
+ }
189
+ };
190
+ return {
191
+ onEnter: createChainedFunction(handleEnter, children == null ? void 0 : children.props.onEnter),
192
+ onExited: createChainedFunction(handleExited, children == null ? void 0 : children.props.onExited)
193
+ };
194
+ };
195
+ return {
196
+ getRootProps: getRootProps,
197
+ getBackdropProps: getBackdropProps,
198
+ getTransitionProps: getTransitionProps,
199
+ rootRef: handleRef,
200
+ portalRef: handlePortalRef,
201
+ isTopModal: isTopModal,
202
+ exited: exited,
203
+ hasTransition: hasTransition
204
+ };
205
+ }
206
+ export default useModal;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { exactProp, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * NoSsr purposely removes components from the subject of Server Side Rendering (SSR).
9
+ *
10
+ * This component can be useful in a variety of situations:
11
+ *
12
+ * * Escape hatch for broken dependencies not supporting SSR.
13
+ * * Improve the time-to-first paint on the client by only rendering above the fold.
14
+ * * Reduce the rendering time on the server.
15
+ * * Under too heavy server load, you can turn on service degradation.
16
+ *
17
+ * Demos:
18
+ *
19
+ * - [No SSR](https://mui.com/material-ui/react-no-ssr/)
20
+ *
21
+ * API:
22
+ *
23
+ * - [NoSsr API](https://mui.com/material-ui/api/no-ssr/)
24
+ */
25
+ function NoSsr(props) {
26
+ var children = props.children,
27
+ _props$defer = props.defer,
28
+ defer = _props$defer === void 0 ? false : _props$defer,
29
+ _props$fallback = props.fallback,
30
+ fallback = _props$fallback === void 0 ? null : _props$fallback;
31
+ var _React$useState = React.useState(false),
32
+ mountedState = _React$useState[0],
33
+ setMountedState = _React$useState[1];
34
+ useEnhancedEffect(function () {
35
+ if (!defer) {
36
+ setMountedState(true);
37
+ }
38
+ }, [defer]);
39
+ React.useEffect(function () {
40
+ if (defer) {
41
+ setMountedState(true);
42
+ }
43
+ }, [defer]);
44
+
45
+ // We need the Fragment here to force react-docgen to recognise NoSsr as a component.
46
+ return /*#__PURE__*/_jsx(React.Fragment, {
47
+ children: mountedState ? children : fallback
48
+ });
49
+ }
50
+ process.env.NODE_ENV !== "production" ? NoSsr.propTypes /* remove-proptypes */ = {
51
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
52
+ // │ These PropTypes are generated from the TypeScript type definitions. │
53
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
54
+ // └─────────────────────────────────────────────────────────────────────┘
55
+ /**
56
+ * You can wrap a node.
57
+ */
58
+ children: PropTypes.node,
59
+ /**
60
+ * If `true`, the component will not only prevent server-side rendering.
61
+ * It will also defer the rendering of the children into a different screen frame.
62
+ * @default false
63
+ */
64
+ defer: PropTypes.bool,
65
+ /**
66
+ * The fallback content to display.
67
+ * @default null
68
+ */
69
+ fallback: PropTypes.node
70
+ } : void 0;
71
+ if (process.env.NODE_ENV !== 'production') {
72
+ // eslint-disable-next-line
73
+ NoSsr['propTypes' + ''] = exactProp(NoSsr.propTypes);
74
+ }
75
+ export default NoSsr;
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- export { NoSsr as default } from '@mui/base/NoSsr';
1
+ export { default } from './NoSsr';
@@ -5,13 +5,14 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import clsx from 'clsx';
8
- import { useSlotProps, isHostComponent } from '@mui/base/utils';
9
8
  import composeClasses from '@mui/utils/composeClasses';
10
9
  import HTMLElementType from '@mui/utils/HTMLElementType';
11
10
  import refType from '@mui/utils/refType';
12
11
  import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
13
12
  import integerPropType from '@mui/utils/integerPropType';
14
13
  import chainPropTypes from '@mui/utils/chainPropTypes';
14
+ import useSlotProps from '@mui/utils/useSlotProps';
15
+ import isHostComponent from '@mui/utils/isHostComponent';
15
16
  import styled from '../styles/styled';
16
17
  import { useDefaultProps } from '../DefaultPropsProvider';
17
18
  import debounce from '../utils/debounce';
@@ -0,0 +1,380 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
+ import * as React from 'react';
6
+ import { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';
7
+ import { createPopper } from '@popperjs/core';
8
+ import PropTypes from 'prop-types';
9
+ import composeClasses from '@mui/utils/composeClasses';
10
+ import useSlotProps from '@mui/utils/useSlotProps';
11
+ import Portal from '../Portal';
12
+ import { getPopperUtilityClass } from './popperClasses';
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ function flipPlacement(placement, direction) {
15
+ if (direction === 'ltr') {
16
+ return placement;
17
+ }
18
+ switch (placement) {
19
+ case 'bottom-end':
20
+ return 'bottom-start';
21
+ case 'bottom-start':
22
+ return 'bottom-end';
23
+ case 'top-end':
24
+ return 'top-start';
25
+ case 'top-start':
26
+ return 'top-end';
27
+ default:
28
+ return placement;
29
+ }
30
+ }
31
+ function resolveAnchorEl(anchorEl) {
32
+ return typeof anchorEl === 'function' ? anchorEl() : anchorEl;
33
+ }
34
+ function isHTMLElement(element) {
35
+ return element.nodeType !== undefined;
36
+ }
37
+ function isVirtualElement(element) {
38
+ return !isHTMLElement(element);
39
+ }
40
+ var useUtilityClasses = function useUtilityClasses(ownerState) {
41
+ var classes = ownerState.classes;
42
+ var slots = {
43
+ root: ['root']
44
+ };
45
+ return composeClasses(slots, getPopperUtilityClass, classes);
46
+ };
47
+ var defaultPopperOptions = {};
48
+ var PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {
49
+ var _slots$root;
50
+ var anchorEl = props.anchorEl,
51
+ children = props.children,
52
+ direction = props.direction,
53
+ disablePortal = props.disablePortal,
54
+ modifiers = props.modifiers,
55
+ open = props.open,
56
+ initialPlacement = props.placement,
57
+ popperOptions = props.popperOptions,
58
+ popperRefProp = props.popperRef,
59
+ _props$slotProps = props.slotProps,
60
+ slotProps = _props$slotProps === void 0 ? {} : _props$slotProps,
61
+ _props$slots = props.slots,
62
+ slots = _props$slots === void 0 ? {} : _props$slots,
63
+ TransitionProps = props.TransitionProps,
64
+ ownerStateProp = props.ownerState,
65
+ other = _objectWithoutProperties(props, ["anchorEl", "children", "direction", "disablePortal", "modifiers", "open", "placement", "popperOptions", "popperRef", "slotProps", "slots", "TransitionProps", "ownerState"]);
66
+ var tooltipRef = React.useRef(null);
67
+ var ownRef = useForkRef(tooltipRef, forwardedRef);
68
+ var popperRef = React.useRef(null);
69
+ var handlePopperRef = useForkRef(popperRef, popperRefProp);
70
+ var handlePopperRefRef = React.useRef(handlePopperRef);
71
+ useEnhancedEffect(function () {
72
+ handlePopperRefRef.current = handlePopperRef;
73
+ }, [handlePopperRef]);
74
+ React.useImperativeHandle(popperRefProp, function () {
75
+ return popperRef.current;
76
+ }, []);
77
+ var rtlPlacement = flipPlacement(initialPlacement, direction);
78
+ /**
79
+ * placement initialized from prop but can change during lifetime if modifiers.flip.
80
+ * modifiers.flip is essentially a flip for controlled/uncontrolled behavior
81
+ */
82
+ var _React$useState = React.useState(rtlPlacement),
83
+ placement = _React$useState[0],
84
+ setPlacement = _React$useState[1];
85
+ var _React$useState2 = React.useState(resolveAnchorEl(anchorEl)),
86
+ resolvedAnchorElement = _React$useState2[0],
87
+ setResolvedAnchorElement = _React$useState2[1];
88
+ React.useEffect(function () {
89
+ if (popperRef.current) {
90
+ popperRef.current.forceUpdate();
91
+ }
92
+ });
93
+ React.useEffect(function () {
94
+ if (anchorEl) {
95
+ setResolvedAnchorElement(resolveAnchorEl(anchorEl));
96
+ }
97
+ }, [anchorEl]);
98
+ useEnhancedEffect(function () {
99
+ if (!resolvedAnchorElement || !open) {
100
+ return undefined;
101
+ }
102
+ var handlePopperUpdate = function handlePopperUpdate(data) {
103
+ setPlacement(data.placement);
104
+ };
105
+ if (process.env.NODE_ENV !== 'production') {
106
+ if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {
107
+ var box = resolvedAnchorElement.getBoundingClientRect();
108
+ if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
109
+ console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
110
+ }
111
+ }
112
+ }
113
+ var popperModifiers = [{
114
+ name: 'preventOverflow',
115
+ options: {
116
+ altBoundary: disablePortal
117
+ }
118
+ }, {
119
+ name: 'flip',
120
+ options: {
121
+ altBoundary: disablePortal
122
+ }
123
+ }, {
124
+ name: 'onUpdate',
125
+ enabled: true,
126
+ phase: 'afterWrite',
127
+ fn: function fn(_ref) {
128
+ var state = _ref.state;
129
+ handlePopperUpdate(state);
130
+ }
131
+ }];
132
+ if (modifiers != null) {
133
+ popperModifiers = popperModifiers.concat(modifiers);
134
+ }
135
+ if (popperOptions && popperOptions.modifiers != null) {
136
+ popperModifiers = popperModifiers.concat(popperOptions.modifiers);
137
+ }
138
+ var popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({
139
+ placement: rtlPlacement
140
+ }, popperOptions, {
141
+ modifiers: popperModifiers
142
+ }));
143
+ handlePopperRefRef.current(popper);
144
+ return function () {
145
+ popper.destroy();
146
+ handlePopperRefRef.current(null);
147
+ };
148
+ }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);
149
+ var childProps = {
150
+ placement: placement
151
+ };
152
+ if (TransitionProps !== null) {
153
+ childProps.TransitionProps = TransitionProps;
154
+ }
155
+ var classes = useUtilityClasses(props);
156
+ var Root = (_slots$root = slots.root) != null ? _slots$root : 'div';
157
+ var rootProps = useSlotProps({
158
+ elementType: Root,
159
+ externalSlotProps: slotProps.root,
160
+ externalForwardedProps: other,
161
+ additionalProps: {
162
+ role: 'tooltip',
163
+ ref: ownRef
164
+ },
165
+ ownerState: props,
166
+ className: classes.root
167
+ });
168
+ return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {
169
+ children: typeof children === 'function' ? children(childProps) : children
170
+ }));
171
+ });
172
+
173
+ /**
174
+ * @ignore - internal component.
175
+ */
176
+ var Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {
177
+ var anchorEl = props.anchorEl,
178
+ children = props.children,
179
+ containerProp = props.container,
180
+ _props$direction = props.direction,
181
+ direction = _props$direction === void 0 ? 'ltr' : _props$direction,
182
+ _props$disablePortal = props.disablePortal,
183
+ disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,
184
+ _props$keepMounted = props.keepMounted,
185
+ keepMounted = _props$keepMounted === void 0 ? false : _props$keepMounted,
186
+ modifiers = props.modifiers,
187
+ open = props.open,
188
+ _props$placement = props.placement,
189
+ placement = _props$placement === void 0 ? 'bottom' : _props$placement,
190
+ _props$popperOptions = props.popperOptions,
191
+ popperOptions = _props$popperOptions === void 0 ? defaultPopperOptions : _props$popperOptions,
192
+ popperRef = props.popperRef,
193
+ style = props.style,
194
+ _props$transition = props.transition,
195
+ transition = _props$transition === void 0 ? false : _props$transition,
196
+ _props$slotProps2 = props.slotProps,
197
+ slotProps = _props$slotProps2 === void 0 ? {} : _props$slotProps2,
198
+ _props$slots2 = props.slots,
199
+ slots = _props$slots2 === void 0 ? {} : _props$slots2,
200
+ other = _objectWithoutProperties(props, ["anchorEl", "children", "container", "direction", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "style", "transition", "slotProps", "slots"]);
201
+ var _React$useState3 = React.useState(true),
202
+ exited = _React$useState3[0],
203
+ setExited = _React$useState3[1];
204
+ var handleEnter = function handleEnter() {
205
+ setExited(false);
206
+ };
207
+ var handleExited = function handleExited() {
208
+ setExited(true);
209
+ };
210
+ if (!keepMounted && !open && (!transition || exited)) {
211
+ return null;
212
+ }
213
+
214
+ // If the container prop is provided, use that
215
+ // If the anchorEl prop is provided, use its parent body element as the container
216
+ // If neither are provided let the Modal take care of choosing the container
217
+ var container;
218
+ if (containerProp) {
219
+ container = containerProp;
220
+ } else if (anchorEl) {
221
+ var resolvedAnchorEl = resolveAnchorEl(anchorEl);
222
+ container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;
223
+ }
224
+ var display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;
225
+ var transitionProps = transition ? {
226
+ in: open,
227
+ onEnter: handleEnter,
228
+ onExited: handleExited
229
+ } : undefined;
230
+ return /*#__PURE__*/_jsx(Portal, {
231
+ disablePortal: disablePortal,
232
+ container: container,
233
+ children: /*#__PURE__*/_jsx(PopperTooltip, _extends({
234
+ anchorEl: anchorEl,
235
+ direction: direction,
236
+ disablePortal: disablePortal,
237
+ modifiers: modifiers,
238
+ ref: forwardedRef,
239
+ open: transition ? !exited : open,
240
+ placement: placement,
241
+ popperOptions: popperOptions,
242
+ popperRef: popperRef,
243
+ slotProps: slotProps,
244
+ slots: slots
245
+ }, other, {
246
+ style: _extends({
247
+ // Prevents scroll issue, waiting for Popper.js to add this style once initiated.
248
+ position: 'fixed',
249
+ // Fix Popper.js display issue
250
+ top: 0,
251
+ left: 0,
252
+ display: display
253
+ }, style),
254
+ TransitionProps: transitionProps,
255
+ children: children
256
+ }))
257
+ });
258
+ });
259
+ process.env.NODE_ENV !== "production" ? Popper.propTypes /* remove-proptypes */ = {
260
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
261
+ // │ These PropTypes are generated from the TypeScript type definitions. │
262
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
263
+ // └─────────────────────────────────────────────────────────────────────┘
264
+ /**
265
+ * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),
266
+ * or a function that returns either.
267
+ * It's used to set the position of the popper.
268
+ * The return value will passed as the reference object of the Popper instance.
269
+ */
270
+ anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), function (props) {
271
+ if (props.open) {
272
+ var resolvedAnchorEl = resolveAnchorEl(props.anchorEl);
273
+ if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {
274
+ var box = resolvedAnchorEl.getBoundingClientRect();
275
+ if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
276
+ return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
277
+ }
278
+ } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {
279
+ return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\n'));
280
+ }
281
+ }
282
+ return null;
283
+ }),
284
+ /**
285
+ * Popper render function or node.
286
+ */
287
+ children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),
288
+ /**
289
+ * An HTML element or function that returns one.
290
+ * The `container` will have the portal children appended to it.
291
+ *
292
+ * You can also provide a callback, which is called in a React layout effect.
293
+ * This lets you set the container from a ref, and also makes server-side rendering possible.
294
+ *
295
+ * By default, it uses the body of the top-level document object,
296
+ * so it's simply `document.body` most of the time.
297
+ */
298
+ container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),
299
+ /**
300
+ * Direction of the text.
301
+ * @default 'ltr'
302
+ */
303
+ direction: PropTypes.oneOf(['ltr', 'rtl']),
304
+ /**
305
+ * The `children` will be under the DOM hierarchy of the parent component.
306
+ * @default false
307
+ */
308
+ disablePortal: PropTypes.bool,
309
+ /**
310
+ * Always keep the children in the DOM.
311
+ * This prop can be useful in SEO situation or
312
+ * when you want to maximize the responsiveness of the Popper.
313
+ * @default false
314
+ */
315
+ keepMounted: PropTypes.bool,
316
+ /**
317
+ * Popper.js is based on a "plugin-like" architecture,
318
+ * most of its features are fully encapsulated "modifiers".
319
+ *
320
+ * A modifier is a function that is called each time Popper.js needs to
321
+ * compute the position of the popper.
322
+ * For this reason, modifiers should be very performant to avoid bottlenecks.
323
+ * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).
324
+ */
325
+ modifiers: PropTypes.arrayOf(PropTypes.shape({
326
+ data: PropTypes.object,
327
+ effect: PropTypes.func,
328
+ enabled: PropTypes.bool,
329
+ fn: PropTypes.func,
330
+ name: PropTypes.any,
331
+ options: PropTypes.object,
332
+ phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),
333
+ requires: PropTypes.arrayOf(PropTypes.string),
334
+ requiresIfExists: PropTypes.arrayOf(PropTypes.string)
335
+ })),
336
+ /**
337
+ * If `true`, the component is shown.
338
+ */
339
+ open: PropTypes.bool.isRequired,
340
+ /**
341
+ * Popper placement.
342
+ * @default 'bottom'
343
+ */
344
+ placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),
345
+ /**
346
+ * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.
347
+ * @default {}
348
+ */
349
+ popperOptions: PropTypes.shape({
350
+ modifiers: PropTypes.array,
351
+ onFirstUpdate: PropTypes.func,
352
+ placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),
353
+ strategy: PropTypes.oneOf(['absolute', 'fixed'])
354
+ }),
355
+ /**
356
+ * A ref that points to the used popper instance.
357
+ */
358
+ popperRef: refType,
359
+ /**
360
+ * The props used for each slot inside the Popper.
361
+ * @default {}
362
+ */
363
+ slotProps: PropTypes.shape({
364
+ root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
365
+ }),
366
+ /**
367
+ * The components used for each slot inside the Popper.
368
+ * Either a string to use a HTML element or a component.
369
+ * @default {}
370
+ */
371
+ slots: PropTypes.shape({
372
+ root: PropTypes.elementType
373
+ }),
374
+ /**
375
+ * Help supporting a react-transition-group/Transition component.
376
+ * @default false
377
+ */
378
+ transition: PropTypes.bool
379
+ } : void 0;
380
+ export default Popper;
@@ -0,0 +1 @@
1
+ export {};