@salt-ds/core 1.0.0
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.
- package/README.md +1 -0
- package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js +31 -0
- package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/dist-cjs/packages/core/src/aria-announcer/AriaAnnounce.js +22 -0
- package/dist-cjs/packages/core/src/aria-announcer/AriaAnnounce.js.map +1 -0
- package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerContext.js +12 -0
- package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerContext.js.map +1 -0
- package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerProvider.js +78 -0
- package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerProvider.js.map +1 -0
- package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js +65 -0
- package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -0
- package/dist-cjs/packages/core/src/border-item/BorderItem.css.js +9 -0
- package/dist-cjs/packages/core/src/border-item/BorderItem.css.js.map +1 -0
- package/dist-cjs/packages/core/src/border-item/BorderItem.js +54 -0
- package/dist-cjs/packages/core/src/border-item/BorderItem.js.map +1 -0
- package/dist-cjs/packages/core/src/border-layout/BorderLayout.js +59 -0
- package/dist-cjs/packages/core/src/border-layout/BorderLayout.js.map +1 -0
- package/dist-cjs/packages/core/src/breakpoints/Breakpoints.js +15 -0
- package/dist-cjs/packages/core/src/breakpoints/Breakpoints.js.map +1 -0
- package/dist-cjs/packages/core/src/button/Button.css.js +9 -0
- package/dist-cjs/packages/core/src/button/Button.css.js.map +1 -0
- package/dist-cjs/packages/core/src/button/Button.js +60 -0
- package/dist-cjs/packages/core/src/button/Button.js.map +1 -0
- package/dist-cjs/packages/core/src/button/useButton.js +65 -0
- package/dist-cjs/packages/core/src/button/useButton.js.map +1 -0
- package/dist-cjs/packages/core/src/flex-item/FlexItem.css.js +9 -0
- package/dist-cjs/packages/core/src/flex-item/FlexItem.css.js.map +1 -0
- package/dist-cjs/packages/core/src/flex-item/FlexItem.js +56 -0
- package/dist-cjs/packages/core/src/flex-item/FlexItem.js.map +1 -0
- package/dist-cjs/packages/core/src/flex-layout/FlexLayout.css.js +9 -0
- package/dist-cjs/packages/core/src/flex-layout/FlexLayout.css.js.map +1 -0
- package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js +77 -0
- package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js.map +1 -0
- package/dist-cjs/packages/core/src/flow-layout/FlowLayout.js +21 -0
- package/dist-cjs/packages/core/src/flow-layout/FlowLayout.js.map +1 -0
- package/dist-cjs/packages/core/src/grid-item/GridItem.css.js +9 -0
- package/dist-cjs/packages/core/src/grid-item/GridItem.css.js.map +1 -0
- package/dist-cjs/packages/core/src/grid-item/GridItem.js +68 -0
- package/dist-cjs/packages/core/src/grid-item/GridItem.js.map +1 -0
- package/dist-cjs/packages/core/src/grid-layout/GridLayout.css.js +9 -0
- package/dist-cjs/packages/core/src/grid-layout/GridLayout.css.js.map +1 -0
- package/dist-cjs/packages/core/src/grid-layout/GridLayout.js +55 -0
- package/dist-cjs/packages/core/src/grid-layout/GridLayout.js.map +1 -0
- package/dist-cjs/packages/core/src/index.js +118 -0
- package/dist-cjs/packages/core/src/index.js.map +1 -0
- package/dist-cjs/packages/core/src/link/Link.css.js +9 -0
- package/dist-cjs/packages/core/src/link/Link.css.js.map +1 -0
- package/dist-cjs/packages/core/src/link/Link.js +60 -0
- package/dist-cjs/packages/core/src/link/Link.js.map +1 -0
- package/dist-cjs/packages/core/src/salt-provider/SaltProvider.css.js +9 -0
- package/dist-cjs/packages/core/src/salt-provider/SaltProvider.css.js.map +1 -0
- package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js +158 -0
- package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js.map +1 -0
- package/dist-cjs/packages/core/src/stack-layout/StackLayout.js +20 -0
- package/dist-cjs/packages/core/src/stack-layout/StackLayout.js.map +1 -0
- package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.css.js +9 -0
- package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.css.js.map +1 -0
- package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js +47 -0
- package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js.map +1 -0
- package/dist-cjs/packages/core/src/status-indicator/ValidationStatus.js +13 -0
- package/dist-cjs/packages/core/src/status-indicator/ValidationStatus.js.map +1 -0
- package/dist-cjs/packages/core/src/text/Display.js +50 -0
- package/dist-cjs/packages/core/src/text/Display.js.map +1 -0
- package/dist-cjs/packages/core/src/text/Headings.js +54 -0
- package/dist-cjs/packages/core/src/text/Headings.js.map +1 -0
- package/dist-cjs/packages/core/src/text/Label.js +19 -0
- package/dist-cjs/packages/core/src/text/Label.js.map +1 -0
- package/dist-cjs/packages/core/src/text/Text.css.js +9 -0
- package/dist-cjs/packages/core/src/text/Text.css.js.map +1 -0
- package/dist-cjs/packages/core/src/text/Text.js +47 -0
- package/dist-cjs/packages/core/src/text/Text.js.map +1 -0
- package/dist-cjs/packages/core/src/theme/Density.js +8 -0
- package/dist-cjs/packages/core/src/theme/Density.js.map +1 -0
- package/dist-cjs/packages/core/src/theme/Mode.js +8 -0
- package/dist-cjs/packages/core/src/theme/Mode.js.map +1 -0
- package/dist-cjs/packages/core/src/theme/Theme.js +19 -0
- package/dist-cjs/packages/core/src/theme/Theme.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/createChainedFunction.js +22 -0
- package/dist-cjs/packages/core/src/utils/createChainedFunction.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/createContext.js +16 -0
- package/dist-cjs/packages/core/src/utils/createContext.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/debounce.js +24 -0
- package/dist-cjs/packages/core/src/utils/debounce.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/makePrefixer.js +8 -0
- package/dist-cjs/packages/core/src/utils/makePrefixer.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/marginMiddleware.js +22 -0
- package/dist-cjs/packages/core/src/utils/marginMiddleware.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/ownerDocument.js +10 -0
- package/dist-cjs/packages/core/src/utils/ownerDocument.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/ownerWindow.js +13 -0
- package/dist-cjs/packages/core/src/utils/ownerWindow.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/setRef.js +14 -0
- package/dist-cjs/packages/core/src/utils/setRef.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useControlled.js +60 -0
- package/dist-cjs/packages/core/src/utils/useControlled.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useForkRef.js +21 -0
- package/dist-cjs/packages/core/src/utils/useForkRef.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useId.js +55 -0
- package/dist-cjs/packages/core/src/utils/useId.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useIsFocusVisible.js +108 -0
- package/dist-cjs/packages/core/src/utils/useIsFocusVisible.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useIsomorphicLayoutEffect.js +10 -0
- package/dist-cjs/packages/core/src/utils/useIsomorphicLayoutEffect.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/usePrevious.js +16 -0
- package/dist-cjs/packages/core/src/utils/usePrevious.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useResponsiveProp.js +71 -0
- package/dist-cjs/packages/core/src/utils/useResponsiveProp.js.map +1 -0
- package/dist-cjs/packages/core/src/viewport/ViewportProvider.js +43 -0
- package/dist-cjs/packages/core/src/viewport/ViewportProvider.js.map +1 -0
- package/dist-es/node_modules/style-inject/dist/style-inject.es.js +29 -0
- package/dist-es/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/dist-es/packages/core/src/aria-announcer/AriaAnnounce.js +18 -0
- package/dist-es/packages/core/src/aria-announcer/AriaAnnounce.js.map +1 -0
- package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerContext.js +8 -0
- package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerContext.js.map +1 -0
- package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerProvider.js +73 -0
- package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerProvider.js.map +1 -0
- package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js +61 -0
- package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -0
- package/dist-es/packages/core/src/border-item/BorderItem.css.js +7 -0
- package/dist-es/packages/core/src/border-item/BorderItem.css.js.map +1 -0
- package/dist-es/packages/core/src/border-item/BorderItem.js +45 -0
- package/dist-es/packages/core/src/border-item/BorderItem.js.map +1 -0
- package/dist-es/packages/core/src/border-layout/BorderLayout.js +51 -0
- package/dist-es/packages/core/src/border-layout/BorderLayout.js.map +1 -0
- package/dist-es/packages/core/src/breakpoints/Breakpoints.js +11 -0
- package/dist-es/packages/core/src/breakpoints/Breakpoints.js.map +1 -0
- package/dist-es/packages/core/src/button/Button.css.js +7 -0
- package/dist-es/packages/core/src/button/Button.css.js.map +1 -0
- package/dist-es/packages/core/src/button/Button.js +51 -0
- package/dist-es/packages/core/src/button/Button.js.map +1 -0
- package/dist-es/packages/core/src/button/useButton.js +61 -0
- package/dist-es/packages/core/src/button/useButton.js.map +1 -0
- package/dist-es/packages/core/src/flex-item/FlexItem.css.js +7 -0
- package/dist-es/packages/core/src/flex-item/FlexItem.css.js.map +1 -0
- package/dist-es/packages/core/src/flex-item/FlexItem.js +47 -0
- package/dist-es/packages/core/src/flex-item/FlexItem.js.map +1 -0
- package/dist-es/packages/core/src/flex-layout/FlexLayout.css.js +7 -0
- package/dist-es/packages/core/src/flex-layout/FlexLayout.css.js.map +1 -0
- package/dist-es/packages/core/src/flex-layout/FlexLayout.js +67 -0
- package/dist-es/packages/core/src/flex-layout/FlexLayout.js.map +1 -0
- package/dist-es/packages/core/src/flow-layout/FlowLayout.js +17 -0
- package/dist-es/packages/core/src/flow-layout/FlowLayout.js.map +1 -0
- package/dist-es/packages/core/src/grid-item/GridItem.css.js +7 -0
- package/dist-es/packages/core/src/grid-item/GridItem.css.js.map +1 -0
- package/dist-es/packages/core/src/grid-item/GridItem.js +59 -0
- package/dist-es/packages/core/src/grid-item/GridItem.js.map +1 -0
- package/dist-es/packages/core/src/grid-layout/GridLayout.css.js +7 -0
- package/dist-es/packages/core/src/grid-layout/GridLayout.css.js.map +1 -0
- package/dist-es/packages/core/src/grid-layout/GridLayout.js +47 -0
- package/dist-es/packages/core/src/grid-layout/GridLayout.js.map +1 -0
- package/dist-es/packages/core/src/index.js +43 -0
- package/dist-es/packages/core/src/index.js.map +1 -0
- package/dist-es/packages/core/src/link/Link.css.js +7 -0
- package/dist-es/packages/core/src/link/Link.css.js.map +1 -0
- package/dist-es/packages/core/src/link/Link.js +52 -0
- package/dist-es/packages/core/src/link/Link.js.map +1 -0
- package/dist-es/packages/core/src/salt-provider/SaltProvider.css.js +7 -0
- package/dist-es/packages/core/src/salt-provider/SaltProvider.css.js.map +1 -0
- package/dist-es/packages/core/src/salt-provider/SaltProvider.js +142 -0
- package/dist-es/packages/core/src/salt-provider/SaltProvider.js.map +1 -0
- package/dist-es/packages/core/src/stack-layout/StackLayout.js +16 -0
- package/dist-es/packages/core/src/stack-layout/StackLayout.js.map +1 -0
- package/dist-es/packages/core/src/status-indicator/StatusIndicator.css.js +7 -0
- package/dist-es/packages/core/src/status-indicator/StatusIndicator.css.js.map +1 -0
- package/dist-es/packages/core/src/status-indicator/StatusIndicator.js +39 -0
- package/dist-es/packages/core/src/status-indicator/StatusIndicator.js.map +1 -0
- package/dist-es/packages/core/src/status-indicator/ValidationStatus.js +9 -0
- package/dist-es/packages/core/src/status-indicator/ValidationStatus.js.map +1 -0
- package/dist-es/packages/core/src/text/Display.js +40 -0
- package/dist-es/packages/core/src/text/Display.js.map +1 -0
- package/dist-es/packages/core/src/text/Headings.js +47 -0
- package/dist-es/packages/core/src/text/Headings.js.map +1 -0
- package/dist-es/packages/core/src/text/Label.js +15 -0
- package/dist-es/packages/core/src/text/Label.js.map +1 -0
- package/dist-es/packages/core/src/text/Text.css.js +7 -0
- package/dist-es/packages/core/src/text/Text.css.js.map +1 -0
- package/dist-es/packages/core/src/text/Text.js +39 -0
- package/dist-es/packages/core/src/text/Text.js.map +1 -0
- package/dist-es/packages/core/src/theme/Density.js +4 -0
- package/dist-es/packages/core/src/theme/Density.js.map +1 -0
- package/dist-es/packages/core/src/theme/Mode.js +4 -0
- package/dist-es/packages/core/src/theme/Mode.js.map +1 -0
- package/dist-es/packages/core/src/theme/Theme.js +15 -0
- package/dist-es/packages/core/src/theme/Theme.js.map +1 -0
- package/dist-es/packages/core/src/utils/createChainedFunction.js +18 -0
- package/dist-es/packages/core/src/utils/createChainedFunction.js.map +1 -0
- package/dist-es/packages/core/src/utils/createContext.js +12 -0
- package/dist-es/packages/core/src/utils/createContext.js.map +1 -0
- package/dist-es/packages/core/src/utils/debounce.js +20 -0
- package/dist-es/packages/core/src/utils/debounce.js.map +1 -0
- package/dist-es/packages/core/src/utils/makePrefixer.js +4 -0
- package/dist-es/packages/core/src/utils/makePrefixer.js.map +1 -0
- package/dist-es/packages/core/src/utils/marginMiddleware.js +18 -0
- package/dist-es/packages/core/src/utils/marginMiddleware.js.map +1 -0
- package/dist-es/packages/core/src/utils/ownerDocument.js +6 -0
- package/dist-es/packages/core/src/utils/ownerDocument.js.map +1 -0
- package/dist-es/packages/core/src/utils/ownerWindow.js +9 -0
- package/dist-es/packages/core/src/utils/ownerWindow.js.map +1 -0
- package/dist-es/packages/core/src/utils/setRef.js +10 -0
- package/dist-es/packages/core/src/utils/setRef.js.map +1 -0
- package/dist-es/packages/core/src/utils/useControlled.js +56 -0
- package/dist-es/packages/core/src/utils/useControlled.js.map +1 -0
- package/dist-es/packages/core/src/utils/useForkRef.js +17 -0
- package/dist-es/packages/core/src/utils/useForkRef.js.map +1 -0
- package/dist-es/packages/core/src/utils/useId.js +30 -0
- package/dist-es/packages/core/src/utils/useId.js.map +1 -0
- package/dist-es/packages/core/src/utils/useIsFocusVisible.js +103 -0
- package/dist-es/packages/core/src/utils/useIsFocusVisible.js.map +1 -0
- package/dist-es/packages/core/src/utils/useIsomorphicLayoutEffect.js +6 -0
- package/dist-es/packages/core/src/utils/useIsomorphicLayoutEffect.js.map +1 -0
- package/dist-es/packages/core/src/utils/usePrevious.js +12 -0
- package/dist-es/packages/core/src/utils/usePrevious.js.map +1 -0
- package/dist-es/packages/core/src/utils/useResponsiveProp.js +64 -0
- package/dist-es/packages/core/src/utils/useResponsiveProp.js.map +1 -0
- package/dist-es/packages/core/src/viewport/ViewportProvider.js +37 -0
- package/dist-es/packages/core/src/viewport/ViewportProvider.js.map +1 -0
- package/dist-types/aria-announcer/AriaAnnounce.d.ts +8 -0
- package/dist-types/aria-announcer/AriaAnnouncerContext.d.ts +6 -0
- package/dist-types/aria-announcer/AriaAnnouncerProvider.d.ts +10 -0
- package/dist-types/aria-announcer/index.d.ts +4 -0
- package/dist-types/aria-announcer/useAriaAnnouncer.d.ts +6 -0
- package/dist-types/border-item/BorderItem.d.ts +27 -0
- package/dist-types/border-item/index.d.ts +1 -0
- package/dist-types/border-layout/BorderLayout.d.ts +25 -0
- package/dist-types/border-layout/index.d.ts +1 -0
- package/dist-types/breakpoints/Breakpoints.d.ts +8 -0
- package/dist-types/breakpoints/index.d.ts +1 -0
- package/dist-types/button/Button.d.ts +20 -0
- package/dist-types/button/index.d.ts +2 -0
- package/dist-types/button/useButton.d.ts +22 -0
- package/dist-types/flex-item/FlexItem.d.ts +23 -0
- package/dist-types/flex-item/index.d.ts +1 -0
- package/dist-types/flex-layout/FlexLayout.d.ts +38 -0
- package/dist-types/flex-layout/index.d.ts +1 -0
- package/dist-types/flow-layout/FlowLayout.d.ts +17 -0
- package/dist-types/flow-layout/index.d.ts +1 -0
- package/dist-types/grid-item/GridItem.d.ts +27 -0
- package/dist-types/grid-item/index.d.ts +1 -0
- package/dist-types/grid-layout/GridLayout.d.ts +28 -0
- package/dist-types/grid-layout/index.d.ts +1 -0
- package/dist-types/index.d.ts +18 -0
- package/dist-types/link/Link.d.ts +14 -0
- package/dist-types/link/index.d.ts +1 -0
- package/dist-types/salt-provider/SaltProvider.d.ts +39 -0
- package/dist-types/salt-provider/index.d.ts +1 -0
- package/dist-types/stack-layout/StackLayout.d.ts +17 -0
- package/dist-types/stack-layout/index.d.ts +1 -0
- package/dist-types/status-indicator/StatusIndicator.d.ts +11 -0
- package/dist-types/status-indicator/ValidationStatus.d.ts +2 -0
- package/dist-types/status-indicator/index.d.ts +2 -0
- package/dist-types/text/Display.d.ts +5 -0
- package/dist-types/text/Headings.d.ts +6 -0
- package/dist-types/text/Label.d.ts +3 -0
- package/dist-types/text/Text.d.ts +20 -0
- package/dist-types/text/index.d.ts +4 -0
- package/dist-types/theme/Density.d.ts +2 -0
- package/dist-types/theme/Mode.d.ts +2 -0
- package/dist-types/theme/Theme.d.ts +3 -0
- package/dist-types/theme/index.d.ts +3 -0
- package/dist-types/utils/createChainedFunction.d.ts +3 -0
- package/dist-types/utils/createContext.d.ts +2 -0
- package/dist-types/utils/debounce.d.ts +4 -0
- package/dist-types/utils/index.d.ts +17 -0
- package/dist-types/utils/inferElementType.d.ts +2 -0
- package/dist-types/utils/makePrefixer.d.ts +2 -0
- package/dist-types/utils/marginMiddleware.d.ts +2 -0
- package/dist-types/utils/ownerDocument.d.ts +1 -0
- package/dist-types/utils/ownerWindow.d.ts +1 -0
- package/dist-types/utils/polymorphicTypes.d.ts +14 -0
- package/dist-types/utils/setRef.d.ts +2 -0
- package/dist-types/utils/useControlled.d.ts +24 -0
- package/dist-types/utils/useForkRef.d.ts +2 -0
- package/dist-types/utils/useId.d.ts +2 -0
- package/dist-types/utils/useIsFocusVisible.d.ts +8 -0
- package/dist-types/utils/useIsomorphicLayoutEffect.d.ts +2 -0
- package/dist-types/utils/usePrevious.d.ts +2 -0
- package/dist-types/utils/useResponsiveProp.d.ts +10 -0
- package/dist-types/viewport/ViewportProvider.d.ts +8 -0
- package/dist-types/viewport/index.d.ts +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function debounce(func, wait = 166, leading = false) {
|
|
6
|
+
let timeout;
|
|
7
|
+
const debounced = function debounced2(...args) {
|
|
8
|
+
const later = () => {
|
|
9
|
+
func.apply(this, args);
|
|
10
|
+
};
|
|
11
|
+
clearTimeout(timeout);
|
|
12
|
+
if (leading) {
|
|
13
|
+
later();
|
|
14
|
+
}
|
|
15
|
+
timeout = window.setTimeout(later, wait);
|
|
16
|
+
};
|
|
17
|
+
debounced.clear = () => {
|
|
18
|
+
clearTimeout(timeout);
|
|
19
|
+
};
|
|
20
|
+
return debounced;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.debounce = debounce;
|
|
24
|
+
//# sourceMappingURL=debounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.js","sources":["../src/utils/debounce.ts"],"sourcesContent":["export interface Cancelable {\n clear(): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n // Corresponds to 10 frames at 60 Hz.\n wait = 166,\n leading = false\n): T & Cancelable {\n let timeout: number;\n const debounced: T & Cancelable = function debounced(\n this: typeof debounced,\n ...args\n ) {\n const later = () => {\n func.apply(this, args);\n };\n clearTimeout(timeout);\n if (leading) {\n later();\n }\n timeout = window.setTimeout(later, wait);\n } as T & Cancelable;\n\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n\n return debounced;\n}\n"],"names":["debounced"],"mappings":";;;;AAKO,SAAS,QACd,CAAA,IAAA,EAEA,IAAO,GAAA,GAAA,EACP,UAAU,KACM,EAAA;AAChB,EAAI,IAAA,OAAA,CAAA;AACJ,EAAM,MAAA,SAAA,GAA4B,SAASA,UAAAA,CAAAA,GAEtC,IACH,EAAA;AACA,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAK,IAAA,CAAA,KAAA,CAAM,MAAM,IAAI,CAAA,CAAA;AAAA,KACvB,CAAA;AACA,IAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AACpB,IAAA,IAAI,OAAS,EAAA;AACX,MAAM,KAAA,EAAA,CAAA;AAAA,KACR;AACA,IAAU,OAAA,GAAA,MAAA,CAAO,UAAW,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAAA,GACzC,CAAA;AAEA,EAAA,SAAA,CAAU,QAAQ,MAAM;AACtB,IAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makePrefixer.js","sources":["../src/utils/makePrefixer.ts"],"sourcesContent":["export type ClassNamePrefixer = (...names: string[]) => string;\nexport const makePrefixer =\n (prefix: string): ClassNamePrefixer =>\n (...names: string[]): string =>\n [prefix, ...names].join(\"-\");\n"],"names":[],"mappings":";;;;AACa,MAAA,YAAA,GACX,CAAC,MAAA,KACD,CAAI,GAAA,KAAA,KACF,CAAC,MAAA,EAAQ,GAAG,KAAK,CAAE,CAAA,IAAA,CAAK,GAAG;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const margin = (value = 0) => ({
|
|
6
|
+
name: "margin",
|
|
7
|
+
options: value,
|
|
8
|
+
fn(middlewareArguments) {
|
|
9
|
+
const { x, y, elements } = middlewareArguments;
|
|
10
|
+
if (elements.floating.children.length > 0) {
|
|
11
|
+
const rootChildElement = elements.floating.children[0];
|
|
12
|
+
rootChildElement.style.setProperty("margin", value.toString());
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
x,
|
|
16
|
+
y
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
exports.margin = margin;
|
|
22
|
+
//# sourceMappingURL=marginMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marginMiddleware.js","sources":["../src/utils/marginMiddleware.ts"],"sourcesContent":["import { Middleware } from \"@floating-ui/core\";\nimport { MiddlewareArguments } from \"@floating-ui/react-dom-interactions\";\n\nexport const margin = (value = 0): Middleware => ({\n name: \"margin\",\n options: value,\n fn(middlewareArguments: MiddlewareArguments) {\n const { x, y, elements } = middlewareArguments;\n\n if (elements.floating.children.length > 0) {\n const rootChildElement = elements.floating.children[0] as HTMLElement;\n rootChildElement.style.setProperty(\"margin\", value.toString());\n }\n return {\n x: x,\n y: y,\n };\n },\n});\n"],"names":[],"mappings":";;;;AAGa,MAAA,MAAA,GAAS,CAAC,KAAA,GAAQ,CAAmB,MAAA;AAAA,EAChD,IAAM,EAAA,QAAA;AAAA,EACN,OAAS,EAAA,KAAA;AAAA,EACT,GAAG,mBAA0C,EAAA;AAC3C,IAAA,MAAM,EAAE,CAAA,EAAG,CAAG,EAAA,QAAA,EAAa,GAAA,mBAAA,CAAA;AAE3B,IAAA,IAAI,QAAS,CAAA,QAAA,CAAS,QAAS,CAAA,MAAA,GAAS,CAAG,EAAA;AACzC,MAAM,MAAA,gBAAA,GAAmB,QAAS,CAAA,QAAA,CAAS,QAAS,CAAA,CAAA,CAAA,CAAA;AACpD,MAAA,gBAAA,CAAiB,KAAM,CAAA,WAAA,CAAY,QAAU,EAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,KAC/D;AACA,IAAO,OAAA;AAAA,MACL,CAAA;AAAA,MACA,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function ownerDocument(node) {
|
|
6
|
+
return (node == null ? void 0 : node.ownerDocument) || document;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
exports.ownerDocument = ownerDocument;
|
|
10
|
+
//# sourceMappingURL=ownerDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownerDocument.js","sources":["../src/utils/ownerDocument.ts"],"sourcesContent":["export function ownerDocument(node: Node | null | undefined): Document {\n return node?.ownerDocument || document;\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,cAAc,IAAyC,EAAA;AACrE,EAAA,OAAA,CAAO,6BAAM,aAAiB,KAAA,QAAA,CAAA;AAChC;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var ownerDocument = require('./ownerDocument.js');
|
|
6
|
+
|
|
7
|
+
function ownerWindow(node) {
|
|
8
|
+
const doc = ownerDocument.ownerDocument(node);
|
|
9
|
+
return doc.defaultView || window;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.ownerWindow = ownerWindow;
|
|
13
|
+
//# sourceMappingURL=ownerWindow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownerWindow.js","sources":["../src/utils/ownerWindow.ts"],"sourcesContent":["import { ownerDocument } from \"./ownerDocument\";\n\nexport function ownerWindow(node: Node | null | undefined): Window {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}\n"],"names":["ownerDocument"],"mappings":";;;;;;AAEO,SAAS,YAAY,IAAuC,EAAA;AACjE,EAAM,MAAA,GAAA,GAAMA,4BAAc,IAAI,CAAA,CAAA;AAC9B,EAAA,OAAO,IAAI,WAAe,IAAA,MAAA,CAAA;AAC5B;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function setRef(ref, value) {
|
|
6
|
+
if (typeof ref === "function") {
|
|
7
|
+
ref(value);
|
|
8
|
+
} else if (ref) {
|
|
9
|
+
ref.current = value;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
exports.setRef = setRef;
|
|
14
|
+
//# sourceMappingURL=setRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setRef.js","sources":["../src/utils/setRef.ts"],"sourcesContent":["import { MutableRefObject } from \"react\";\n\nexport function setRef<T>(\n ref:\n | MutableRefObject<T | null>\n | ((instance: T | null) => void)\n | null\n | undefined,\n value: T | null\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,SAAA,MAAA,CACd,KAKA,KACM,EAAA;AACN,EAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,aACA,GAAK,EAAA;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,KAAA,CAAA;AAAA,GAChB;AACF;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
function useControlled({
|
|
8
|
+
controlled,
|
|
9
|
+
default: defaultProp,
|
|
10
|
+
name,
|
|
11
|
+
state = "value"
|
|
12
|
+
}) {
|
|
13
|
+
const { current: isControlled } = React.useRef(controlled !== void 0);
|
|
14
|
+
const [valueState, setValue] = React.useState(defaultProp);
|
|
15
|
+
const value = controlled !== void 0 ? controlled : valueState;
|
|
16
|
+
const { current: defaultValue } = React.useRef(defaultProp);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
if (process.env.NODE_ENV !== "production") {
|
|
19
|
+
if (isControlled !== (controlled !== void 0)) {
|
|
20
|
+
console.error(
|
|
21
|
+
[
|
|
22
|
+
`Salt: A component is changing the ${isControlled ? "" : "un"}controlled ${state} state of ${name} to be ${isControlled ? "un" : ""}controlled.`,
|
|
23
|
+
"Elements should not switch from uncontrolled to controlled (or vice versa).",
|
|
24
|
+
`Decide between using a controlled or uncontrolled ${name} element for the lifetime of the component.`,
|
|
25
|
+
"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.",
|
|
26
|
+
"More info: https://fb.me/react-controlled-components"
|
|
27
|
+
].join("\n")
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return void 0;
|
|
32
|
+
}, [state, name, controlled]);
|
|
33
|
+
React.useEffect(() => {
|
|
34
|
+
if (process.env.NODE_ENV !== "production") {
|
|
35
|
+
if (!isControlled && defaultValue !== defaultProp) {
|
|
36
|
+
console.error(
|
|
37
|
+
[
|
|
38
|
+
`Salt: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. To suppress this warning opt to use a controlled ${name}.`
|
|
39
|
+
].join("\n")
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return void 0;
|
|
44
|
+
}, [JSON.stringify(defaultProp, ignoreReactElements)]);
|
|
45
|
+
const setValueIfUncontrolled = React.useCallback(
|
|
46
|
+
(newValue) => {
|
|
47
|
+
if (!isControlled) {
|
|
48
|
+
setValue(newValue);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
[isControlled]
|
|
52
|
+
);
|
|
53
|
+
return [value, setValueIfUncontrolled, isControlled];
|
|
54
|
+
}
|
|
55
|
+
function ignoreReactElements(key, value) {
|
|
56
|
+
return React.isValidElement(value) ? null : value;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
exports.useControlled = useControlled;
|
|
60
|
+
//# sourceMappingURL=useControlled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControlled.js","sources":["../src/utils/useControlled.ts"],"sourcesContent":["import {\n Dispatch,\n isValidElement,\n SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nexport interface UseControlledProps<T> {\n /**\n * Holds the component value when it's controlled.\n */\n controlled?: T;\n /**\n * The default value when uncontrolled.\n */\n default: T;\n /**\n * The component name displayed in warnings.\n */\n name: string;\n /**\n * The name of the state variable displayed in warnings.\n */\n state?: string;\n}\n\n/**\n * Copied from MUI (v5) useControlled hook with one additional returned value\n * @see https://github.com/mui-org/material-ui/blob/0979e6a54ba47c278d1f535953c0520a86349811/packages/material-ui-utils/src/useControlled.js\n */\nexport function useControlled<S>({\n controlled,\n default: defaultProp,\n name,\n state = \"value\",\n}: UseControlledProps<S>): [S, Dispatch<SetStateAction<S>>, boolean] {\n const { current: isControlled } = useRef(controlled !== undefined);\n const [valueState, setValue] = useState<S>(defaultProp);\n const value = controlled !== undefined ? controlled : valueState;\n const { current: defaultValue } = useRef(defaultProp);\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (isControlled !== (controlled !== undefined)) {\n console.error(\n [\n `Salt: A component is changing the ${\n isControlled ? \"\" : \"un\"\n }controlled ${state} state of ${name} to be ${\n isControlled ? \"un\" : \"\"\n }controlled.`,\n \"Elements should not switch from uncontrolled to controlled (or vice versa).\",\n `Decide between using a controlled or uncontrolled ${name} ` +\n \"element for the lifetime of the component.\",\n \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\",\n \"More info: https://fb.me/react-controlled-components\",\n ].join(\"\\n\")\n );\n }\n }\n return undefined;\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [state, name, controlled]);\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error(\n [\n `Salt: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` +\n `To suppress this warning opt to use a controlled ${name}.`,\n ].join(\"\\n\")\n );\n }\n }\n return undefined;\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [JSON.stringify(defaultProp, ignoreReactElements)]);\n\n const setValueIfUncontrolled: Dispatch<SetStateAction<S>> = useCallback(\n (newValue) => {\n if (!isControlled) {\n setValue(newValue);\n }\n },\n [isControlled]\n );\n\n return [value, setValueIfUncontrolled, isControlled];\n}\n\n// Ignore ReactElements in JSON, they contain circular refs\nfunction ignoreReactElements<T>(key: string, value: T): T | null {\n return isValidElement(value) ? null : value;\n}\n"],"names":["useRef","useState","useEffect","useCallback","isValidElement"],"mappings":";;;;;;AAiCO,SAAS,aAAiB,CAAA;AAAA,EAC/B,UAAA;AAAA,EACA,OAAS,EAAA,WAAA;AAAA,EACT,IAAA;AAAA,EACA,KAAQ,GAAA,OAAA;AACV,CAAqE,EAAA;AACnE,EAAA,MAAM,EAAE,OAAS,EAAA,YAAA,EAAiB,GAAAA,YAAA,CAAO,eAAe,KAAS,CAAA,CAAA,CAAA;AACjE,EAAA,MAAM,CAAC,UAAA,EAAY,QAAQ,CAAA,GAAIC,eAAY,WAAW,CAAA,CAAA;AACtD,EAAM,MAAA,KAAA,GAAQ,UAAe,KAAA,KAAA,CAAA,GAAY,UAAa,GAAA,UAAA,CAAA;AACtD,EAAA,MAAM,EAAE,OAAA,EAAS,YAAa,EAAA,GAAID,aAAO,WAAW,CAAA,CAAA;AAEpD,EAAAE,eAAA,CAAU,MAAM;AACd,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,MAAI,IAAA,YAAA,MAAkB,eAAe,KAAY,CAAA,CAAA,EAAA;AAC/C,QAAQ,OAAA,CAAA,KAAA;AAAA,UACN;AAAA,YACE,qCACE,YAAe,GAAA,EAAA,GAAK,kBACR,KAAkB,CAAA,UAAA,EAAA,IAAA,CAAA,OAAA,EAC9B,eAAe,IAAO,GAAA,EAAA,CAAA,WAAA,CAAA;AAAA,YAExB,6EAAA;AAAA,YACA,CAAqD,kDAAA,EAAA,IAAA,CAAA,2CAAA,CAAA;AAAA,YAErD,4HAAA;AAAA,YACA,sDAAA;AAAA,WACF,CAAE,KAAK,IAAI,CAAA;AAAA,SACb,CAAA;AAAA,OACF;AAAA,KACF;AACA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GAEN,EAAA,CAAC,KAAO,EAAA,IAAA,EAAM,UAAU,CAAC,CAAA,CAAA;AAE5B,EAAAA,eAAA,CAAU,MAAM;AACd,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,MAAI,IAAA,CAAC,YAAgB,IAAA,YAAA,KAAiB,WAAa,EAAA;AACjD,QAAQ,OAAA,CAAA,KAAA;AAAA,UACN;AAAA,YACE,CAAA,0CAAA,EAA6C,kCAAkC,IACzB,CAAA,2EAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AAAA,WACxD,CAAE,KAAK,IAAI,CAAA;AAAA,SACb,CAAA;AAAA,OACF;AAAA,KACF;AACA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KAEN,CAAC,IAAA,CAAK,UAAU,WAAa,EAAA,mBAAmB,CAAC,CAAC,CAAA,CAAA;AAErD,EAAA,MAAM,sBAAsD,GAAAC,iBAAA;AAAA,IAC1D,CAAC,QAAa,KAAA;AACZ,MAAA,IAAI,CAAC,YAAc,EAAA;AACjB,QAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AAAA,OACnB;AAAA,KACF;AAAA,IACA,CAAC,YAAY,CAAA;AAAA,GACf,CAAA;AAEA,EAAO,OAAA,CAAC,KAAO,EAAA,sBAAA,EAAwB,YAAY,CAAA,CAAA;AACrD,CAAA;AAGA,SAAS,mBAAA,CAAuB,KAAa,KAAoB,EAAA;AAC/D,EAAO,OAAAC,oBAAA,CAAe,KAAK,CAAA,GAAI,IAAO,GAAA,KAAA,CAAA;AACxC;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var setRef = require('./setRef.js');
|
|
7
|
+
|
|
8
|
+
function useForkRef(refA, refB) {
|
|
9
|
+
return React.useMemo(() => {
|
|
10
|
+
if (refA == null && refB == null) {
|
|
11
|
+
return () => null;
|
|
12
|
+
}
|
|
13
|
+
return (refValue) => {
|
|
14
|
+
setRef.setRef(refA, refValue);
|
|
15
|
+
setRef.setRef(refB, refValue);
|
|
16
|
+
};
|
|
17
|
+
}, [refA, refB]);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.useForkRef = useForkRef;
|
|
21
|
+
//# sourceMappingURL=useForkRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useForkRef.js","sources":["../src/utils/useForkRef.ts"],"sourcesContent":["import { Ref, useMemo } from \"react\";\nimport { setRef } from \"./setRef\";\n\nexport function useForkRef<Instance>(\n refA: Ref<Instance> | null | undefined,\n refB: Ref<Instance> | null | undefined\n): Ref<Instance> | null {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means React will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return useMemo(() => {\n if (refA == null && refB == null) {\n return () => null;\n }\n return (refValue) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n"],"names":["useMemo","setRef"],"mappings":";;;;;;;AAGgB,SAAA,UAAA,CACd,MACA,IACsB,EAAA;AAMtB,EAAA,OAAOA,cAAQ,MAAM;AACnB,IAAI,IAAA,IAAA,IAAQ,IAAQ,IAAA,IAAA,IAAQ,IAAM,EAAA;AAChC,MAAA,OAAO,MAAM,IAAA,CAAA;AAAA,KACf;AACA,IAAA,OAAO,CAAC,QAAa,KAAA;AACnB,MAAAC,aAAA,CAAO,MAAM,QAAQ,CAAA,CAAA;AACrB,MAAAA,aAAA,CAAO,MAAM,QAAQ,CAAA,CAAA;AAAA,KACvB,CAAA;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,IAAI,CAAC,CAAA,CAAA;AACjB;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
n["default"] = e;
|
|
22
|
+
return n;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
26
|
+
|
|
27
|
+
const maybeReactUseId = React__namespace[`${"useId"}${""}`];
|
|
28
|
+
let globalId = BigInt(0);
|
|
29
|
+
function useIdLegacy(idOverride) {
|
|
30
|
+
const [defaultId, setDefaultId] = React__namespace.useState(idOverride);
|
|
31
|
+
const id = idOverride || defaultId;
|
|
32
|
+
React__namespace.useEffect(() => {
|
|
33
|
+
if (defaultId == null) {
|
|
34
|
+
setDefaultId(`salt-${++globalId}`);
|
|
35
|
+
}
|
|
36
|
+
}, [defaultId]);
|
|
37
|
+
return id;
|
|
38
|
+
}
|
|
39
|
+
function useId(idOverride) {
|
|
40
|
+
if (maybeReactUseId !== void 0) {
|
|
41
|
+
const reactId = maybeReactUseId();
|
|
42
|
+
return idOverride != null ? idOverride : reactId;
|
|
43
|
+
}
|
|
44
|
+
return useIdLegacy(idOverride);
|
|
45
|
+
}
|
|
46
|
+
function useIdMemo(idOverride) {
|
|
47
|
+
const id = React__namespace.useMemo(() => {
|
|
48
|
+
return idOverride != null ? idOverride : `salt-${++globalId}`;
|
|
49
|
+
}, [idOverride]);
|
|
50
|
+
return id;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
exports.useId = useId;
|
|
54
|
+
exports.useIdMemo = useIdMemo;
|
|
55
|
+
//# sourceMappingURL=useId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useId.js","sources":["../src/utils/useId.ts"],"sourcesContent":["import * as React from \"react\";\n\n// eslint-disable-next-line -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId: undefined | (() => string) = (React as any)[\n `${\"useId\"}${\"\"}`\n];\n\nlet globalId = BigInt(0);\nfunction useIdLegacy(idOverride?: string): string | undefined {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n setDefaultId(`salt-${++globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\nexport function useId(idOverride?: string): string | undefined {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useIdLegacy(idOverride);\n}\n\n// Note: Some usages require that an id is returned on first call, not only post-first-render\n// (as with the useEffect solution). This can go away once we totally move to React 18\nexport function useIdMemo(idOverride?: string): string {\n const id = React.useMemo(() => {\n return idOverride ?? `salt-${++globalId}`;\n }, [idOverride]);\n return id;\n}\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,eAAA,GAA+CA,gBACnD,CAAA,CAAA,EAAG,OAAU,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAGf,IAAI,QAAA,GAAW,OAAO,CAAC,CAAA,CAAA;AACvB,SAAS,YAAY,UAAyC,EAAA;AAC5D,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAAA,gBAAA,CAAM,SAAS,UAAU,CAAA,CAAA;AAC3D,EAAA,MAAM,KAAK,UAAc,IAAA,SAAA,CAAA;AACzB,EAAAA,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,aAAa,IAAM,EAAA;AACrB,MAAa,YAAA,CAAA,CAAA,KAAA,EAAQ,EAAE,QAAU,CAAA,CAAA,CAAA,CAAA;AAAA,KACnC;AAAA,GACF,EAAG,CAAC,SAAS,CAAC,CAAA,CAAA;AACd,EAAO,OAAA,EAAA,CAAA;AACT,CAAA;AAEO,SAAS,MAAM,UAAyC,EAAA;AAC7D,EAAA,IAAI,oBAAoB,KAAW,CAAA,EAAA;AACjC,IAAA,MAAM,UAAU,eAAgB,EAAA,CAAA;AAChC,IAAA,OAAO,UAAc,IAAA,IAAA,GAAA,UAAA,GAAA,OAAA,CAAA;AAAA,GACvB;AAEA,EAAA,OAAO,YAAY,UAAU,CAAA,CAAA;AAC/B,CAAA;AAIO,SAAS,UAAU,UAA6B,EAAA;AACrD,EAAM,MAAA,EAAA,GAAKA,gBAAM,CAAA,OAAA,CAAQ,MAAM;AAC7B,IAAO,OAAA,UAAA,IAAA,IAAA,GAAA,UAAA,GAAc,QAAQ,EAAE,QAAA,CAAA,CAAA,CAAA;AAAA,GACjC,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AACf,EAAO,OAAA,EAAA,CAAA;AACT;;;;;"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
let hadKeyboardEvent = true;
|
|
8
|
+
let hadFocusVisibleRecently = false;
|
|
9
|
+
let hadFocusVisibleRecentlyTimeout;
|
|
10
|
+
const inputTypesWhitelist = {
|
|
11
|
+
text: true,
|
|
12
|
+
search: true,
|
|
13
|
+
url: true,
|
|
14
|
+
tel: true,
|
|
15
|
+
email: true,
|
|
16
|
+
password: true,
|
|
17
|
+
number: true,
|
|
18
|
+
date: true,
|
|
19
|
+
month: true,
|
|
20
|
+
week: true,
|
|
21
|
+
time: true,
|
|
22
|
+
datetime: true,
|
|
23
|
+
"datetime-local": true
|
|
24
|
+
};
|
|
25
|
+
function focusTriggersKeyboardModality(node) {
|
|
26
|
+
if (node.tagName === "INPUT" && inputTypesWhitelist[node.type] && !node.readOnly) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (node.tagName === "TEXTAREA" && !node.readOnly) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return node.isContentEditable;
|
|
33
|
+
}
|
|
34
|
+
function handleKeyDown(event) {
|
|
35
|
+
if (event.metaKey || event.altKey || event.ctrlKey) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
hadKeyboardEvent = true;
|
|
39
|
+
}
|
|
40
|
+
function handlePointerDown() {
|
|
41
|
+
hadKeyboardEvent = false;
|
|
42
|
+
}
|
|
43
|
+
function handleVisibilityChange() {
|
|
44
|
+
if (this.visibilityState === "hidden") {
|
|
45
|
+
if (hadFocusVisibleRecently) {
|
|
46
|
+
hadKeyboardEvent = true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function prepare(doc) {
|
|
51
|
+
doc.addEventListener("keydown", handleKeyDown, true);
|
|
52
|
+
doc.addEventListener("mousedown", handlePointerDown, true);
|
|
53
|
+
doc.addEventListener("pointerdown", handlePointerDown, true);
|
|
54
|
+
doc.addEventListener("touchstart", handlePointerDown, true);
|
|
55
|
+
doc.addEventListener("visibilitychange", handleVisibilityChange, true);
|
|
56
|
+
}
|
|
57
|
+
function teardown(doc) {
|
|
58
|
+
doc.removeEventListener("keydown", handleKeyDown, true);
|
|
59
|
+
doc.removeEventListener("mousedown", handlePointerDown, true);
|
|
60
|
+
doc.removeEventListener("pointerdown", handlePointerDown, true);
|
|
61
|
+
doc.removeEventListener("touchstart", handlePointerDown, true);
|
|
62
|
+
doc.removeEventListener("visibilitychange", handleVisibilityChange, true);
|
|
63
|
+
}
|
|
64
|
+
function isFocusVisible(event) {
|
|
65
|
+
const { target } = event;
|
|
66
|
+
try {
|
|
67
|
+
return target.matches(":focus-visible");
|
|
68
|
+
} catch (error) {
|
|
69
|
+
}
|
|
70
|
+
return hadKeyboardEvent || focusTriggersKeyboardModality(target);
|
|
71
|
+
}
|
|
72
|
+
function useIsFocusVisible() {
|
|
73
|
+
const ref = React.useCallback((node) => {
|
|
74
|
+
if (node != null) {
|
|
75
|
+
prepare(node.ownerDocument);
|
|
76
|
+
}
|
|
77
|
+
}, []);
|
|
78
|
+
const isFocusVisibleRef = React.useRef(false);
|
|
79
|
+
function handleBlurVisible() {
|
|
80
|
+
if (isFocusVisibleRef.current) {
|
|
81
|
+
hadFocusVisibleRecently = true;
|
|
82
|
+
window.clearTimeout(hadFocusVisibleRecentlyTimeout);
|
|
83
|
+
hadFocusVisibleRecentlyTimeout = window.setTimeout(() => {
|
|
84
|
+
hadFocusVisibleRecently = false;
|
|
85
|
+
}, 100);
|
|
86
|
+
isFocusVisibleRef.current = false;
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
function handleFocusVisible(event) {
|
|
92
|
+
if (isFocusVisible(event)) {
|
|
93
|
+
isFocusVisibleRef.current = true;
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
isFocusVisibleRef,
|
|
100
|
+
onFocus: handleFocusVisible,
|
|
101
|
+
onBlur: handleBlurVisible,
|
|
102
|
+
ref
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
exports.teardown = teardown;
|
|
107
|
+
exports.useIsFocusVisible = useIsFocusVisible;
|
|
108
|
+
//# sourceMappingURL=useIsFocusVisible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsFocusVisible.js","sources":["../src/utils/useIsFocusVisible.ts"],"sourcesContent":["// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport { useCallback, useRef, FocusEvent, MutableRefObject, Ref } from \"react\";\n\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nlet hadFocusVisibleRecentlyTimeout: number;\n\nconst inputTypesWhitelist: Record<string, boolean> = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n \"datetime-local\": true,\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node: HTMLElement) {\n if (\n node.tagName === \"INPUT\" &&\n inputTypesWhitelist[(node as HTMLInputElement).type] &&\n !(node as HTMLInputElement).readOnly\n ) {\n return true;\n }\n\n if (node.tagName === \"TEXTAREA\" && !(node as HTMLInputElement).readOnly) {\n return true;\n }\n\n return node.isContentEditable;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event: KeyboardEvent) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange(this: Document) {\n if (this.visibilityState === \"hidden\") {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc: Document) {\n doc.addEventListener(\"keydown\", handleKeyDown, true);\n doc.addEventListener(\"mousedown\", handlePointerDown, true);\n doc.addEventListener(\"pointerdown\", handlePointerDown, true);\n doc.addEventListener(\"touchstart\", handlePointerDown, true);\n doc.addEventListener(\"visibilitychange\", handleVisibilityChange, true);\n}\n\nexport function teardown(doc: Document): void {\n doc.removeEventListener(\"keydown\", handleKeyDown, true);\n doc.removeEventListener(\"mousedown\", handlePointerDown, true);\n doc.removeEventListener(\"pointerdown\", handlePointerDown, true);\n doc.removeEventListener(\"touchstart\", handlePointerDown, true);\n doc.removeEventListener(\"visibilitychange\", handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event: FocusEvent<HTMLElement>) {\n const { target } = event;\n try {\n return target.matches(\":focus-visible\");\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focused events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n\nexport function useIsFocusVisible<T extends HTMLElement = HTMLElement>(): {\n isFocusVisibleRef: MutableRefObject<boolean>;\n onBlur: () => void;\n onFocus: (event: FocusEvent<T>) => void;\n ref: Ref<T>;\n} {\n const ref = useCallback((node: T | null) => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n const isFocusVisibleRef = useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(() => {\n hadFocusVisibleRecently = false;\n }, 100);\n\n isFocusVisibleRef.current = false;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event: FocusEvent<HTMLElement>) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref,\n };\n}\n"],"names":["useCallback","useRef"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
const useIsomorphicLayoutEffect = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined" ? React.useLayoutEffect : React.useEffect;
|
|
8
|
+
|
|
9
|
+
exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
|
|
10
|
+
//# sourceMappingURL=useIsomorphicLayoutEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsomorphicLayoutEffect.js","sources":["../src/utils/useIsomorphicLayoutEffect.ts"],"sourcesContent":["import { useLayoutEffect, useEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect because we want\n// `connect` to perform sync updates to a ref to save the latest props after\n// a render is actually committed to the DOM.\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n ? useLayoutEffect\n : useEffect;\n"],"names":["useLayoutEffect","useEffect"],"mappings":";;;;;;AAOO,MAAM,yBACX,GAAA,OAAO,MAAW,KAAA,WAAA,IAClB,OAAO,MAAA,CAAO,QAAa,KAAA,WAAA,IAC3B,OAAO,MAAA,CAAO,QAAS,CAAA,aAAA,KAAkB,cACrCA,qBACA,GAAAC;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
function usePrevious(value, deps = [], initialValue) {
|
|
8
|
+
const ref = React.useRef(initialValue);
|
|
9
|
+
React.useEffect(() => {
|
|
10
|
+
ref.current = value;
|
|
11
|
+
}, deps);
|
|
12
|
+
return ref.current;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
exports.usePrevious = usePrevious;
|
|
16
|
+
//# sourceMappingURL=usePrevious.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePrevious.js","sources":["../src/utils/usePrevious.ts"],"sourcesContent":["import { useRef, useEffect, DependencyList } from \"react\";\n\nexport function usePrevious<T>(\n value: T,\n deps: DependencyList = [],\n initialValue?: T\n): T | undefined {\n const ref = useRef<T | undefined>(initialValue);\n\n useEffect(() => {\n ref.current = value;\n }, deps); // eslint-disable-line react-hooks/exhaustive-deps\n return ref.current;\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;;;AAEO,SAAS,WACd,CAAA,KAAA,EACA,IAAuB,GAAA,IACvB,YACe,EAAA;AACf,EAAM,MAAA,GAAA,GAAMA,aAAsB,YAAY,CAAA,CAAA;AAE9C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,KAAA,CAAA;AAAA,KACb,IAAI,CAAA,CAAA;AACP,EAAA,OAAO,GAAI,CAAA,OAAA,CAAA;AACb;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var SaltProvider = require('../salt-provider/SaltProvider.js');
|
|
6
|
+
var ViewportProvider = require('../viewport/ViewportProvider.js');
|
|
7
|
+
|
|
8
|
+
const getCurrentBreakpoint = (breakpoints, width) => {
|
|
9
|
+
const breakpointList = Object.entries(breakpoints);
|
|
10
|
+
const [currentBreakpoint] = breakpointList.reduce((acc, val) => {
|
|
11
|
+
const [, accWidth] = acc;
|
|
12
|
+
const [breakpoint, breakpointWidth] = val;
|
|
13
|
+
if (breakpointWidth < width && breakpointWidth > accWidth) {
|
|
14
|
+
return [breakpoint, breakpointWidth];
|
|
15
|
+
}
|
|
16
|
+
return [...acc];
|
|
17
|
+
}, breakpointList[0]);
|
|
18
|
+
return currentBreakpoint;
|
|
19
|
+
};
|
|
20
|
+
const useCurrentBreakpoint = () => {
|
|
21
|
+
const viewport = ViewportProvider.useViewport();
|
|
22
|
+
const breakpoints = SaltProvider.useBreakpoints();
|
|
23
|
+
return getCurrentBreakpoint(breakpoints, viewport);
|
|
24
|
+
};
|
|
25
|
+
const useOrderedBreakpoints = () => {
|
|
26
|
+
const breakpoints = SaltProvider.useBreakpoints();
|
|
27
|
+
const orderedBreakpoints = Object.entries(breakpoints).sort(([, a], [, b]) => a - b).map(([key]) => key);
|
|
28
|
+
return orderedBreakpoints;
|
|
29
|
+
};
|
|
30
|
+
const isObject = (value) => {
|
|
31
|
+
const type = typeof value;
|
|
32
|
+
return value !== null && (type === "object" || type === "function");
|
|
33
|
+
};
|
|
34
|
+
const hasBreakpointValues = (value, breakpoints) => {
|
|
35
|
+
return isObject(value) && Object.keys(value).every((key) => key in breakpoints);
|
|
36
|
+
};
|
|
37
|
+
const getResponsiveValue = (breakpointValues, breakpoints, viewport, defaultValue) => {
|
|
38
|
+
const value = Object.entries(breakpointValues).reduce(
|
|
39
|
+
(acc, val) => {
|
|
40
|
+
const [accWidth] = acc;
|
|
41
|
+
const [breakpoint, breakpointValue] = val;
|
|
42
|
+
const breakpointWidth = breakpoints[breakpoint];
|
|
43
|
+
if (breakpointWidth >= accWidth && breakpointWidth <= breakpoints[viewport]) {
|
|
44
|
+
return [breakpointWidth, breakpointValue];
|
|
45
|
+
}
|
|
46
|
+
return acc;
|
|
47
|
+
},
|
|
48
|
+
[0, defaultValue]
|
|
49
|
+
)[1];
|
|
50
|
+
return value;
|
|
51
|
+
};
|
|
52
|
+
const useResponsiveProp = (value, defaultValue) => {
|
|
53
|
+
const breakpoints = SaltProvider.useBreakpoints();
|
|
54
|
+
const viewport = ViewportProvider.useViewport();
|
|
55
|
+
const currentViewport = getCurrentBreakpoint(breakpoints, viewport);
|
|
56
|
+
if (hasBreakpointValues(value, breakpoints)) {
|
|
57
|
+
return getResponsiveValue(
|
|
58
|
+
value,
|
|
59
|
+
breakpoints,
|
|
60
|
+
currentViewport,
|
|
61
|
+
defaultValue
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
exports.getCurrentBreakpoint = getCurrentBreakpoint;
|
|
68
|
+
exports.useCurrentBreakpoint = useCurrentBreakpoint;
|
|
69
|
+
exports.useOrderedBreakpoints = useOrderedBreakpoints;
|
|
70
|
+
exports.useResponsiveProp = useResponsiveProp;
|
|
71
|
+
//# sourceMappingURL=useResponsiveProp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResponsiveProp.js","sources":["../src/utils/useResponsiveProp.ts"],"sourcesContent":["import { Breakpoints } from \"../breakpoints\";\nimport { useBreakpoints } from \"../salt-provider\";\nimport { useViewport } from \"../viewport\";\n\ntype BreakpointProp<T> = {\n [K in keyof Breakpoints]?: T;\n};\n\nexport type ResponsiveProp<T> = T | BreakpointProp<T>;\n\nexport const getCurrentBreakpoint = (\n breakpoints: Breakpoints,\n width: number\n) => {\n const breakpointList = Object.entries(breakpoints);\n\n const [currentBreakpoint] = (\n breakpointList as [keyof Breakpoints, number][]\n ).reduce((acc, val) => {\n const [, accWidth] = acc;\n const [breakpoint, breakpointWidth] = val;\n if (breakpointWidth < width && breakpointWidth > accWidth) {\n return [breakpoint, breakpointWidth];\n }\n return [...acc];\n }, breakpointList[0] as [keyof Breakpoints, number]);\n\n return currentBreakpoint;\n};\n\nexport const useCurrentBreakpoint = () => {\n const viewport = useViewport();\n\n const breakpoints = useBreakpoints();\n\n return getCurrentBreakpoint(breakpoints, viewport);\n};\n\nexport const useOrderedBreakpoints = () => {\n const breakpoints = useBreakpoints();\n\n const orderedBreakpoints = Object.entries(breakpoints)\n .sort(([, a], [, b]) => a - b)\n .map(([key]) => key);\n\n return orderedBreakpoints;\n};\n\nconst isObject = <T>(\n value: T\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): value is Record<string | number | symbol, any> => {\n const type = typeof value;\n return value !== null && (type === \"object\" || type === \"function\");\n};\n\nconst hasBreakpointValues = <T>(\n value: ResponsiveProp<T>,\n breakpoints: Breakpoints\n): value is BreakpointProp<T> => {\n return (\n isObject(value) && Object.keys(value).every((key) => key in breakpoints)\n );\n};\n\nconst getResponsiveValue = <T>(\n breakpointValues: BreakpointProp<T>,\n breakpoints: Breakpoints,\n viewport: keyof Breakpoints,\n defaultValue: T\n) => {\n const value = Object.entries(breakpointValues).reduce<[number, T]>(\n (acc, val) => {\n const [accWidth] = acc;\n const [breakpoint, breakpointValue] = val;\n\n const breakpointWidth =\n breakpoints[breakpoint as keyof typeof breakpoints];\n\n if (\n breakpointWidth >= accWidth &&\n breakpointWidth <= breakpoints[viewport]\n ) {\n return [breakpointWidth, breakpointValue];\n }\n\n return acc;\n },\n [0, defaultValue]\n )[1];\n\n return value;\n};\n\nexport const useResponsiveProp = <T>(\n value: ResponsiveProp<T>,\n defaultValue: T\n) => {\n const breakpoints = useBreakpoints();\n const viewport = useViewport();\n\n const currentViewport = getCurrentBreakpoint(breakpoints, viewport);\n\n if (hasBreakpointValues(value, breakpoints)) {\n return getResponsiveValue(\n value,\n breakpoints,\n currentViewport,\n defaultValue\n );\n }\n return value;\n};\n"],"names":["useViewport","useBreakpoints"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
|
|
8
|
+
const ViewportContext = React.createContext(null);
|
|
9
|
+
const ViewportProvider = ({ children }) => {
|
|
10
|
+
const existingViewport = React.useContext(ViewportContext);
|
|
11
|
+
const [viewport, setViewport] = React.useState(existingViewport);
|
|
12
|
+
const noExistingViewport = existingViewport === null;
|
|
13
|
+
const viewportValue = existingViewport || viewport || 0;
|
|
14
|
+
React.useLayoutEffect(() => {
|
|
15
|
+
let observer = null;
|
|
16
|
+
if (noExistingViewport) {
|
|
17
|
+
observer = new ResizeObserver(
|
|
18
|
+
(observerEntries) => {
|
|
19
|
+
setViewport(observerEntries[0].contentRect.width);
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
observer.observe(document.body);
|
|
23
|
+
}
|
|
24
|
+
return () => {
|
|
25
|
+
if (observer) {
|
|
26
|
+
observer.disconnect();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}, [noExistingViewport]);
|
|
30
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ViewportContext.Provider, {
|
|
31
|
+
value: viewportValue,
|
|
32
|
+
children
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const useViewport = () => {
|
|
36
|
+
const value = React.useContext(ViewportContext);
|
|
37
|
+
return value === null ? 0 : value;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
exports.ViewportContext = ViewportContext;
|
|
41
|
+
exports.ViewportProvider = ViewportProvider;
|
|
42
|
+
exports.useViewport = useViewport;
|
|
43
|
+
//# sourceMappingURL=ViewportProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import {\n createContext,\n useLayoutEffect,\n useState,\n useContext,\n ReactNode,\n} from \"react\";\n\nconst ViewportContext = createContext<number | null>(null);\n\ntype ViewportProviderProps = {\n children?: ReactNode;\n};\n\nconst ViewportProvider = ({ children }: ViewportProviderProps) => {\n // Get value directly from the ViewportContext so we can detect if the value is null (no inherited ViewportProvider)\n const existingViewport = useContext(ViewportContext);\n const [viewport, setViewport] = useState(existingViewport);\n\n const noExistingViewport = existingViewport === null;\n const viewportValue = existingViewport || viewport || 0;\n\n useLayoutEffect(() => {\n let observer: ResizeObserver | null = null;\n\n if (noExistingViewport) {\n observer = new ResizeObserver(\n (observerEntries: ResizeObserverEntry[]) => {\n setViewport(observerEntries[0].contentRect.width);\n }\n );\n\n observer.observe(document.body);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, [noExistingViewport]);\n\n return (\n <ViewportContext.Provider value={viewportValue}>\n {children}\n </ViewportContext.Provider>\n );\n};\n\nconst useViewport = (): number => {\n const value = useContext(ViewportContext);\n return value === null ? 0 : value;\n};\n\nexport { ViewportProvider, ViewportContext, useViewport };\n"],"names":["createContext","useContext","useState","useLayoutEffect","jsx"],"mappings":";;;;;;;AAQM,MAAA,eAAA,GAAkBA,oBAA6B,IAAI,EAAA;AAMzD,MAAM,gBAAmB,GAAA,CAAC,EAAE,QAAA,EAAsC,KAAA;AAEhE,EAAM,MAAA,gBAAA,GAAmBC,iBAAW,eAAe,CAAA,CAAA;AACnD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,eAAS,gBAAgB,CAAA,CAAA;AAEzD,EAAA,MAAM,qBAAqB,gBAAqB,KAAA,IAAA,CAAA;AAChD,EAAM,MAAA,aAAA,GAAgB,oBAAoB,QAAY,IAAA,CAAA,CAAA;AAEtD,EAAAC,qBAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,QAAkC,GAAA,IAAA,CAAA;AAEtC,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,QAAA,GAAW,IAAI,cAAA;AAAA,QACb,CAAC,eAA2C,KAAA;AAC1C,UAAY,WAAA,CAAA,eAAA,CAAgB,CAAG,CAAA,CAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAAA,SAClD;AAAA,OACF,CAAA;AAEA,MAAS,QAAA,CAAA,OAAA,CAAQ,SAAS,IAAI,CAAA,CAAA;AAAA,KAChC;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,QAAA,CAAS,UAAW,EAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EACE,uBAAAC,cAAA,CAAC,gBAAgB,QAAhB,EAAA;AAAA,IAAyB,KAAO,EAAA,aAAA;AAAA,IAC9B,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,cAAc,MAAc;AAChC,EAAM,MAAA,KAAA,GAAQH,iBAAW,eAAe,CAAA,CAAA;AACxC,EAAO,OAAA,KAAA,KAAU,OAAO,CAAI,GAAA,KAAA,CAAA;AAC9B;;;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function styleInject(css, ref) {
|
|
2
|
+
if ( ref === void 0 ) ref = {};
|
|
3
|
+
var insertAt = ref.insertAt;
|
|
4
|
+
|
|
5
|
+
if (!css || typeof document === 'undefined') { return; }
|
|
6
|
+
|
|
7
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
8
|
+
var style = document.createElement('style');
|
|
9
|
+
style.type = 'text/css';
|
|
10
|
+
|
|
11
|
+
if (insertAt === 'top') {
|
|
12
|
+
if (head.firstChild) {
|
|
13
|
+
head.insertBefore(style, head.firstChild);
|
|
14
|
+
} else {
|
|
15
|
+
head.appendChild(style);
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
head.appendChild(style);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (style.styleSheet) {
|
|
22
|
+
style.styleSheet.cssText = css;
|
|
23
|
+
} else {
|
|
24
|
+
style.appendChild(document.createTextNode(css));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { styleInject as default };
|
|
29
|
+
//# sourceMappingURL=style-inject.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-inject.es.js","sources":["../../../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;"}
|