@protonradio/proton-ui 0.11.10 → 0.11.11
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 +148 -148
- package/dist/_virtual/jsx-runtime.cjs.js +2 -0
- package/dist/_virtual/jsx-runtime.cjs.js.map +1 -0
- package/dist/_virtual/jsx-runtime.es.js +5 -0
- package/dist/_virtual/jsx-runtime.es.js.map +1 -0
- package/dist/_virtual/react-jsx-runtime.development.cjs.js +2 -0
- package/dist/_virtual/react-jsx-runtime.development.cjs.js.map +1 -0
- package/dist/_virtual/react-jsx-runtime.development.es.js +5 -0
- package/dist/_virtual/react-jsx-runtime.development.es.js.map +1 -0
- package/dist/_virtual/react-jsx-runtime.production.min.cjs.js +2 -0
- package/dist/_virtual/react-jsx-runtime.production.min.cjs.js.map +1 -0
- package/dist/_virtual/react-jsx-runtime.production.min.es.js +5 -0
- package/dist/_virtual/react-jsx-runtime.production.min.es.js.map +1 -0
- package/dist/assets/svg/icons.svg.cjs.js +2 -0
- package/dist/assets/svg/icons.svg.cjs.js.map +1 -0
- package/dist/assets/svg/icons.svg.es.js +5 -0
- package/dist/assets/svg/icons.svg.es.js.map +1 -0
- package/dist/components/ActionMenu/ActionMenu.cjs.js +2 -0
- package/dist/components/ActionMenu/ActionMenu.cjs.js.map +1 -0
- package/dist/components/ActionMenu/ActionMenu.es.js +277 -0
- package/dist/components/ActionMenu/ActionMenu.es.js.map +1 -0
- package/dist/components/Badge/Badge.cjs.js +2 -0
- package/dist/components/Badge/Badge.cjs.js.map +1 -0
- package/dist/components/Badge/Badge.es.js +25 -0
- package/dist/components/Badge/Badge.es.js.map +1 -0
- package/dist/components/Banner/Banner.cjs.js +2 -0
- package/dist/components/Banner/Banner.cjs.js.map +1 -0
- package/dist/components/Banner/Banner.es.js +131 -0
- package/dist/components/Banner/Banner.es.js.map +1 -0
- package/dist/components/Button/Button.cjs.js +2 -0
- package/dist/components/Button/Button.cjs.js.map +1 -0
- package/dist/components/Button/Button.es.js +99 -0
- package/dist/components/Button/Button.es.js.map +1 -0
- package/dist/components/ButtonGroup/ButtonGroup.cjs.js +2 -0
- package/dist/components/ButtonGroup/ButtonGroup.cjs.js.map +1 -0
- package/dist/components/ButtonGroup/ButtonGroup.es.js +51 -0
- package/dist/components/ButtonGroup/ButtonGroup.es.js.map +1 -0
- package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js +2 -0
- package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js.map +1 -0
- package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js +80 -0
- package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js.map +1 -0
- package/dist/components/DataTable/DataTable.cjs.js +2 -0
- package/dist/components/DataTable/DataTable.cjs.js.map +1 -0
- package/dist/components/DataTable/DataTable.es.js +137 -0
- package/dist/components/DataTable/DataTable.es.js.map +1 -0
- package/dist/components/Dialog/Dialog.cjs.js +2 -0
- package/dist/components/Dialog/Dialog.cjs.js.map +1 -0
- package/dist/components/Dialog/Dialog.es.js +15 -0
- package/dist/components/Dialog/Dialog.es.js.map +1 -0
- package/dist/components/Elevation/Elevation.cjs.js +2 -0
- package/dist/components/Elevation/Elevation.cjs.js.map +1 -0
- package/dist/components/Elevation/Elevation.es.js +33 -0
- package/dist/components/Elevation/Elevation.es.js.map +1 -0
- package/dist/components/Icon/Icon.cjs.js +2 -0
- package/dist/components/Icon/Icon.cjs.js.map +1 -0
- package/dist/components/Icon/Icon.es.js +42 -0
- package/dist/components/Icon/Icon.es.js.map +1 -0
- package/dist/components/ImageBackground/ImageBackground.cjs.js +2 -0
- package/dist/components/ImageBackground/ImageBackground.cjs.js.map +1 -0
- package/dist/components/ImageBackground/ImageBackground.es.js +55 -0
- package/dist/components/ImageBackground/ImageBackground.es.js.map +1 -0
- package/dist/components/Input/BaseInput/Input.cjs.js +2 -0
- package/dist/components/Input/BaseInput/Input.cjs.js.map +1 -0
- package/dist/components/Input/BaseInput/Input.es.js +186 -0
- package/dist/components/Input/BaseInput/Input.es.js.map +1 -0
- package/dist/components/Input/CopyInput/CopyInput.cjs.js +2 -0
- package/dist/components/Input/CopyInput/CopyInput.cjs.js.map +1 -0
- package/dist/components/Input/CopyInput/CopyInput.es.js +83 -0
- package/dist/components/Input/CopyInput/CopyInput.es.js.map +1 -0
- package/dist/components/Input/SearchInput/SearchInput.cjs.js +2 -0
- package/dist/components/Input/SearchInput/SearchInput.cjs.js.map +1 -0
- package/dist/components/Input/SearchInput/SearchInput.es.js +118 -0
- package/dist/components/Input/SearchInput/SearchInput.es.js.map +1 -0
- package/dist/components/Menu/MenuTrigger.cjs.js +2 -0
- package/dist/components/Menu/MenuTrigger.cjs.js.map +1 -0
- package/dist/components/Menu/MenuTrigger.es.js +89 -0
- package/dist/components/Menu/MenuTrigger.es.js.map +1 -0
- package/dist/components/Menu/PopoverMenu.cjs.js +2 -0
- package/dist/components/Menu/PopoverMenu.cjs.js.map +1 -0
- package/dist/components/Menu/PopoverMenu.es.js +122 -0
- package/dist/components/Menu/PopoverMenu.es.js.map +1 -0
- package/dist/components/Modal/Modal.cjs.js +2 -0
- package/dist/components/Modal/Modal.cjs.js.map +1 -0
- package/dist/components/Modal/Modal.es.js +122 -0
- package/dist/components/Modal/Modal.es.js.map +1 -0
- package/dist/components/Popover/Popover.cjs.js +2 -0
- package/dist/components/Popover/Popover.cjs.js.map +1 -0
- package/dist/components/Popover/Popover.es.js +54 -0
- package/dist/components/Popover/Popover.es.js.map +1 -0
- package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js +2 -0
- package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js.map +1 -0
- package/dist/components/ScreenOverlay/ScreenOverlay.es.js +44 -0
- package/dist/components/ScreenOverlay/ScreenOverlay.es.js.map +1 -0
- package/dist/components/Select/Select.cjs.js +2 -0
- package/dist/components/Select/Select.cjs.js.map +1 -0
- package/dist/components/Select/Select.es.js +228 -0
- package/dist/components/Select/Select.es.js.map +1 -0
- package/dist/components/Switch/Switch.cjs.js +2 -0
- package/dist/components/Switch/Switch.cjs.js.map +1 -0
- package/dist/components/Switch/Switch.es.js +40 -0
- package/dist/components/Switch/Switch.es.js.map +1 -0
- package/dist/components/Table/Collection/CompoundComponents.cjs.js +2 -0
- package/dist/components/Table/Collection/CompoundComponents.cjs.js.map +1 -0
- package/dist/components/Table/Collection/CompoundComponents.es.js +9 -0
- package/dist/components/Table/Collection/CompoundComponents.es.js.map +1 -0
- package/dist/components/Table/Collection/collectionParser.cjs.js +2 -0
- package/dist/components/Table/Collection/collectionParser.cjs.js.map +1 -0
- package/dist/components/Table/Collection/collectionParser.es.js +54 -0
- package/dist/components/Table/Collection/collectionParser.es.js.map +1 -0
- package/dist/components/Table/Collection/useTableCollection.cjs.js +2 -0
- package/dist/components/Table/Collection/useTableCollection.cjs.js.map +1 -0
- package/dist/components/Table/Collection/useTableCollection.es.js +59 -0
- package/dist/components/Table/Collection/useTableCollection.es.js.map +1 -0
- package/dist/components/Table/Table.cjs.js +2 -0
- package/dist/components/Table/Table.cjs.js.map +1 -0
- package/dist/components/Table/Table.es.js +89 -0
- package/dist/components/Table/Table.es.js.map +1 -0
- package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js +2 -0
- package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js.map +1 -0
- package/dist/components/Text/TextEllipsis/TextEllipsis.es.js +30 -0
- package/dist/components/Text/TextEllipsis/TextEllipsis.es.js.map +1 -0
- package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js +2 -0
- package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js.map +1 -0
- package/dist/components/Text/TextEmphasis/TextEmphasis.es.js +54 -0
- package/dist/components/Text/TextEmphasis/TextEmphasis.es.js.map +1 -0
- package/dist/components/ThemeProvider.cjs.js +2 -0
- package/dist/components/ThemeProvider.cjs.js.map +1 -0
- package/dist/components/ThemeProvider.es.js +42 -0
- package/dist/components/ThemeProvider.es.js.map +1 -0
- package/dist/components/Tombstone/Tombstone.cjs.js +2 -0
- package/dist/components/Tombstone/Tombstone.cjs.js.map +1 -0
- package/dist/components/Tombstone/Tombstone.es.js +35 -0
- package/dist/components/Tombstone/Tombstone.es.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.cjs.js +2 -0
- package/dist/components/Tooltip/Tooltip.cjs.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.es.js +78 -0
- package/dist/components/Tooltip/Tooltip.es.js.map +1 -0
- package/dist/components/Waveform/Waveform.cjs.js +2 -0
- package/dist/components/Waveform/Waveform.cjs.js.map +1 -0
- package/dist/components/Waveform/Waveform.es.js +163 -0
- package/dist/components/Waveform/Waveform.es.js.map +1 -0
- package/dist/components/Waveform/WaveformBar.cjs.js +2 -0
- package/dist/components/Waveform/WaveformBar.cjs.js.map +1 -0
- package/dist/components/Waveform/WaveformBar.es.js +74 -0
- package/dist/components/Waveform/WaveformBar.es.js.map +1 -0
- package/dist/constants/breakpoint.cjs.js +2 -0
- package/dist/constants/breakpoint.cjs.js.map +1 -0
- package/dist/{breakpoint-9y1_8U_b.mjs → constants/breakpoint.es.js} +2 -2
- package/dist/constants/breakpoint.es.js.map +1 -0
- package/dist/constants/placement.cjs.js +2 -0
- package/dist/constants/placement.cjs.js.map +1 -0
- package/dist/constants/placement.es.js +28 -0
- package/dist/constants/placement.es.js.map +1 -0
- package/dist/constants.cjs.js +1 -1
- package/dist/constants.cjs.js.map +1 -1
- package/dist/constants.es.js +3 -26
- package/dist/constants.es.js.map +1 -1
- package/dist/dark.cjs.js +1 -1
- package/dist/dark.cjs.js.map +1 -1
- package/dist/dark.es.js +8 -55
- package/dist/dark.es.js.map +1 -1
- package/dist/design/colors.cjs.js +2 -0
- package/dist/design/colors.cjs.js.map +1 -0
- package/dist/{colors-CWaj9dFz.mjs → design/colors.es.js} +7 -7
- package/dist/design/colors.es.js.map +1 -0
- package/dist/design/darkTheme/colors.cjs.js +2 -0
- package/dist/design/darkTheme/colors.cjs.js.map +1 -0
- package/dist/{colors-Ceyo4oCJ.mjs → design/darkTheme/colors.es.js} +13 -13
- package/dist/design/darkTheme/colors.es.js.map +1 -0
- package/dist/design/darkTheme/stylesheet.cjs.js +2 -0
- package/dist/design/darkTheme/stylesheet.cjs.js.map +1 -0
- package/dist/design/darkTheme/stylesheet.es.js +52 -0
- package/dist/design/darkTheme/stylesheet.es.js.map +1 -0
- package/dist/design/generateStylesheet.cjs.js +2 -0
- package/dist/design/generateStylesheet.cjs.js.map +1 -0
- package/dist/design/generateStylesheet.es.js +26 -0
- package/dist/design/generateStylesheet.es.js.map +1 -0
- package/dist/design/lightTheme/colors.cjs.js +2 -0
- package/dist/design/lightTheme/colors.cjs.js.map +1 -0
- package/dist/{colors-DMkDnu4U.mjs → design/lightTheme/colors.es.js} +11 -11
- package/dist/design/lightTheme/colors.es.js.map +1 -0
- package/dist/design/lightTheme/stylesheet.cjs.js +2 -0
- package/dist/design/lightTheme/stylesheet.cjs.js.map +1 -0
- package/dist/design/lightTheme/stylesheet.es.js +52 -0
- package/dist/design/lightTheme/stylesheet.es.js.map +1 -0
- package/dist/design/theme.cjs.js +2 -0
- package/dist/design/theme.cjs.js.map +1 -0
- package/dist/design/theme.es.js +12 -0
- package/dist/design/theme.es.js.map +1 -0
- package/dist/hooks/useBreakpoint.cjs.js +2 -0
- package/dist/hooks/useBreakpoint.cjs.js.map +1 -0
- package/dist/hooks/useBreakpoint.es.js +17 -0
- package/dist/hooks/useBreakpoint.es.js.map +1 -0
- package/dist/hooks/useIsClosing.cjs.js +2 -0
- package/dist/hooks/useIsClosing.cjs.js.map +1 -0
- package/dist/hooks/useIsClosing.es.js +30 -0
- package/dist/hooks/useIsClosing.es.js.map +1 -0
- package/dist/hooks/useLockBodyScroll.cjs.js +2 -0
- package/dist/hooks/useLockBodyScroll.cjs.js.map +1 -0
- package/dist/hooks/useLockBodyScroll.es.js +14 -0
- package/dist/hooks/useLockBodyScroll.es.js.map +1 -0
- package/dist/hooks/usePalette.cjs.js +2 -0
- package/dist/hooks/usePalette.cjs.js.map +1 -0
- package/dist/hooks/usePalette.es.js +37 -0
- package/dist/hooks/usePalette.es.js.map +1 -0
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.cjs.js.map +1 -1
- package/dist/hooks.es.js +8 -37
- package/dist/hooks.es.js.map +1 -1
- package/dist/icons.svg +10 -10
- package/dist/index.cjs.js +1 -36
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.es.js +60 -5421
- package/dist/index.es.js.map +1 -1
- package/dist/light.cjs.js +1 -1
- package/dist/light.cjs.js.map +1 -1
- package/dist/light.es.js +8 -55
- package/dist/light.es.js.map +1 -1
- package/dist/node_modules/@react-aria/button/dist/useButton.cjs.js +2 -0
- package/dist/node_modules/@react-aria/button/dist/useButton.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/button/dist/useButton.es.js +55 -0
- package/dist/node_modules/@react-aria/button/dist/useButton.es.js.map +1 -0
- package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js +2 -0
- package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js +44 -0
- package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js.map +1 -0
- package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js +2 -0
- package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js +437 -0
- package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js.map +1 -0
- package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js +2 -0
- package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js +78 -0
- package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js.map +1 -0
- package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js +2 -0
- package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/i18n/dist/context.es.js +11 -0
- package/dist/node_modules/@react-aria/i18n/dist/context.es.js.map +1 -0
- package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js +2 -0
- package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js +30 -0
- package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js.map +1 -0
- package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js +2 -0
- package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/i18n/dist/utils.es.js +45 -0
- package/dist/node_modules/@react-aria/i18n/dist/utils.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/context.es.js +10 -0
- package/dist/node_modules/@react-aria/interactions/dist/context.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js +29 -0
- package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js +15 -0
- package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js +35 -0
- package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js +30 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js +63 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js +56 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js +42 -0
- package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.es.js +51 -0
- package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js +13 -0
- package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js +8 -0
- package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js +386 -0
- package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js +2 -0
- package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/interactions/dist/utils.es.js +92 -0
- package/dist/node_modules/@react-aria/interactions/dist/utils.es.js.map +1 -0
- package/dist/node_modules/@react-aria/label/dist/useField.cjs.js +2 -0
- package/dist/node_modules/@react-aria/label/dist/useField.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/label/dist/useField.es.js +36 -0
- package/dist/node_modules/@react-aria/label/dist/useField.es.js.map +1 -0
- package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js +2 -0
- package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/label/dist/useLabel.es.js +23 -0
- package/dist/node_modules/@react-aria/label/dist/useLabel.es.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js +2 -0
- package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js +16 -0
- package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js +2 -0
- package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js +70 -0
- package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.cjs.js +2 -0
- package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.es.js +32 -0
- package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.es.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/useOverlay.cjs.js +2 -0
- package/dist/node_modules/@react-aria/overlays/dist/useOverlay.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/useOverlay.es.js +53 -0
- package/dist/node_modules/@react-aria/overlays/dist/useOverlay.es.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.cjs.js +2 -0
- package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.es.js +100 -0
- package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.es.js.map +1 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js +2 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js +70 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js.map +1 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js +2 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js +80 -0
- package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js.map +1 -0
- package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js +2 -0
- package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/radio/dist/utils.es.js +5 -0
- package/dist/node_modules/@react-aria/radio/dist/utils.es.js.map +1 -0
- package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js +2 -0
- package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js +19 -0
- package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js.map +1 -0
- package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js +2 -0
- package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js +20 -0
- package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js.map +1 -0
- package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js +2 -0
- package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js +60 -0
- package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js.map +1 -0
- package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js +2 -0
- package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js.map +1 -0
- package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js +41 -0
- package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js.map +1 -0
- package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js +2 -0
- package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js.map +1 -0
- package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js +110 -0
- package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js.map +1 -0
- package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.cjs.js +2 -0
- package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.cjs.js.map +1 -0
- package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.es.js +30 -0
- package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.es.js.map +1 -0
- package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js +2 -0
- package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js.map +1 -0
- package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js +35 -0
- package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js.map +1 -0
- package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js +2 -0
- package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js.map +1 -0
- package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js +22 -0
- package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js.map +1 -0
- package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js +2 -0
- package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js.map +1 -0
- package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js +31 -0
- package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js +2 -0
- package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js +9 -0
- package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js +2 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js +8 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js +2 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js +13 -0
- package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js +2 -0
- package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js +9 -0
- package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js +2 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js +11 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js +2 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js +9 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js +2 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js.map +1 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js +11 -0
- package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js.map +1 -0
- package/dist/node_modules/color2k/dist/index.exports.import.es.cjs.js +2 -0
- package/dist/node_modules/color2k/dist/index.exports.import.es.cjs.js.map +1 -0
- package/dist/node_modules/color2k/dist/index.exports.import.es.es.js +171 -0
- package/dist/node_modules/color2k/dist/index.exports.import.es.es.js.map +1 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js +23 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js.map +1 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +609 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +1 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js +10 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js.map +1 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js +29 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js.map +1 -0
- package/dist/node_modules/react/jsx-runtime.cjs.js +2 -0
- package/dist/node_modules/react/jsx-runtime.cjs.js.map +1 -0
- package/dist/node_modules/react/jsx-runtime.es.js +9 -0
- package/dist/node_modules/react/jsx-runtime.es.js.map +1 -0
- package/dist/node_modules/react-aria-components/dist/OverlayArrow.cjs.js +2 -0
- package/dist/node_modules/react-aria-components/dist/OverlayArrow.cjs.js.map +1 -0
- package/dist/node_modules/react-aria-components/dist/OverlayArrow.es.js +37 -0
- package/dist/node_modules/react-aria-components/dist/OverlayArrow.es.js.map +1 -0
- package/dist/node_modules/react-aria-components/dist/Tooltip.cjs.js +2 -0
- package/dist/node_modules/react-aria-components/dist/Tooltip.cjs.js.map +1 -0
- package/dist/node_modules/react-aria-components/dist/Tooltip.es.js +98 -0
- package/dist/node_modules/react-aria-components/dist/Tooltip.es.js.map +1 -0
- package/dist/node_modules/react-aria-components/dist/utils.cjs.js +2 -0
- package/dist/node_modules/react-aria-components/dist/utils.cjs.js.map +1 -0
- package/dist/node_modules/react-aria-components/dist/utils.es.js +89 -0
- package/dist/node_modules/react-aria-components/dist/utils.es.js.map +1 -0
- package/dist/theme.cjs.js +1 -1
- package/dist/theme.cjs.js.map +1 -1
- package/dist/theme.es.js +9 -15
- package/dist/theme.es.js.map +1 -1
- package/dist/utils/color2k.cjs.js +2 -0
- package/dist/utils/color2k.cjs.js.map +1 -0
- package/dist/utils/color2k.es.js +14 -0
- package/dist/utils/color2k.es.js.map +1 -0
- package/dist/utils/copy.cjs.js +2 -0
- package/dist/utils/copy.cjs.js.map +1 -0
- package/dist/utils/copy.es.js +31 -0
- package/dist/utils/copy.es.js.map +1 -0
- package/dist/utils/image.cjs.js +2 -0
- package/dist/utils/image.cjs.js.map +1 -0
- package/dist/utils/image.es.js +28 -0
- package/dist/utils/image.es.js.map +1 -0
- package/dist/utils/navigation.cjs.js +2 -0
- package/dist/utils/navigation.cjs.js.map +1 -0
- package/dist/utils/navigation.es.js +12 -0
- package/dist/utils/navigation.es.js.map +1 -0
- package/dist/utils/palette.cjs.js +2 -0
- package/dist/utils/palette.cjs.js.map +1 -0
- package/dist/utils/palette.es.js +183 -0
- package/dist/utils/palette.es.js.map +1 -0
- package/dist/utils/string.cjs.js +2 -0
- package/dist/utils/string.cjs.js.map +1 -0
- package/dist/utils/string.es.js +8 -0
- package/dist/utils/string.es.js.map +1 -0
- package/dist/utils.cjs.js +1 -1
- package/dist/utils.es.js +19 -15
- package/dist/utils.es.js.map +1 -1
- package/package.json +140 -140
- package/dist/breakpoint-9y1_8U_b.mjs.map +0 -1
- package/dist/breakpoint-DtqbboOa.js +0 -2
- package/dist/breakpoint-DtqbboOa.js.map +0 -1
- package/dist/color2k-CpDB_dpw.mjs +0 -168
- package/dist/color2k-CpDB_dpw.mjs.map +0 -1
- package/dist/color2k-DCgwXUem.js +0 -2
- package/dist/color2k-DCgwXUem.js.map +0 -1
- package/dist/colors-CWaj9dFz.mjs.map +0 -1
- package/dist/colors-CebzFjpe.js +0 -2
- package/dist/colors-CebzFjpe.js.map +0 -1
- package/dist/colors-Ceyo4oCJ.mjs.map +0 -1
- package/dist/colors-CmSJBHaf.js +0 -2
- package/dist/colors-CmSJBHaf.js.map +0 -1
- package/dist/colors-DL1dYffC.js +0 -2
- package/dist/colors-DL1dYffC.js.map +0 -1
- package/dist/colors-DMkDnu4U.mjs.map +0 -1
- package/dist/image-CUSfY1_T.js +0 -2
- package/dist/image-CUSfY1_T.js.map +0 -1
- package/dist/image-DFyN0Kd9.mjs +0 -207
- package/dist/image-DFyN0Kd9.mjs.map +0 -1
- package/dist/navigation-BB0MBIiR.js +0 -2
- package/dist/navigation-BB0MBIiR.js.map +0 -1
- package/dist/navigation-Bj7Pex9j.mjs +0 -43
- package/dist/navigation-Bj7Pex9j.mjs.map +0 -1
- package/dist/useBreakpoint-CjRyGKN-.mjs +0 -53
- package/dist/useBreakpoint-CjRyGKN-.mjs.map +0 -1
- package/dist/useBreakpoint-DA-JqOu3.js +0 -2
- package/dist/useBreakpoint-DA-JqOu3.js.map +0 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { j as r } from "../../node_modules/react/jsx-runtime.es.js";
|
|
2
|
+
import { OverlayArrow as T } from "../../node_modules/react-aria-components/dist/OverlayArrow.es.js";
|
|
3
|
+
import { TooltipTrigger as g, Tooltip as j } from "../../node_modules/react-aria-components/dist/Tooltip.es.js";
|
|
4
|
+
import { Focusable as $ } from "react-aria";
|
|
5
|
+
import { useState as _, useRef as x } from "react";
|
|
6
|
+
import { useTheme as v } from "../ThemeProvider.es.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
/* empty css */
|
|
9
|
+
import { csx as d } from "../../utils/string.es.js";
|
|
10
|
+
function w({ children: e, arrow: n, ...l }) {
|
|
11
|
+
const { style: o, className: t } = v();
|
|
12
|
+
return /* @__PURE__ */ r.jsxs(
|
|
13
|
+
j,
|
|
14
|
+
{
|
|
15
|
+
...l,
|
|
16
|
+
className: d("proton__Tooltip", "proton-Dialog", t),
|
|
17
|
+
style: o,
|
|
18
|
+
children: [
|
|
19
|
+
n && /* @__PURE__ */ r.jsx(T, { className: d("proton__TooltipArrow", t), children: /* @__PURE__ */ r.jsx("svg", { width: 8, height: 8, viewBox: "0 0 8 8", children: /* @__PURE__ */ r.jsx("path", { d: "M0 0 L4 4 L8 0" }) }) }),
|
|
20
|
+
e
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
function k({
|
|
26
|
+
children: e,
|
|
27
|
+
// trigger props
|
|
28
|
+
delay: n = 500,
|
|
29
|
+
closeDelay: l = 500,
|
|
30
|
+
isDisabled: o,
|
|
31
|
+
defaultOpen: t,
|
|
32
|
+
onOpenChange: c,
|
|
33
|
+
disableTriggerClick: f,
|
|
34
|
+
// tooltip props
|
|
35
|
+
content: u,
|
|
36
|
+
...h
|
|
37
|
+
}) {
|
|
38
|
+
const [a, s] = _(!1), i = x(!1), m = x(!1);
|
|
39
|
+
return u === "" ? null : /* @__PURE__ */ r.jsxs(
|
|
40
|
+
g,
|
|
41
|
+
{
|
|
42
|
+
delay: n,
|
|
43
|
+
closeDelay: l,
|
|
44
|
+
isDisabled: o,
|
|
45
|
+
isOpen: a,
|
|
46
|
+
defaultOpen: t,
|
|
47
|
+
onOpenChange: (p) => {
|
|
48
|
+
p && !i.current && (m.current = !0), c && c(p), i.current || s(p), i.current = !1;
|
|
49
|
+
},
|
|
50
|
+
children: [
|
|
51
|
+
f ? /* @__PURE__ */ r.jsx("span", { className: "proton__TooltipTrigger", "aria-label": "Show tooltip", children: e }) : /* @__PURE__ */ r.jsx($, { children: /* @__PURE__ */ r.jsx(
|
|
52
|
+
"div",
|
|
53
|
+
{
|
|
54
|
+
role: "button",
|
|
55
|
+
"aria-label": "Show tooltip",
|
|
56
|
+
className: "proton__TooltipTrigger",
|
|
57
|
+
"data-hovered": a,
|
|
58
|
+
onMouseEnter: () => {
|
|
59
|
+
o || s(!0);
|
|
60
|
+
},
|
|
61
|
+
onMouseLeave: () => {
|
|
62
|
+
o || s(!1);
|
|
63
|
+
},
|
|
64
|
+
onClick: () => {
|
|
65
|
+
f || o || m.current || (i.current = !0, s(!a));
|
|
66
|
+
},
|
|
67
|
+
children: e
|
|
68
|
+
}
|
|
69
|
+
) }),
|
|
70
|
+
/* @__PURE__ */ r.jsx(w, { ...h, children: u })
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
k as TooltipTrigger
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=Tooltip.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.es.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport {\r\n Tooltip as AriaTooltip,\r\n TooltipProps as AriaTooltipProps,\r\n TooltipTrigger as AriaTooltipTrigger,\r\n Focusable,\r\n OverlayArrow,\r\n TooltipTriggerComponentProps,\r\n} from \"react-aria-components\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\n\r\nimport { csx } from \"../../utils\";\r\nimport \"../Dialog/Dialog.css\";\r\nimport \"./Tooltip.css\";\r\n\r\nexport interface TooltipProps extends Omit<AriaTooltipProps, \"children\"> {\r\n children: React.ReactNode;\r\n arrow?: boolean;\r\n}\r\n\r\nfunction Tooltip({ children, arrow, ...props }: TooltipProps) {\r\n const { style, className } = useTheme();\r\n\r\n return (\r\n <AriaTooltip\r\n {...props}\r\n className={csx(\"proton__Tooltip\", \"proton-Dialog\", className)}\r\n style={style as React.CSSProperties}\r\n >\r\n {arrow && (\r\n <OverlayArrow className={csx(\"proton__TooltipArrow\", className)}>\r\n <svg width={8} height={8} viewBox=\"0 0 8 8\">\r\n <path d=\"M0 0 L4 4 L8 0\" />\r\n </svg>\r\n </OverlayArrow>\r\n )}\r\n\r\n {children}\r\n </AriaTooltip>\r\n );\r\n}\r\n\r\nexport interface TooltipTriggerProps\r\n extends TooltipProps,\r\n TooltipTriggerComponentProps {\r\n children: React.ReactNode;\r\n /**\r\n * The content to display in the tooltip. Zero-length titles string are never displayed.\r\n */\r\n content: string | React.ReactNode;\r\n /**\r\n * Whether to disable the trigger click feature.\r\n */\r\n disableTriggerClick?: boolean;\r\n}\r\n\r\n/**\r\n * Proton's TooltipTrigger component deviates from the Aria TooltipTrigger in that on mobile,\r\n * the trigger also opens the tooltip on click as well as hover & focus. This is to improve\r\n * accessibility and usability on mobile.\r\n *\r\n * If you wish to disable the trigger click feature, you can set the `disableTriggerClick` prop.\r\n * This is useful when using an info only Tooltip that might wrap a clickable element.\r\n *\r\n * API:\r\n * - {@link TooltipTriggerProps}\r\n * - extends {@link TooltipProps}\r\n * - extends {@link TooltipTriggerComponentProps}\r\n *\r\n * @example\r\n * ```tsx\r\n <TooltipTrigger content={...} placement=\"top\" arrow isDisabled={disabled}>\r\n {children}\r\n </TooltipTrigger>\r\n * ```\r\n */\r\nexport function TooltipTrigger({\r\n children,\r\n // trigger props\r\n delay = 500,\r\n closeDelay = 500,\r\n isDisabled,\r\n defaultOpen,\r\n onOpenChange,\r\n disableTriggerClick,\r\n // tooltip props\r\n content,\r\n ...tooltipProps\r\n}: TooltipTriggerProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const triggerClickRef = useRef<boolean>(false);\r\n const hasHovered = useRef<boolean>(false);\r\n\r\n if (content === \"\") return null;\r\n\r\n return (\r\n <AriaTooltipTrigger\r\n delay={delay}\r\n closeDelay={closeDelay}\r\n isDisabled={isDisabled}\r\n isOpen={isOpen}\r\n defaultOpen={defaultOpen}\r\n onOpenChange={(openState) => {\r\n // When opened via hover, we want to disable the trigger click feature as it causes\r\n // the tooltip state to get out of sync with the trigger state.\r\n if (openState && !triggerClickRef.current) hasHovered.current = true;\r\n\r\n if (onOpenChange) onOpenChange(openState);\r\n\r\n // If the tooltip is clicked, it manually calls setIsOpen, so we don't want to call\r\n // it again here.\r\n if (!triggerClickRef.current) setIsOpen(openState);\r\n triggerClickRef.current = false;\r\n }}\r\n >\r\n {disableTriggerClick ? (\r\n <span className=\"proton__TooltipTrigger\" aria-label=\"Show tooltip\">\r\n {children}\r\n </span>\r\n ) : (\r\n <Focusable>\r\n <div\r\n role=\"button\"\r\n aria-label=\"Show tooltip\"\r\n className=\"proton__TooltipTrigger\"\r\n data-hovered={isOpen}\r\n onMouseEnter={() => {\r\n if (!isDisabled) {\r\n setIsOpen(true);\r\n }\r\n }}\r\n onMouseLeave={() => {\r\n if (!isDisabled) {\r\n setIsOpen(false);\r\n }\r\n }}\r\n onClick={() => {\r\n if (disableTriggerClick || isDisabled) return;\r\n\r\n // Once hovered it's safe to assume the user isn't trying to use via a touch device,\r\n // so we can safely disable the trigger click feature.\r\n if (hasHovered.current) return;\r\n\r\n triggerClickRef.current = true;\r\n setIsOpen(!isOpen);\r\n }}\r\n >\r\n {children}\r\n </div>\r\n </Focusable>\r\n )}\r\n <Tooltip {...tooltipProps}>{content}</Tooltip>\r\n </AriaTooltipTrigger>\r\n );\r\n}\r\n"],"names":["Tooltip","children","arrow","props","style","className","useTheme","jsxs","AriaTooltip","csx","jsx","OverlayArrow","TooltipTrigger","delay","closeDelay","isDisabled","defaultOpen","onOpenChange","disableTriggerClick","content","tooltipProps","isOpen","setIsOpen","useState","triggerClickRef","useRef","hasHovered","AriaTooltipTrigger","openState","Focusable"],"mappings":";;;;;;;;;AAuBA,SAASA,EAAQ,EAAE,UAAAC,GAAU,OAAAC,GAAO,GAAGC,KAAuB;AAC5D,QAAM,EAAE,OAAAC,GAAO,WAAAC,EAAU,IAAIC,EAAS;AAGpC,SAAAC,gBAAAA,EAAA;AAAA,IAACC;AAAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAWM,EAAI,mBAAmB,iBAAiBJ,CAAS;AAAA,MAC5D,OAAAD;AAAA,MAEC,UAAA;AAAA,QACCF,KAAAQ,gBAAAA,EAAA,IAACC,KAAa,WAAWF,EAAI,wBAAwBJ,CAAS,GAC5D,gCAAC,OAAI,EAAA,OAAO,GAAG,QAAQ,GAAG,SAAQ,WAChC,UAAAK,gBAAAA,EAAAA,IAAC,UAAK,GAAE,kBAAiB,GAC3B,EACF,CAAA;AAAA,QAGDT;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAoCO,SAASW,EAAe;AAAA,EAC7B,UAAAX;AAAA;AAAA,EAEA,OAAAY,IAAQ;AAAA,EACR,YAAAC,IAAa;AAAA,EACb,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,qBAAAC;AAAA;AAAA,EAEA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAwB;AACtB,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAAkBC,EAAgB,EAAK,GACvCC,IAAaD,EAAgB,EAAK;AAEpC,SAAAN,MAAY,KAAW,OAGzBZ,gBAAAA,EAAA;AAAA,IAACoB;AAAAA,IAAA;AAAA,MACC,OAAAd;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,QAAAM;AAAA,MACA,aAAAL;AAAA,MACA,cAAc,CAACY,MAAc;AAG3B,QAAIA,KAAa,CAACJ,EAAgB,cAAoB,UAAU,KAE5DP,OAA2BW,CAAS,GAInCJ,EAAgB,WAASF,EAAUM,CAAS,GACjDJ,EAAgB,UAAU;AAAA,MAC5B;AAAA,MAEC,UAAA;AAAA,QACCN,IAAAR,gBAAAA,EAAAA,IAAC,UAAK,WAAU,0BAAyB,cAAW,gBACjD,UAAAT,EACH,CAAA,IAEAS,gBAAAA,EAAAA,IAACmB,GACC,EAAA,UAAAnB,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YACV,gBAAcW;AAAA,YACd,cAAc,MAAM;AAClB,cAAKN,KACHO,EAAU,EAAI;AAAA,YAElB;AAAA,YACA,cAAc,MAAM;AAClB,cAAKP,KACHO,EAAU,EAAK;AAAA,YAEnB;AAAA,YACA,SAAS,MAAM;AACb,cAAIJ,KAAuBH,KAIvBW,EAAW,YAEfF,EAAgB,UAAU,IAC1BF,EAAU,CAACD,CAAM;AAAA,YACnB;AAAA,YAEC,UAAApB;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,QAEDS,gBAAAA,EAAA,IAAAV,GAAA,EAAS,GAAGoB,GAAe,UAAQD,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1C;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../node_modules/react/jsx-runtime.cjs.js"),v=require("react"),H=require("../ThemeProvider.cjs.js");;/* empty css */const L=require("./WaveformBar.cjs.js"),$=require("../../utils/string.cjs.js"),X=K(100);function F({data:e,resolution:t=2,startDuration:s,endDuration:a,currentTime:m=0,showTimestamps:g=!1,totalDuration:l,disabled:f,disabledMessage:d,onClick:h,"data-testid":p}){var P;const{className:_}=H.useTheme(),o=v.useRef(null),[W,B]=v.useState([]),[j,b]=v.useState(null),[w,I]=v.useState(!1),[N,q]=v.useState(!1),y=e||X,M=t;v.useEffect(()=>{if(!o.current)return;const r=i=>{const x=Math.floor(i/(t+M)),R=G(y,x);B(R)},n=o.current.clientWidth;r(n);const c=new ResizeObserver(i=>{i&&i[0]&&r(i[0].contentRect.width)});return c.observe(o.current),()=>c.disconnect()},[y,t,M]),v.useEffect(()=>{const r=setTimeout(()=>I(!0),50),n=setTimeout(()=>q(!0),500);return()=>{clearTimeout(r),clearTimeout(n)}},[]);const A=r=>{if(!o.current)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*l;b(i)},z=()=>{b(null)},O=t+M,E=(r,n)=>{var x;const c=r/l*100;return(n==="start"?Math.floor(c/100*W.length):Math.ceil(c/100*W.length))*O/((x=o.current)==null?void 0:x.clientWidth)*100},V=(P=o.current)==null?void 0:P.clientWidth,S=v.useMemo(()=>f&&d?d:e?null:"Waveform Unavailable",[f,d,e]);return u.jsxRuntimeExports.jsxs("div",{className:$.csx("proton-Waveform",_),"data-testid":p,children:[g&&u.jsxRuntimeExports.jsx(T,{direction:"left",seconds:m}),u.jsxRuntimeExports.jsxs("div",{ref:o,className:"proton-Waveform__container",onMouseMove:A,onMouseLeave:z,onClick:r=>{if(!o.current||f)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*l;h==null||h(i,r)},"data-disabled":f,"data-testid":"waveform-container",children:[s!==void 0&&a!==void 0&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__active-region",style:{left:o.current?`calc(${E(s,"start")}%`:"0%",right:o.current?`calc(${100-E(a,"end")}% - 2px)`:"0%"}}),j!==null&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__hover-line",style:{left:`${j/l*100}%`}}),W.map((r,n)=>{const c=n/W.length*l,i=s!==void 0&&a!==void 0&&(c<s||c>a),x=m===0?!1:c<=m,R=j!==null&&c<=j;return u.jsxRuntimeExports.jsx(L.WaveformBar,{amplitude:r,isDisabled:f||i,isPlayed:x,isHovered:R,isVisible:w,hasAnimated:N,resolution:t,spacing:M,index:n},n)})]}),S&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__bar-unavailable",style:{fontSize:V<325?"0.85rem":"1rem"},children:S}),g&&u.jsxRuntimeExports.jsx(T,{direction:"right",seconds:l})]})}function T({direction:e,seconds:t}){return u.jsxRuntimeExports.jsx("div",{className:$.csx("proton-Waveform__timestamp",`proton-Waveform__timestamp--${e}`),children:U(t)})}function U(e){const t=Math.floor(e/60),s=Math.floor(e%60);return`${t}:${s<10?"0":""}${s.toFixed(0)}`}function G(e,t){const s=e.length,a=s/t,m=new Array(t).fill(0).map((g,l)=>{const f=l*a,d=Math.floor(f),h=Math.min(d+1,s-1),p=f-d;return e[d]*(1-p)+e[h]*p});return J(m)}function J(e){const t=Math.min(...e),s=Math.max(...e);return e.map(a=>{const m=(a-t)/(s-t);return Math.max(m*.8+.1,.1)})}function K(e){return Array.from({length:e},(t,s)=>{const m=s/(e-1)*6*2*Math.PI-Math.PI/2;return Math.sin(m)*.5+.5})}exports.Waveform=F;
|
|
2
|
+
//# sourceMappingURL=Waveform.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Waveform.cjs.js","sources":["../../../src/components/Waveform/Waveform.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { csx } from \"../../utils\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport \"./Waveform.css\";\r\nimport { WaveformBar } from \"./WaveformBar\";\r\n\r\nexport interface WaveformProps {\r\n /**\r\n * Array of normalized amplitude values (0-1) representing the waveform.\r\n * If not provided, uses a sample sine wave.\r\n */\r\n data?: number[];\r\n\r\n /**\r\n * Current playback position in seconds.\r\n */\r\n currentTime?: number;\r\n\r\n /**\r\n * Test ID for testing purposes.\r\n */\r\n \"data-testid\"?: string;\r\n\r\n /**\r\n * Whether the entire waveform is disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Reason for the waveform being disabled.\r\n */\r\n disabledMessage?: string;\r\n\r\n /**\r\n * End time to display until in seconds.\r\n */\r\n endDuration?: number;\r\n\r\n /**\r\n * Click handler that receives the clicked position (0-1) and event.\r\n */\r\n onClick?: (position: number, e: React.MouseEvent<HTMLDivElement>) => void;\r\n\r\n /**\r\n * Width in pixels of each waveform bar.\r\n */\r\n resolution?: number;\r\n\r\n /**\r\n * Whether to show timestamp markers.\r\n */\r\n showTimestamps?: boolean;\r\n\r\n /**\r\n * Start time to display from in seconds.\r\n */\r\n startDuration?: number;\r\n\r\n /**\r\n * Total duration of the audio in seconds.\r\n */\r\n totalDuration: number;\r\n}\r\n\r\nconst sampleWaveform = generateSampleWaveformData(100);\r\n\r\n/**\r\n * A waveform visualization component that displays audio data with interactive features.\r\n *\r\n * API:\r\n * - {@link WaveformProps}\r\n */\r\nexport function Waveform({\r\n data: waveformData,\r\n resolution = 2,\r\n startDuration,\r\n endDuration,\r\n currentTime = 0,\r\n showTimestamps = false,\r\n totalDuration,\r\n disabled,\r\n disabledMessage,\r\n onClick,\r\n \"data-testid\": testId,\r\n}: WaveformProps) {\r\n const { className } = useTheme();\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [processedWaveform, setProcessedWaveform] = useState<number[]>([]);\r\n const [hoverPosition, setHoverPosition] = useState<number | null>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [hasAnimated, setHasAnimated] = useState(false);\r\n\r\n const waveform = waveformData || sampleWaveform;\r\n\r\n const spacing = resolution;\r\n\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const processWaveform = (width: number) => {\r\n const numBars = Math.floor(width / (resolution + spacing));\r\n const processed = resampleData(waveform, numBars);\r\n setProcessedWaveform(processed);\r\n };\r\n\r\n const initialWidth = containerRef.current.clientWidth;\r\n processWaveform(initialWidth);\r\n\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n if (entries && entries[0]) {\r\n processWaveform(entries[0].contentRect.width);\r\n }\r\n });\r\n\r\n resizeObserver.observe(containerRef.current);\r\n\r\n return () => resizeObserver.disconnect();\r\n }, [waveform, resolution, spacing]);\r\n\r\n useEffect(() => {\r\n const visibilityTimer = setTimeout(() => setIsVisible(true), 50);\r\n const animationTimer = setTimeout(() => setHasAnimated(true), 500);\r\n\r\n return () => {\r\n clearTimeout(visibilityTimer);\r\n clearTimeout(animationTimer);\r\n };\r\n }, []);\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!containerRef.current) return;\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const position = (x / rect.width) * totalDuration;\r\n setHoverPosition(position);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setHoverPosition(null);\r\n };\r\n\r\n // Calculate the width of a single bar including spacing\r\n const barTotalWidth = resolution + spacing;\r\n\r\n // Find the nearest bar boundaries for start and end durations\r\n const getBarPosition = (time: number, direction: \"start\" | \"end\") => {\r\n const position = (time / totalDuration) * 100;\r\n const barIndex =\r\n direction === \"start\"\r\n ? Math.floor((position / 100) * processedWaveform.length)\r\n : Math.ceil((position / 100) * processedWaveform.length);\r\n\r\n return (\r\n ((barIndex * barTotalWidth) / containerRef.current?.clientWidth!) * 100\r\n );\r\n };\r\n\r\n const containerWidth = containerRef.current?.clientWidth;\r\n const waveformMessage = useMemo(() => {\r\n if (disabled && disabledMessage) return disabledMessage;\r\n if (!waveformData) return \"Waveform Unavailable\";\r\n\r\n return null;\r\n }, [disabled, disabledMessage, waveformData]);\r\n\r\n return (\r\n <div className={csx(\"proton-Waveform\", className)} data-testid={testId}>\r\n {showTimestamps && (\r\n <TimestampBlock direction=\"left\" seconds={currentTime} />\r\n )}\r\n <div\r\n ref={containerRef}\r\n className=\"proton-Waveform__container\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onClick={(e) => {\r\n if (!containerRef.current || disabled) return;\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const position = (x / rect.width) * totalDuration;\r\n onClick?.(position, e);\r\n }}\r\n data-disabled={disabled}\r\n data-testid=\"waveform-container\"\r\n >\r\n {startDuration !== undefined && endDuration !== undefined && (\r\n <div\r\n className=\"proton-Waveform__active-region\"\r\n style={{\r\n left: containerRef.current\r\n ? `calc(${getBarPosition(startDuration, \"start\")}%`\r\n : \"0%\",\r\n right: containerRef.current\r\n ? `calc(${100 - getBarPosition(endDuration, \"end\")}% - 2px)`\r\n : \"0%\",\r\n }}\r\n />\r\n )}\r\n {hoverPosition !== null && (\r\n <div\r\n className=\"proton-Waveform__hover-line\"\r\n style={{\r\n left: `${(hoverPosition / totalDuration) * 100}%`,\r\n }}\r\n />\r\n )}\r\n {processedWaveform.map((amplitude, index) => {\r\n const position = (index / processedWaveform.length) * totalDuration;\r\n const isBarOutsideActiveRegion =\r\n startDuration !== undefined &&\r\n endDuration !== undefined &&\r\n (position < startDuration || position > endDuration);\r\n const isPlayed = currentTime === 0 ? false : position <= currentTime;\r\n const isHovered = hoverPosition !== null && position <= hoverPosition;\r\n\r\n return (\r\n <WaveformBar\r\n key={index}\r\n amplitude={amplitude}\r\n isDisabled={disabled || isBarOutsideActiveRegion}\r\n isPlayed={isPlayed}\r\n isHovered={isHovered}\r\n isVisible={isVisible}\r\n hasAnimated={hasAnimated}\r\n resolution={resolution}\r\n spacing={spacing}\r\n index={index}\r\n />\r\n );\r\n })}\r\n </div>\r\n\r\n {waveformMessage && (\r\n <div\r\n className=\"proton-Waveform__bar-unavailable\"\r\n style={{\r\n fontSize: containerWidth < 325 ? \"0.85rem\" : \"1rem\",\r\n }}\r\n >\r\n {waveformMessage}\r\n </div>\r\n )}\r\n\r\n {showTimestamps && (\r\n <TimestampBlock direction=\"right\" seconds={totalDuration} />\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction TimestampBlock({\r\n direction,\r\n seconds,\r\n}: {\r\n direction: \"left\" | \"right\";\r\n seconds: number;\r\n}) {\r\n return (\r\n <div\r\n className={csx(\r\n \"proton-Waveform__timestamp\",\r\n `proton-Waveform__timestamp--${direction}`\r\n )}\r\n >\r\n {formatTimestamp(seconds)}\r\n </div>\r\n );\r\n}\r\n\r\n/** Formats seconds into MM:SS timestamp string\r\n * @param {number} seconds - Number of seconds to format\r\n * @returns {string} Formatted timestamp string in MM:SS format\r\n */\r\n\r\nfunction formatTimestamp(seconds: number) {\r\n const minutes = Math.floor(seconds / 60);\r\n const remainingSeconds = Math.floor(seconds % 60);\r\n return `${minutes}:${\r\n remainingSeconds < 10 ? \"0\" : \"\"\r\n }${remainingSeconds.toFixed(0)}`;\r\n}\r\n\r\n/** Takes an array of waveform data and rescales it to any length\r\n * @param {array} initialData - original waveform data\r\n * @param {number} finalArrayLength - How long do you want the returned array?\r\n * @param {number} height - Height of the waveform container\r\n */\r\n\r\nfunction resampleData(initialData: number[], finalArrayLength: number) {\r\n const initialArrayLength = initialData.length;\r\n // How many samples from the original data do we skip per new sample?\r\n const step = initialArrayLength / finalArrayLength;\r\n\r\n // Create new array with desired length\r\n const resampledData = new Array(finalArrayLength)\r\n .fill(0)\r\n .map((_, newIndex) => {\r\n // Calculate position in original array\r\n const position = newIndex * step;\r\n const leftIndex = Math.floor(position);\r\n const rightIndex = Math.min(leftIndex + 1, initialArrayLength - 1);\r\n\r\n // Calculate weights for interpolation\r\n const fraction = position - leftIndex;\r\n\r\n // Linear interpolation between adjacent samples\r\n const newVal =\r\n initialData[leftIndex] * (1 - fraction) +\r\n initialData[rightIndex] * fraction;\r\n\r\n return newVal;\r\n });\r\n\r\n return scaleData(resampledData);\r\n}\r\n\r\n/** Takes an array of waveform data and scales it based on the desired pixel height\r\n * @param {array} data – Array of waveform data\r\n * @param {number} height - Height of the waveform container\r\n */\r\nfunction scaleData(data: number[]) {\r\n const min = Math.min(...data);\r\n const max = Math.max(...data);\r\n\r\n return data.map((item) => {\r\n // Normalize to 0-1 range first\r\n const normalized = (item - min) / (max - min);\r\n // Then scale to desired height (using 0.1 as minimum to ensure visibility)\r\n return Math.max(normalized * 0.8 + 0.1, 0.1);\r\n });\r\n}\r\n\r\n/** Generates a sample sine wave waveform data array\r\n * @param {number} length - Length of the waveform data array\r\n * @returns {number[]} Array of normalized amplitude values (0-1) representing the waveform\r\n */\r\n\r\nfunction generateSampleWaveformData(length: number) {\r\n return Array.from({ length }, (_, i) => {\r\n const cycles = 6;\r\n // Create 3 complete cycles (6π total) starting at -π/2 (trough)\r\n const phase = (i / (length - 1)) * cycles * 2 * Math.PI - Math.PI / 2;\r\n return Math.sin(phase) * 0.5 + 0.5;\r\n });\r\n}\r\n"],"names":["sampleWaveform","generateSampleWaveformData","Waveform","waveformData","resolution","startDuration","endDuration","currentTime","showTimestamps","totalDuration","disabled","disabledMessage","onClick","testId","className","useTheme","containerRef","useRef","processedWaveform","setProcessedWaveform","useState","hoverPosition","setHoverPosition","isVisible","setIsVisible","hasAnimated","setHasAnimated","waveform","spacing","useEffect","processWaveform","width","numBars","processed","resampleData","initialWidth","resizeObserver","entries","visibilityTimer","animationTimer","handleMouseMove","e","rect","position","handleMouseLeave","barTotalWidth","getBarPosition","time","direction","_a","containerWidth","waveformMessage","useMemo","jsxs","csx","jsx","TimestampBlock","amplitude","index","isBarOutsideActiveRegion","isPlayed","isHovered","WaveformBar","seconds","formatTimestamp","minutes","remainingSeconds","initialData","finalArrayLength","initialArrayLength","step","resampledData","_","newIndex","leftIndex","rightIndex","fraction","scaleData","data","min","max","item","normalized","length","i","phase"],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { j as l } from "../../node_modules/react/jsx-runtime.es.js";
|
|
2
|
+
import { useRef as X, useState as g, useEffect as N, useMemo as F } from "react";
|
|
3
|
+
import { useTheme as U } from "../ThemeProvider.es.js";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { WaveformBar as q } from "./WaveformBar.es.js";
|
|
6
|
+
import { csx as T } from "../../utils/string.es.js";
|
|
7
|
+
const G = Y(100);
|
|
8
|
+
function ne({
|
|
9
|
+
data: e,
|
|
10
|
+
resolution: t = 2,
|
|
11
|
+
startDuration: o,
|
|
12
|
+
endDuration: a,
|
|
13
|
+
currentTime: m = 0,
|
|
14
|
+
showTimestamps: _ = !1,
|
|
15
|
+
totalDuration: f,
|
|
16
|
+
disabled: u,
|
|
17
|
+
disabledMessage: v,
|
|
18
|
+
onClick: h,
|
|
19
|
+
"data-testid": p
|
|
20
|
+
}) {
|
|
21
|
+
var I;
|
|
22
|
+
const { className: y } = U(), r = X(null), [x, $] = g([]), [W, b] = g(null), [A, z] = g(!1), [S, V] = g(!1), R = e || G, M = t;
|
|
23
|
+
N(() => {
|
|
24
|
+
if (!r.current) return;
|
|
25
|
+
const s = (i) => {
|
|
26
|
+
const d = Math.floor(i / (t + M)), j = K(R, d);
|
|
27
|
+
$(j);
|
|
28
|
+
}, n = r.current.clientWidth;
|
|
29
|
+
s(n);
|
|
30
|
+
const c = new ResizeObserver((i) => {
|
|
31
|
+
i && i[0] && s(i[0].contentRect.width);
|
|
32
|
+
});
|
|
33
|
+
return c.observe(r.current), () => c.disconnect();
|
|
34
|
+
}, [R, t, M]), N(() => {
|
|
35
|
+
const s = setTimeout(() => z(!0), 50), n = setTimeout(() => V(!0), 500);
|
|
36
|
+
return () => {
|
|
37
|
+
clearTimeout(s), clearTimeout(n);
|
|
38
|
+
};
|
|
39
|
+
}, []);
|
|
40
|
+
const H = (s) => {
|
|
41
|
+
if (!r.current) return;
|
|
42
|
+
const n = r.current.getBoundingClientRect(), i = (s.clientX - n.left) / n.width * f;
|
|
43
|
+
b(i);
|
|
44
|
+
}, O = () => {
|
|
45
|
+
b(null);
|
|
46
|
+
}, E = t + M, w = (s, n) => {
|
|
47
|
+
var d;
|
|
48
|
+
const c = s / f * 100;
|
|
49
|
+
return (n === "start" ? Math.floor(c / 100 * x.length) : Math.ceil(c / 100 * x.length)) * E / ((d = r.current) == null ? void 0 : d.clientWidth) * 100;
|
|
50
|
+
}, L = (I = r.current) == null ? void 0 : I.clientWidth, B = F(() => u && v ? v : e ? null : "Waveform Unavailable", [u, v, e]);
|
|
51
|
+
return /* @__PURE__ */ l.jsxs("div", { className: T("proton-Waveform", y), "data-testid": p, children: [
|
|
52
|
+
_ && /* @__PURE__ */ l.jsx(P, { direction: "left", seconds: m }),
|
|
53
|
+
/* @__PURE__ */ l.jsxs(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
ref: r,
|
|
57
|
+
className: "proton-Waveform__container",
|
|
58
|
+
onMouseMove: H,
|
|
59
|
+
onMouseLeave: O,
|
|
60
|
+
onClick: (s) => {
|
|
61
|
+
if (!r.current || u) return;
|
|
62
|
+
const n = r.current.getBoundingClientRect(), i = (s.clientX - n.left) / n.width * f;
|
|
63
|
+
h == null || h(i, s);
|
|
64
|
+
},
|
|
65
|
+
"data-disabled": u,
|
|
66
|
+
"data-testid": "waveform-container",
|
|
67
|
+
children: [
|
|
68
|
+
o !== void 0 && a !== void 0 && /* @__PURE__ */ l.jsx(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
className: "proton-Waveform__active-region",
|
|
72
|
+
style: {
|
|
73
|
+
left: r.current ? `calc(${w(o, "start")}%` : "0%",
|
|
74
|
+
right: r.current ? `calc(${100 - w(a, "end")}% - 2px)` : "0%"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
W !== null && /* @__PURE__ */ l.jsx(
|
|
79
|
+
"div",
|
|
80
|
+
{
|
|
81
|
+
className: "proton-Waveform__hover-line",
|
|
82
|
+
style: {
|
|
83
|
+
left: `${W / f * 100}%`
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
x.map((s, n) => {
|
|
88
|
+
const c = n / x.length * f, i = o !== void 0 && a !== void 0 && (c < o || c > a), d = m === 0 ? !1 : c <= m, j = W !== null && c <= W;
|
|
89
|
+
return /* @__PURE__ */ l.jsx(
|
|
90
|
+
q,
|
|
91
|
+
{
|
|
92
|
+
amplitude: s,
|
|
93
|
+
isDisabled: u || i,
|
|
94
|
+
isPlayed: d,
|
|
95
|
+
isHovered: j,
|
|
96
|
+
isVisible: A,
|
|
97
|
+
hasAnimated: S,
|
|
98
|
+
resolution: t,
|
|
99
|
+
spacing: M,
|
|
100
|
+
index: n
|
|
101
|
+
},
|
|
102
|
+
n
|
|
103
|
+
);
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
B && /* @__PURE__ */ l.jsx(
|
|
109
|
+
"div",
|
|
110
|
+
{
|
|
111
|
+
className: "proton-Waveform__bar-unavailable",
|
|
112
|
+
style: {
|
|
113
|
+
fontSize: L < 325 ? "0.85rem" : "1rem"
|
|
114
|
+
},
|
|
115
|
+
children: B
|
|
116
|
+
}
|
|
117
|
+
),
|
|
118
|
+
_ && /* @__PURE__ */ l.jsx(P, { direction: "right", seconds: f })
|
|
119
|
+
] });
|
|
120
|
+
}
|
|
121
|
+
function P({
|
|
122
|
+
direction: e,
|
|
123
|
+
seconds: t
|
|
124
|
+
}) {
|
|
125
|
+
return /* @__PURE__ */ l.jsx(
|
|
126
|
+
"div",
|
|
127
|
+
{
|
|
128
|
+
className: T(
|
|
129
|
+
"proton-Waveform__timestamp",
|
|
130
|
+
`proton-Waveform__timestamp--${e}`
|
|
131
|
+
),
|
|
132
|
+
children: J(t)
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
function J(e) {
|
|
137
|
+
const t = Math.floor(e / 60), o = Math.floor(e % 60);
|
|
138
|
+
return `${t}:${o < 10 ? "0" : ""}${o.toFixed(0)}`;
|
|
139
|
+
}
|
|
140
|
+
function K(e, t) {
|
|
141
|
+
const o = e.length, a = o / t, m = new Array(t).fill(0).map((_, f) => {
|
|
142
|
+
const u = f * a, v = Math.floor(u), h = Math.min(v + 1, o - 1), p = u - v;
|
|
143
|
+
return e[v] * (1 - p) + e[h] * p;
|
|
144
|
+
});
|
|
145
|
+
return Q(m);
|
|
146
|
+
}
|
|
147
|
+
function Q(e) {
|
|
148
|
+
const t = Math.min(...e), o = Math.max(...e);
|
|
149
|
+
return e.map((a) => {
|
|
150
|
+
const m = (a - t) / (o - t);
|
|
151
|
+
return Math.max(m * 0.8 + 0.1, 0.1);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function Y(e) {
|
|
155
|
+
return Array.from({ length: e }, (t, o) => {
|
|
156
|
+
const m = o / (e - 1) * 6 * 2 * Math.PI - Math.PI / 2;
|
|
157
|
+
return Math.sin(m) * 0.5 + 0.5;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
export {
|
|
161
|
+
ne as Waveform
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=Waveform.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Waveform.es.js","sources":["../../../src/components/Waveform/Waveform.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { csx } from \"../../utils\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport \"./Waveform.css\";\r\nimport { WaveformBar } from \"./WaveformBar\";\r\n\r\nexport interface WaveformProps {\r\n /**\r\n * Array of normalized amplitude values (0-1) representing the waveform.\r\n * If not provided, uses a sample sine wave.\r\n */\r\n data?: number[];\r\n\r\n /**\r\n * Current playback position in seconds.\r\n */\r\n currentTime?: number;\r\n\r\n /**\r\n * Test ID for testing purposes.\r\n */\r\n \"data-testid\"?: string;\r\n\r\n /**\r\n * Whether the entire waveform is disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Reason for the waveform being disabled.\r\n */\r\n disabledMessage?: string;\r\n\r\n /**\r\n * End time to display until in seconds.\r\n */\r\n endDuration?: number;\r\n\r\n /**\r\n * Click handler that receives the clicked position (0-1) and event.\r\n */\r\n onClick?: (position: number, e: React.MouseEvent<HTMLDivElement>) => void;\r\n\r\n /**\r\n * Width in pixels of each waveform bar.\r\n */\r\n resolution?: number;\r\n\r\n /**\r\n * Whether to show timestamp markers.\r\n */\r\n showTimestamps?: boolean;\r\n\r\n /**\r\n * Start time to display from in seconds.\r\n */\r\n startDuration?: number;\r\n\r\n /**\r\n * Total duration of the audio in seconds.\r\n */\r\n totalDuration: number;\r\n}\r\n\r\nconst sampleWaveform = generateSampleWaveformData(100);\r\n\r\n/**\r\n * A waveform visualization component that displays audio data with interactive features.\r\n *\r\n * API:\r\n * - {@link WaveformProps}\r\n */\r\nexport function Waveform({\r\n data: waveformData,\r\n resolution = 2,\r\n startDuration,\r\n endDuration,\r\n currentTime = 0,\r\n showTimestamps = false,\r\n totalDuration,\r\n disabled,\r\n disabledMessage,\r\n onClick,\r\n \"data-testid\": testId,\r\n}: WaveformProps) {\r\n const { className } = useTheme();\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [processedWaveform, setProcessedWaveform] = useState<number[]>([]);\r\n const [hoverPosition, setHoverPosition] = useState<number | null>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [hasAnimated, setHasAnimated] = useState(false);\r\n\r\n const waveform = waveformData || sampleWaveform;\r\n\r\n const spacing = resolution;\r\n\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const processWaveform = (width: number) => {\r\n const numBars = Math.floor(width / (resolution + spacing));\r\n const processed = resampleData(waveform, numBars);\r\n setProcessedWaveform(processed);\r\n };\r\n\r\n const initialWidth = containerRef.current.clientWidth;\r\n processWaveform(initialWidth);\r\n\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n if (entries && entries[0]) {\r\n processWaveform(entries[0].contentRect.width);\r\n }\r\n });\r\n\r\n resizeObserver.observe(containerRef.current);\r\n\r\n return () => resizeObserver.disconnect();\r\n }, [waveform, resolution, spacing]);\r\n\r\n useEffect(() => {\r\n const visibilityTimer = setTimeout(() => setIsVisible(true), 50);\r\n const animationTimer = setTimeout(() => setHasAnimated(true), 500);\r\n\r\n return () => {\r\n clearTimeout(visibilityTimer);\r\n clearTimeout(animationTimer);\r\n };\r\n }, []);\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!containerRef.current) return;\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const position = (x / rect.width) * totalDuration;\r\n setHoverPosition(position);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setHoverPosition(null);\r\n };\r\n\r\n // Calculate the width of a single bar including spacing\r\n const barTotalWidth = resolution + spacing;\r\n\r\n // Find the nearest bar boundaries for start and end durations\r\n const getBarPosition = (time: number, direction: \"start\" | \"end\") => {\r\n const position = (time / totalDuration) * 100;\r\n const barIndex =\r\n direction === \"start\"\r\n ? Math.floor((position / 100) * processedWaveform.length)\r\n : Math.ceil((position / 100) * processedWaveform.length);\r\n\r\n return (\r\n ((barIndex * barTotalWidth) / containerRef.current?.clientWidth!) * 100\r\n );\r\n };\r\n\r\n const containerWidth = containerRef.current?.clientWidth;\r\n const waveformMessage = useMemo(() => {\r\n if (disabled && disabledMessage) return disabledMessage;\r\n if (!waveformData) return \"Waveform Unavailable\";\r\n\r\n return null;\r\n }, [disabled, disabledMessage, waveformData]);\r\n\r\n return (\r\n <div className={csx(\"proton-Waveform\", className)} data-testid={testId}>\r\n {showTimestamps && (\r\n <TimestampBlock direction=\"left\" seconds={currentTime} />\r\n )}\r\n <div\r\n ref={containerRef}\r\n className=\"proton-Waveform__container\"\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n onClick={(e) => {\r\n if (!containerRef.current || disabled) return;\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const position = (x / rect.width) * totalDuration;\r\n onClick?.(position, e);\r\n }}\r\n data-disabled={disabled}\r\n data-testid=\"waveform-container\"\r\n >\r\n {startDuration !== undefined && endDuration !== undefined && (\r\n <div\r\n className=\"proton-Waveform__active-region\"\r\n style={{\r\n left: containerRef.current\r\n ? `calc(${getBarPosition(startDuration, \"start\")}%`\r\n : \"0%\",\r\n right: containerRef.current\r\n ? `calc(${100 - getBarPosition(endDuration, \"end\")}% - 2px)`\r\n : \"0%\",\r\n }}\r\n />\r\n )}\r\n {hoverPosition !== null && (\r\n <div\r\n className=\"proton-Waveform__hover-line\"\r\n style={{\r\n left: `${(hoverPosition / totalDuration) * 100}%`,\r\n }}\r\n />\r\n )}\r\n {processedWaveform.map((amplitude, index) => {\r\n const position = (index / processedWaveform.length) * totalDuration;\r\n const isBarOutsideActiveRegion =\r\n startDuration !== undefined &&\r\n endDuration !== undefined &&\r\n (position < startDuration || position > endDuration);\r\n const isPlayed = currentTime === 0 ? false : position <= currentTime;\r\n const isHovered = hoverPosition !== null && position <= hoverPosition;\r\n\r\n return (\r\n <WaveformBar\r\n key={index}\r\n amplitude={amplitude}\r\n isDisabled={disabled || isBarOutsideActiveRegion}\r\n isPlayed={isPlayed}\r\n isHovered={isHovered}\r\n isVisible={isVisible}\r\n hasAnimated={hasAnimated}\r\n resolution={resolution}\r\n spacing={spacing}\r\n index={index}\r\n />\r\n );\r\n })}\r\n </div>\r\n\r\n {waveformMessage && (\r\n <div\r\n className=\"proton-Waveform__bar-unavailable\"\r\n style={{\r\n fontSize: containerWidth < 325 ? \"0.85rem\" : \"1rem\",\r\n }}\r\n >\r\n {waveformMessage}\r\n </div>\r\n )}\r\n\r\n {showTimestamps && (\r\n <TimestampBlock direction=\"right\" seconds={totalDuration} />\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction TimestampBlock({\r\n direction,\r\n seconds,\r\n}: {\r\n direction: \"left\" | \"right\";\r\n seconds: number;\r\n}) {\r\n return (\r\n <div\r\n className={csx(\r\n \"proton-Waveform__timestamp\",\r\n `proton-Waveform__timestamp--${direction}`\r\n )}\r\n >\r\n {formatTimestamp(seconds)}\r\n </div>\r\n );\r\n}\r\n\r\n/** Formats seconds into MM:SS timestamp string\r\n * @param {number} seconds - Number of seconds to format\r\n * @returns {string} Formatted timestamp string in MM:SS format\r\n */\r\n\r\nfunction formatTimestamp(seconds: number) {\r\n const minutes = Math.floor(seconds / 60);\r\n const remainingSeconds = Math.floor(seconds % 60);\r\n return `${minutes}:${\r\n remainingSeconds < 10 ? \"0\" : \"\"\r\n }${remainingSeconds.toFixed(0)}`;\r\n}\r\n\r\n/** Takes an array of waveform data and rescales it to any length\r\n * @param {array} initialData - original waveform data\r\n * @param {number} finalArrayLength - How long do you want the returned array?\r\n * @param {number} height - Height of the waveform container\r\n */\r\n\r\nfunction resampleData(initialData: number[], finalArrayLength: number) {\r\n const initialArrayLength = initialData.length;\r\n // How many samples from the original data do we skip per new sample?\r\n const step = initialArrayLength / finalArrayLength;\r\n\r\n // Create new array with desired length\r\n const resampledData = new Array(finalArrayLength)\r\n .fill(0)\r\n .map((_, newIndex) => {\r\n // Calculate position in original array\r\n const position = newIndex * step;\r\n const leftIndex = Math.floor(position);\r\n const rightIndex = Math.min(leftIndex + 1, initialArrayLength - 1);\r\n\r\n // Calculate weights for interpolation\r\n const fraction = position - leftIndex;\r\n\r\n // Linear interpolation between adjacent samples\r\n const newVal =\r\n initialData[leftIndex] * (1 - fraction) +\r\n initialData[rightIndex] * fraction;\r\n\r\n return newVal;\r\n });\r\n\r\n return scaleData(resampledData);\r\n}\r\n\r\n/** Takes an array of waveform data and scales it based on the desired pixel height\r\n * @param {array} data – Array of waveform data\r\n * @param {number} height - Height of the waveform container\r\n */\r\nfunction scaleData(data: number[]) {\r\n const min = Math.min(...data);\r\n const max = Math.max(...data);\r\n\r\n return data.map((item) => {\r\n // Normalize to 0-1 range first\r\n const normalized = (item - min) / (max - min);\r\n // Then scale to desired height (using 0.1 as minimum to ensure visibility)\r\n return Math.max(normalized * 0.8 + 0.1, 0.1);\r\n });\r\n}\r\n\r\n/** Generates a sample sine wave waveform data array\r\n * @param {number} length - Length of the waveform data array\r\n * @returns {number[]} Array of normalized amplitude values (0-1) representing the waveform\r\n */\r\n\r\nfunction generateSampleWaveformData(length: number) {\r\n return Array.from({ length }, (_, i) => {\r\n const cycles = 6;\r\n // Create 3 complete cycles (6π total) starting at -π/2 (trough)\r\n const phase = (i / (length - 1)) * cycles * 2 * Math.PI - Math.PI / 2;\r\n return Math.sin(phase) * 0.5 + 0.5;\r\n });\r\n}\r\n"],"names":["sampleWaveform","generateSampleWaveformData","Waveform","waveformData","resolution","startDuration","endDuration","currentTime","showTimestamps","totalDuration","disabled","disabledMessage","onClick","testId","className","useTheme","containerRef","useRef","processedWaveform","setProcessedWaveform","useState","hoverPosition","setHoverPosition","isVisible","setIsVisible","hasAnimated","setHasAnimated","waveform","spacing","useEffect","processWaveform","width","numBars","processed","resampleData","initialWidth","resizeObserver","entries","visibilityTimer","animationTimer","handleMouseMove","e","rect","position","handleMouseLeave","barTotalWidth","getBarPosition","time","direction","_a","containerWidth","waveformMessage","useMemo","jsxs","csx","jsx","TimestampBlock","amplitude","index","isBarOutsideActiveRegion","isPlayed","isHovered","WaveformBar","seconds","formatTimestamp","minutes","remainingSeconds","initialData","finalArrayLength","initialArrayLength","step","resampledData","newIndex","leftIndex","rightIndex","fraction","scaleData","data","min","max","item","normalized","length","_","i","phase"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../node_modules/react/jsx-runtime.cjs.js"),n=require("../../utils/string.cjs.js");function x({amplitude:_,isDisabled:o,isPlayed:e,isHovered:p,isVisible:a,hasAnimated:m,resolution:v,spacing:i,index:s}){const t=a?`${Math.max(_*100,4)}%`:"0%";return r.jsxRuntimeExports.jsxs("div",{className:n.csx("proton-Waveform__bar-wrapper"),style:{width:`${v}px`,marginRight:`${i}px`},children:[r.jsxRuntimeExports.jsx("div",{className:n.csx("proton-Waveform__bar","proton-Waveform__bar--upper",o&&"proton-Waveform__bar--disabled",e&&"proton-Waveform__bar--played",a&&"proton-Waveform__bar--visible",m&&"proton-Waveform__bar--animated"),style:{"--target-height":`calc(${t} / 2)`,"--index":s}}),r.jsxRuntimeExports.jsx("div",{className:n.csx("proton-Waveform__bar","proton-Waveform__bar--lower",o&&"proton-Waveform__bar--disabled",e&&"proton-Waveform__bar--played",a&&"proton-Waveform__bar--visible",m&&"proton-Waveform__bar--animated"),style:{"--target-height":`calc(${t} / 2)`,"--index":s}}),p&&!o&&!e&&r.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__bar--hover",style:{"--hover-height":t}})]})}exports.WaveformBar=x;
|
|
2
|
+
//# sourceMappingURL=WaveformBar.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaveformBar.cjs.js","sources":["../../../src/components/Waveform/WaveformBar.tsx"],"sourcesContent":["import { csx } from \"../../utils\";\r\n\r\ninterface WaveformBarProps {\r\n amplitude: number;\r\n isDisabled: boolean;\r\n isPlayed: boolean;\r\n isHovered: boolean;\r\n isVisible: boolean;\r\n hasAnimated: boolean;\r\n resolution: number;\r\n spacing: number;\r\n index: number;\r\n}\r\n\r\nexport function WaveformBar({\r\n amplitude,\r\n isDisabled,\r\n isPlayed,\r\n isHovered,\r\n isVisible,\r\n hasAnimated,\r\n resolution,\r\n spacing,\r\n index,\r\n}: WaveformBarProps) {\r\n const barHeight = isVisible ? `${Math.max(amplitude * 100, 4)}%` : \"0%\";\r\n\r\n return (\r\n <div\r\n className={csx(\"proton-Waveform__bar-wrapper\")}\r\n style={{\r\n width: `${resolution}px`,\r\n marginRight: `${spacing}px`,\r\n }}\r\n >\r\n <div\r\n className={csx(\r\n \"proton-Waveform__bar\",\r\n \"proton-Waveform__bar--upper\",\r\n isDisabled && \"proton-Waveform__bar--disabled\",\r\n isPlayed && \"proton-Waveform__bar--played\",\r\n isVisible && \"proton-Waveform__bar--visible\",\r\n hasAnimated && \"proton-Waveform__bar--animated\"\r\n )}\r\n style={\r\n {\r\n \"--target-height\": `calc(${barHeight} / 2)`,\r\n \"--index\": index,\r\n } as React.CSSProperties\r\n }\r\n />\r\n <div\r\n className={csx(\r\n \"proton-Waveform__bar\",\r\n \"proton-Waveform__bar--lower\",\r\n isDisabled && \"proton-Waveform__bar--disabled\",\r\n isPlayed && \"proton-Waveform__bar--played\",\r\n isVisible && \"proton-Waveform__bar--visible\",\r\n hasAnimated && \"proton-Waveform__bar--animated\"\r\n )}\r\n style={\r\n {\r\n \"--target-height\": `calc(${barHeight} / 2)`,\r\n \"--index\": index,\r\n } as React.CSSProperties\r\n }\r\n />\r\n {isHovered && !isDisabled && !isPlayed && (\r\n <div\r\n className=\"proton-Waveform__bar--hover\"\r\n style={\r\n {\r\n \"--hover-height\": barHeight,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["WaveformBar","amplitude","isDisabled","isPlayed","isHovered","isVisible","hasAnimated","resolution","spacing","index","barHeight","jsxs","csx","jsx"],"mappings":"sLAcO,SAASA,EAAY,CAC1B,UAAAC,EACA,WAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,YAAAC,EACA,WAAAC,EACA,QAAAC,EACA,MAAAC,CACF,EAAqB,CACb,MAAAC,EAAYL,EAAY,GAAG,KAAK,IAAIJ,EAAY,IAAK,CAAC,CAAC,IAAM,KAGjE,OAAAU,EAAA,kBAAA,KAAC,MAAA,CACC,UAAWC,MAAI,8BAA8B,EAC7C,MAAO,CACL,MAAO,GAAGL,CAAU,KACpB,YAAa,GAAGC,CAAO,IACzB,EAEA,SAAA,CAAAK,EAAA,kBAAA,IAAC,MAAA,CACC,UAAWD,EAAA,IACT,uBACA,8BACAV,GAAc,iCACdC,GAAY,+BACZE,GAAa,gCACbC,GAAe,gCACjB,EACA,MACE,CACE,kBAAmB,QAAQI,CAAS,QACpC,UAAWD,CACb,CAAA,CAEJ,EACAI,EAAA,kBAAA,IAAC,MAAA,CACC,UAAWD,EAAA,IACT,uBACA,8BACAV,GAAc,iCACdC,GAAY,+BACZE,GAAa,gCACbC,GAAe,gCACjB,EACA,MACE,CACE,kBAAmB,QAAQI,CAAS,QACpC,UAAWD,CACb,CAAA,CAEJ,EACCL,GAAa,CAACF,GAAc,CAACC,GAC5BU,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,8BACV,MACE,CACE,iBAAkBH,CACpB,CAAA,CAEJ,CAAA,CAAA,CAAA,CAIR"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { j as r } from "../../node_modules/react/jsx-runtime.es.js";
|
|
2
|
+
import { csx as _ } from "../../utils/string.es.js";
|
|
3
|
+
function c({
|
|
4
|
+
amplitude: n,
|
|
5
|
+
isDisabled: o,
|
|
6
|
+
isPlayed: a,
|
|
7
|
+
isHovered: v,
|
|
8
|
+
isVisible: e,
|
|
9
|
+
hasAnimated: m,
|
|
10
|
+
resolution: f,
|
|
11
|
+
spacing: b,
|
|
12
|
+
index: p
|
|
13
|
+
}) {
|
|
14
|
+
const t = e ? `${Math.max(n * 100, 4)}%` : "0%";
|
|
15
|
+
return /* @__PURE__ */ r.jsxs(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
className: _("proton-Waveform__bar-wrapper"),
|
|
19
|
+
style: {
|
|
20
|
+
width: `${f}px`,
|
|
21
|
+
marginRight: `${b}px`
|
|
22
|
+
},
|
|
23
|
+
children: [
|
|
24
|
+
/* @__PURE__ */ r.jsx(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
className: _(
|
|
28
|
+
"proton-Waveform__bar",
|
|
29
|
+
"proton-Waveform__bar--upper",
|
|
30
|
+
o && "proton-Waveform__bar--disabled",
|
|
31
|
+
a && "proton-Waveform__bar--played",
|
|
32
|
+
e && "proton-Waveform__bar--visible",
|
|
33
|
+
m && "proton-Waveform__bar--animated"
|
|
34
|
+
),
|
|
35
|
+
style: {
|
|
36
|
+
"--target-height": `calc(${t} / 2)`,
|
|
37
|
+
"--index": p
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ r.jsx(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: _(
|
|
45
|
+
"proton-Waveform__bar",
|
|
46
|
+
"proton-Waveform__bar--lower",
|
|
47
|
+
o && "proton-Waveform__bar--disabled",
|
|
48
|
+
a && "proton-Waveform__bar--played",
|
|
49
|
+
e && "proton-Waveform__bar--visible",
|
|
50
|
+
m && "proton-Waveform__bar--animated"
|
|
51
|
+
),
|
|
52
|
+
style: {
|
|
53
|
+
"--target-height": `calc(${t} / 2)`,
|
|
54
|
+
"--index": p
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
v && !o && !a && /* @__PURE__ */ r.jsx(
|
|
59
|
+
"div",
|
|
60
|
+
{
|
|
61
|
+
className: "proton-Waveform__bar--hover",
|
|
62
|
+
style: {
|
|
63
|
+
"--hover-height": t
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
export {
|
|
72
|
+
c as WaveformBar
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=WaveformBar.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaveformBar.es.js","sources":["../../../src/components/Waveform/WaveformBar.tsx"],"sourcesContent":["import { csx } from \"../../utils\";\r\n\r\ninterface WaveformBarProps {\r\n amplitude: number;\r\n isDisabled: boolean;\r\n isPlayed: boolean;\r\n isHovered: boolean;\r\n isVisible: boolean;\r\n hasAnimated: boolean;\r\n resolution: number;\r\n spacing: number;\r\n index: number;\r\n}\r\n\r\nexport function WaveformBar({\r\n amplitude,\r\n isDisabled,\r\n isPlayed,\r\n isHovered,\r\n isVisible,\r\n hasAnimated,\r\n resolution,\r\n spacing,\r\n index,\r\n}: WaveformBarProps) {\r\n const barHeight = isVisible ? `${Math.max(amplitude * 100, 4)}%` : \"0%\";\r\n\r\n return (\r\n <div\r\n className={csx(\"proton-Waveform__bar-wrapper\")}\r\n style={{\r\n width: `${resolution}px`,\r\n marginRight: `${spacing}px`,\r\n }}\r\n >\r\n <div\r\n className={csx(\r\n \"proton-Waveform__bar\",\r\n \"proton-Waveform__bar--upper\",\r\n isDisabled && \"proton-Waveform__bar--disabled\",\r\n isPlayed && \"proton-Waveform__bar--played\",\r\n isVisible && \"proton-Waveform__bar--visible\",\r\n hasAnimated && \"proton-Waveform__bar--animated\"\r\n )}\r\n style={\r\n {\r\n \"--target-height\": `calc(${barHeight} / 2)`,\r\n \"--index\": index,\r\n } as React.CSSProperties\r\n }\r\n />\r\n <div\r\n className={csx(\r\n \"proton-Waveform__bar\",\r\n \"proton-Waveform__bar--lower\",\r\n isDisabled && \"proton-Waveform__bar--disabled\",\r\n isPlayed && \"proton-Waveform__bar--played\",\r\n isVisible && \"proton-Waveform__bar--visible\",\r\n hasAnimated && \"proton-Waveform__bar--animated\"\r\n )}\r\n style={\r\n {\r\n \"--target-height\": `calc(${barHeight} / 2)`,\r\n \"--index\": index,\r\n } as React.CSSProperties\r\n }\r\n />\r\n {isHovered && !isDisabled && !isPlayed && (\r\n <div\r\n className=\"proton-Waveform__bar--hover\"\r\n style={\r\n {\r\n \"--hover-height\": barHeight,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["WaveformBar","amplitude","isDisabled","isPlayed","isHovered","isVisible","hasAnimated","resolution","spacing","index","barHeight","jsxs","csx","jsx"],"mappings":";;AAcO,SAASA,EAAY;AAAA,EAC1B,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AACF,GAAqB;AACb,QAAAC,IAAYL,IAAY,GAAG,KAAK,IAAIJ,IAAY,KAAK,CAAC,CAAC,MAAM;AAGjE,SAAAU,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAI,8BAA8B;AAAA,MAC7C,OAAO;AAAA,QACL,OAAO,GAAGL,CAAU;AAAA,QACpB,aAAa,GAAGC,CAAO;AAAA,MACzB;AAAA,MAEA,UAAA;AAAA,QAAAK,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACA;AAAA,cACAV,KAAc;AAAA,cACdC,KAAY;AAAA,cACZE,KAAa;AAAA,cACbC,KAAe;AAAA,YACjB;AAAA,YACA,OACE;AAAA,cACE,mBAAmB,QAAQI,CAAS;AAAA,cACpC,WAAWD;AAAA,YACb;AAAA,UAAA;AAAA,QAEJ;AAAA,QACAI,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACA;AAAA,cACAV,KAAc;AAAA,cACdC,KAAY;AAAA,cACZE,KAAa;AAAA,cACbC,KAAe;AAAA,YACjB;AAAA,YACA,OACE;AAAA,cACE,mBAAmB,QAAQI,CAAS;AAAA,cACpC,WAAWD;AAAA,YACb;AAAA,UAAA;AAAA,QAEJ;AAAA,QACCL,KAAa,CAACF,KAAc,CAACC,KAC5BU,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OACE;AAAA,cACE,kBAAkBH;AAAA,YACpB;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoint.cjs.js","sources":["../../src/constants/breakpoint.ts"],"sourcesContent":["export const BREAKPOINTS = {\r\n SMALL: 576,\r\n MEDIUM: 768,\r\n LARGE: 992,\r\n X_LARGE: 1200,\r\n};\r\n\r\nexport type Breakpoint = (typeof BREAKPOINTS)[keyof typeof BREAKPOINTS];\r\n"],"names":["BREAKPOINTS"],"mappings":"gFAAO,MAAMA,EAAc,CACzB,MAAO,IACP,OAAQ,IACR,MAAO,IACP,QAAS,IACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoint.es.js","sources":["../../src/constants/breakpoint.ts"],"sourcesContent":["export const BREAKPOINTS = {\r\n SMALL: 576,\r\n MEDIUM: 768,\r\n LARGE: 992,\r\n X_LARGE: 1200,\r\n};\r\n\r\nexport type Breakpoint = (typeof BREAKPOINTS)[keyof typeof BREAKPOINTS];\r\n"],"names":["BREAKPOINTS"],"mappings":"AAAO,MAAMA,IAAc;AAAA,EACzB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AACX;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=["bottom","bottom left","bottom right","bottom start","bottom end","top","top left","top right","top start","top end","left","left top","left bottom","start","start top","start bottom","right","right top","right bottom","end","end top","end bottom"];exports.placements=t;
|
|
2
|
+
//# sourceMappingURL=placement.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placement.cjs.js","sources":["../../src/constants/placement.ts"],"sourcesContent":["import { Placement } from \"react-aria\";\r\n\r\nexport const placements: Placement[] = [\r\n \"bottom\",\r\n \"bottom left\",\r\n \"bottom right\",\r\n \"bottom start\",\r\n \"bottom end\",\r\n \"top\",\r\n \"top left\",\r\n \"top right\",\r\n \"top start\",\r\n \"top end\",\r\n \"left\",\r\n \"left top\",\r\n \"left bottom\",\r\n \"start\",\r\n \"start top\",\r\n \"start bottom\",\r\n \"right\",\r\n \"right top\",\r\n \"right bottom\",\r\n \"end\",\r\n \"end top\",\r\n \"end bottom\",\r\n];\r\n"],"names":["placements"],"mappings":"gFAEO,MAAMA,EAA0B,CACrC,SACA,cACA,eACA,eACA,aACA,MACA,WACA,YACA,YACA,UACA,OACA,WACA,cACA,QACA,YACA,eACA,QACA,YACA,eACA,MACA,UACA,YACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const t = [
|
|
2
|
+
"bottom",
|
|
3
|
+
"bottom left",
|
|
4
|
+
"bottom right",
|
|
5
|
+
"bottom start",
|
|
6
|
+
"bottom end",
|
|
7
|
+
"top",
|
|
8
|
+
"top left",
|
|
9
|
+
"top right",
|
|
10
|
+
"top start",
|
|
11
|
+
"top end",
|
|
12
|
+
"left",
|
|
13
|
+
"left top",
|
|
14
|
+
"left bottom",
|
|
15
|
+
"start",
|
|
16
|
+
"start top",
|
|
17
|
+
"start bottom",
|
|
18
|
+
"right",
|
|
19
|
+
"right top",
|
|
20
|
+
"right bottom",
|
|
21
|
+
"end",
|
|
22
|
+
"end top",
|
|
23
|
+
"end bottom"
|
|
24
|
+
];
|
|
25
|
+
export {
|
|
26
|
+
t as placements
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=placement.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placement.es.js","sources":["../../src/constants/placement.ts"],"sourcesContent":["import { Placement } from \"react-aria\";\r\n\r\nexport const placements: Placement[] = [\r\n \"bottom\",\r\n \"bottom left\",\r\n \"bottom right\",\r\n \"bottom start\",\r\n \"bottom end\",\r\n \"top\",\r\n \"top left\",\r\n \"top right\",\r\n \"top start\",\r\n \"top end\",\r\n \"left\",\r\n \"left top\",\r\n \"left bottom\",\r\n \"start\",\r\n \"start top\",\r\n \"start bottom\",\r\n \"right\",\r\n \"right top\",\r\n \"right bottom\",\r\n \"end\",\r\n \"end top\",\r\n \"end bottom\",\r\n];\r\n"],"names":["placements"],"mappings":"AAEO,MAAMA,IAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
|
package/dist/constants.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./constants/breakpoint.cjs.js"),t=require("./constants/placement.cjs.js");exports.BREAKPOINTS=e.BREAKPOINTS;exports.placements=t.placements;
|
|
2
2
|
//# sourceMappingURL=constants.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs.js","sources":[
|
|
1
|
+
{"version":3,"file":"constants.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/constants.es.js
CHANGED
|
@@ -1,30 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
"bottom",
|
|
4
|
-
"bottom left",
|
|
5
|
-
"bottom right",
|
|
6
|
-
"bottom start",
|
|
7
|
-
"bottom end",
|
|
8
|
-
"top",
|
|
9
|
-
"top left",
|
|
10
|
-
"top right",
|
|
11
|
-
"top start",
|
|
12
|
-
"top end",
|
|
13
|
-
"left",
|
|
14
|
-
"left top",
|
|
15
|
-
"left bottom",
|
|
16
|
-
"start",
|
|
17
|
-
"start top",
|
|
18
|
-
"start bottom",
|
|
19
|
-
"right",
|
|
20
|
-
"right top",
|
|
21
|
-
"right bottom",
|
|
22
|
-
"end",
|
|
23
|
-
"end top",
|
|
24
|
-
"end bottom"
|
|
25
|
-
];
|
|
1
|
+
import { BREAKPOINTS as r } from "./constants/breakpoint.es.js";
|
|
2
|
+
import { placements as p } from "./constants/placement.es.js";
|
|
26
3
|
export {
|
|
27
4
|
r as BREAKPOINTS,
|
|
28
|
-
|
|
5
|
+
p as placements
|
|
29
6
|
};
|
|
30
7
|
//# sourceMappingURL=constants.es.js.map
|
package/dist/constants.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.es.js","sources":[
|
|
1
|
+
{"version":3,"file":"constants.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
package/dist/dark.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("./design/darkTheme/colors.cjs.js"),E=require("./design/darkTheme/stylesheet.cjs.js");exports.DARK_BORDER=A.BORDER;exports.DARK_ELEVATION=A.ELEVATION;exports.DARK_GRAYSCALE=A.DARK_GRAYSCALE;exports.DARK_PALETTE=A.DARK_PALETTE;exports.DARK_SECONDARY=A.DARK_SECONDARY;exports.DARK_STYLESHEET=E.DARK_STYLESHEET;
|
|
2
2
|
//# sourceMappingURL=dark.cjs.js.map
|
package/dist/dark.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dark.cjs.js","sources":[
|
|
1
|
+
{"version":3,"file":"dark.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|