@os-design/core 1.0.254 → 1.0.255
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/dist/cjs/Alert/index.js +5 -5
- package/dist/cjs/Alert/index.js.map +1 -1
- package/dist/cjs/Avatar/index.js +5 -5
- package/dist/cjs/Avatar/index.js.map +1 -1
- package/dist/cjs/AvatarSkeleton/index.js +5 -5
- package/dist/cjs/AvatarSkeleton/index.js.map +1 -1
- package/dist/cjs/Badge/index.js +9 -9
- package/dist/cjs/Badge/index.js.map +1 -1
- package/dist/cjs/Breadcrumb/index.js +7 -7
- package/dist/cjs/Breadcrumb/index.js.map +1 -1
- package/dist/cjs/BreadcrumbItem/index.js +5 -5
- package/dist/cjs/BreadcrumbItem/index.js.map +1 -1
- package/dist/cjs/Button/ButtonContent.js +2 -2
- package/dist/cjs/Button/ButtonContent.js.map +1 -1
- package/dist/cjs/Button/index.js +5 -5
- package/dist/cjs/Button/index.js.map +1 -1
- package/dist/cjs/ButtonLink/index.js +5 -5
- package/dist/cjs/ButtonLink/index.js.map +1 -1
- package/dist/cjs/Checkbox/index.js +9 -9
- package/dist/cjs/Checkbox/index.js.map +1 -1
- package/dist/cjs/CheckboxSkeleton/index.js +5 -5
- package/dist/cjs/CheckboxSkeleton/index.js.map +1 -1
- package/dist/cjs/DatePicker/DatePickerCalendar.js +8 -8
- package/dist/cjs/DatePicker/DatePickerCalendar.js.map +1 -1
- package/dist/cjs/DatePicker/index.js +9 -9
- package/dist/cjs/DatePicker/index.js.map +1 -1
- package/dist/cjs/Drawer/index.js +5 -5
- package/dist/cjs/Drawer/index.js.map +1 -1
- package/dist/cjs/Form/FormConfigContext.js +1 -1
- package/dist/cjs/Form/FormConfigContext.js.map +1 -1
- package/dist/cjs/Form/index.js +5 -5
- package/dist/cjs/Form/index.js.map +1 -1
- package/dist/cjs/FormDivider/index.js +5 -5
- package/dist/cjs/FormDivider/index.js.map +1 -1
- package/dist/cjs/FormItem/index.js +5 -5
- package/dist/cjs/FormItem/index.js.map +1 -1
- package/dist/cjs/Gallery/Status.js +2 -2
- package/dist/cjs/Gallery/Status.js.map +1 -1
- package/dist/cjs/Gallery/index.js +9 -9
- package/dist/cjs/Gallery/index.js.map +1 -1
- package/dist/cjs/GlobalStyles/index.js +1 -1
- package/dist/cjs/GlobalStyles/index.js.map +1 -1
- package/dist/cjs/GlobalStyles/resetStyles.js +1 -1
- package/dist/cjs/GlobalStyles/resetStyles.js.map +1 -1
- package/dist/cjs/GlobalStyles/typographyStyles.js +2 -2
- package/dist/cjs/GlobalStyles/typographyStyles.js.map +1 -1
- package/dist/cjs/HeaderSkeleton/index.js +5 -5
- package/dist/cjs/HeaderSkeleton/index.js.map +1 -1
- package/dist/cjs/Image/index.js +5 -5
- package/dist/cjs/Image/index.js.map +1 -1
- package/dist/cjs/ImageSkeleton/index.js +3 -3
- package/dist/cjs/ImageSkeleton/index.js.map +1 -1
- package/dist/cjs/Input/index.js +9 -9
- package/dist/cjs/Input/index.js.map +1 -1
- package/dist/cjs/Input/utils/getFocusableElements.js +5 -5
- package/dist/cjs/InputNumber/index.js +8 -8
- package/dist/cjs/InputNumber/index.js.map +1 -1
- package/dist/cjs/InputPassword/index.js +9 -9
- package/dist/cjs/InputPassword/index.js.map +1 -1
- package/dist/cjs/InputSearch/index.js +9 -9
- package/dist/cjs/InputSearch/index.js.map +1 -1
- package/dist/cjs/InputSkeleton/index.js +3 -3
- package/dist/cjs/InputSkeleton/index.js.map +1 -1
- package/dist/cjs/Layout/LayoutContext.js +1 -1
- package/dist/cjs/Layout/LayoutContext.js.map +1 -1
- package/dist/cjs/Layout/index.js +1 -1
- package/dist/cjs/Layout/index.js.map +1 -1
- package/dist/cjs/Link/index.js +5 -5
- package/dist/cjs/Link/index.js.map +1 -1
- package/dist/cjs/LinkButton/index.js +5 -5
- package/dist/cjs/LinkButton/index.js.map +1 -1
- package/dist/cjs/List/index.js +9 -9
- package/dist/cjs/List/index.js.map +1 -1
- package/dist/cjs/List/utils/frameTimeout.js +3 -3
- package/dist/cjs/List/utils/frameTimeout.js.map +1 -1
- package/dist/cjs/ListItem/index.js +5 -5
- package/dist/cjs/ListItem/index.js.map +1 -1
- package/dist/cjs/ListItemActions/index.js +12 -12
- package/dist/cjs/ListItemActions/index.js.map +1 -1
- package/dist/cjs/ListItemLink/index.js +10 -10
- package/dist/cjs/ListItemLink/index.js.map +1 -1
- package/dist/cjs/ListItemSkeleton/index.js +5 -5
- package/dist/cjs/ListItemSkeleton/index.js.map +1 -1
- package/dist/cjs/ListSkeleton/index.js +4 -4
- package/dist/cjs/ListSkeleton/index.js.map +1 -1
- package/dist/cjs/LogoLink/index.js +5 -5
- package/dist/cjs/LogoLink/index.js.map +1 -1
- package/dist/cjs/Menu/index.js +9 -9
- package/dist/cjs/Menu/index.js.map +1 -1
- package/dist/cjs/Menu/utils/useFocusWithArrows.js +5 -5
- package/dist/cjs/Menu/utils/useFocusWithArrows.js.map +1 -1
- package/dist/cjs/MenuDivider/index.js +3 -3
- package/dist/cjs/MenuDivider/index.js.map +1 -1
- package/dist/cjs/MenuGroup/index.js +13 -13
- package/dist/cjs/MenuGroup/index.js.map +1 -1
- package/dist/cjs/MenuItem/index.js +5 -5
- package/dist/cjs/MenuItem/index.js.map +1 -1
- package/dist/cjs/Modal/index.js +5 -5
- package/dist/cjs/Modal/index.js.map +1 -1
- package/dist/cjs/Navigation/index.js +5 -5
- package/dist/cjs/Navigation/index.js.map +1 -1
- package/dist/cjs/Navigation/utils/useScrollFlags.js +4 -4
- package/dist/cjs/Navigation/utils/useScrollFlags.js.map +1 -1
- package/dist/cjs/NavigationItem/index.js +5 -5
- package/dist/cjs/NavigationItem/index.js.map +1 -1
- package/dist/cjs/PageContent/index.js +5 -5
- package/dist/cjs/PageContent/index.js.map +1 -1
- package/dist/cjs/PageHeader/index.js +5 -5
- package/dist/cjs/PageHeader/index.js.map +1 -1
- package/dist/cjs/PageHeaderInputSearch/index.js +9 -9
- package/dist/cjs/PageHeaderInputSearch/index.js.map +1 -1
- package/dist/cjs/PageHeaderInputSearch/utils/defaultLocale.js +2 -2
- package/dist/cjs/PageHeaderInputSearch/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/PageHeaderSkeleton/index.js +4 -4
- package/dist/cjs/PageHeaderSkeleton/index.js.map +1 -1
- package/dist/cjs/ParagraphSkeleton/index.js +5 -5
- package/dist/cjs/ParagraphSkeleton/index.js.map +1 -1
- package/dist/cjs/Popover/index.js +9 -9
- package/dist/cjs/Popover/index.js.map +1 -1
- package/dist/cjs/Popover/utils/usePopoverPosition.js +6 -6
- package/dist/cjs/Popover/utils/usePopoverPosition.js.map +1 -1
- package/dist/cjs/Progress/index.js +5 -5
- package/dist/cjs/Progress/index.js.map +1 -1
- package/dist/cjs/RadioGroup/index.js +9 -9
- package/dist/cjs/RadioGroup/index.js.map +1 -1
- package/dist/cjs/RadioGroupSkeleton/index.js +5 -5
- package/dist/cjs/RadioGroupSkeleton/index.js.map +1 -1
- package/dist/cjs/Result/index.js +5 -5
- package/dist/cjs/Result/index.js.map +1 -1
- package/dist/cjs/ScrollButton/index.js +5 -5
- package/dist/cjs/ScrollButton/index.js.map +1 -1
- package/dist/cjs/ScrollButton/utils/useContainerPosition.js +4 -4
- package/dist/cjs/ScrollButton/utils/useContainerPosition.js.map +1 -1
- package/dist/cjs/ScrollButton/utils/useVisibility.js +4 -4
- package/dist/cjs/ScrollButton/utils/useVisibility.js.map +1 -1
- package/dist/cjs/Select/index.js +13 -13
- package/dist/cjs/Select/index.js.map +1 -1
- package/dist/cjs/Skeleton/index.js +5 -5
- package/dist/cjs/Skeleton/index.js.map +1 -1
- package/dist/cjs/Switch/index.js +9 -9
- package/dist/cjs/Switch/index.js.map +1 -1
- package/dist/cjs/SwitchSkeleton/index.js +3 -3
- package/dist/cjs/SwitchSkeleton/index.js.map +1 -1
- package/dist/cjs/Tag/index.js +5 -5
- package/dist/cjs/Tag/index.js.map +1 -1
- package/dist/cjs/TagLink/index.js +5 -5
- package/dist/cjs/TagLink/index.js.map +1 -1
- package/dist/cjs/TagList/index.js +9 -9
- package/dist/cjs/TagList/index.js.map +1 -1
- package/dist/cjs/TagListSkeleton/index.js +4 -4
- package/dist/cjs/TagListSkeleton/index.js.map +1 -1
- package/dist/cjs/TagSkeleton/index.js +5 -5
- package/dist/cjs/TagSkeleton/index.js.map +1 -1
- package/dist/cjs/TextArea/index.js +9 -9
- package/dist/cjs/TextArea/index.js.map +1 -1
- package/dist/cjs/TextAreaSkeleton/index.js +3 -3
- package/dist/cjs/TextAreaSkeleton/index.js.map +1 -1
- package/dist/cjs/ThemeSwitcher/index.js +4 -4
- package/dist/cjs/ThemeSwitcher/index.js.map +1 -1
- package/dist/cjs/TimePicker/index.js +8 -8
- package/dist/cjs/TimePicker/index.js.map +1 -1
- package/dist/cjs/Video/index.js +5 -5
- package/dist/cjs/Video/index.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/message/AlertIcon.js +2 -2
- package/dist/cjs/message/AlertIcon.js.map +1 -1
- package/dist/cjs/message/Message.js +2 -2
- package/dist/cjs/message/Message.js.map +1 -1
- package/dist/cjs/message/index.js +1 -1
- package/dist/cjs/message/index.js.map +1 -1
- package/dist/cjs/message/styles.js +4 -4
- package/dist/esm/Alert/index.js +1 -1
- package/dist/esm/Alert/index.js.map +1 -1
- package/dist/esm/Avatar/index.js +1 -1
- package/dist/esm/Avatar/index.js.map +1 -1
- package/dist/esm/Avatar/utils/nameToInitials.js.map +1 -1
- package/dist/esm/AvatarSkeleton/index.js +1 -1
- package/dist/esm/AvatarSkeleton/index.js.map +1 -1
- package/dist/esm/Badge/index.js +1 -1
- package/dist/esm/Badge/index.js.map +1 -1
- package/dist/esm/Breadcrumb/index.js +2 -2
- package/dist/esm/Breadcrumb/index.js.map +1 -1
- package/dist/esm/BreadcrumbItem/index.js +1 -1
- package/dist/esm/BreadcrumbItem/index.js.map +1 -1
- package/dist/esm/Button/ButtonContent.js.map +1 -1
- package/dist/esm/Button/index.js +1 -1
- package/dist/esm/Button/index.js.map +1 -1
- package/dist/esm/Button/utils/useButtonColors.js.map +1 -1
- package/dist/esm/ButtonLink/index.js +1 -1
- package/dist/esm/ButtonLink/index.js.map +1 -1
- package/dist/esm/Checkbox/index.js +1 -1
- package/dist/esm/Checkbox/index.js.map +1 -1
- package/dist/esm/CheckboxSkeleton/index.js +1 -1
- package/dist/esm/CheckboxSkeleton/index.js.map +1 -1
- package/dist/esm/DatePicker/DatePickerCalendar.js +1 -1
- package/dist/esm/DatePicker/DatePickerCalendar.js.map +1 -1
- package/dist/esm/DatePicker/index.js +1 -1
- package/dist/esm/DatePicker/index.js.map +1 -1
- package/dist/esm/Drawer/index.js +1 -1
- package/dist/esm/Drawer/index.js.map +1 -1
- package/dist/esm/Form/index.js +1 -1
- package/dist/esm/Form/index.js.map +1 -1
- package/dist/esm/FormDivider/index.js +1 -1
- package/dist/esm/FormDivider/index.js.map +1 -1
- package/dist/esm/FormItem/index.js +1 -1
- package/dist/esm/FormItem/index.js.map +1 -1
- package/dist/esm/Gallery/Status.js.map +1 -1
- package/dist/esm/Gallery/index.js +1 -1
- package/dist/esm/Gallery/index.js.map +1 -1
- package/dist/esm/GlobalStyles/resetStyles.js.map +1 -1
- package/dist/esm/GlobalStyles/typographyStyles.js.map +1 -1
- package/dist/esm/HeaderSkeleton/index.js +1 -1
- package/dist/esm/HeaderSkeleton/index.js.map +1 -1
- package/dist/esm/Image/index.js +1 -1
- package/dist/esm/Image/index.js.map +1 -1
- package/dist/esm/ImageSkeleton/index.js +1 -1
- package/dist/esm/ImageSkeleton/index.js.map +1 -1
- package/dist/esm/Input/index.js +1 -1
- package/dist/esm/Input/index.js.map +1 -1
- package/dist/esm/InputNumber/index.js +1 -1
- package/dist/esm/InputPassword/index.js +1 -1
- package/dist/esm/InputPassword/index.js.map +1 -1
- package/dist/esm/InputSearch/index.js +1 -1
- package/dist/esm/InputSearch/index.js.map +1 -1
- package/dist/esm/InputSkeleton/index.js +1 -1
- package/dist/esm/InputSkeleton/index.js.map +1 -1
- package/dist/esm/Link/index.js +1 -1
- package/dist/esm/Link/index.js.map +1 -1
- package/dist/esm/LinkButton/index.js +1 -1
- package/dist/esm/LinkButton/index.js.map +1 -1
- package/dist/esm/List/index.js +1 -1
- package/dist/esm/List/index.js.map +1 -1
- package/dist/esm/ListItem/index.js +1 -1
- package/dist/esm/ListItem/index.js.map +1 -1
- package/dist/esm/ListItemActions/index.js +1 -1
- package/dist/esm/ListItemActions/index.js.map +1 -1
- package/dist/esm/ListItemLink/index.js +1 -1
- package/dist/esm/ListItemLink/index.js.map +1 -1
- package/dist/esm/ListItemSkeleton/index.js +1 -1
- package/dist/esm/ListItemSkeleton/index.js.map +1 -1
- package/dist/esm/ListSkeleton/index.js +1 -1
- package/dist/esm/LogoLink/index.js +1 -1
- package/dist/esm/LogoLink/index.js.map +1 -1
- package/dist/esm/Menu/index.js +1 -1
- package/dist/esm/Menu/index.js.map +1 -1
- package/dist/esm/MenuDivider/index.js +1 -1
- package/dist/esm/MenuDivider/index.js.map +1 -1
- package/dist/esm/MenuGroup/index.js +1 -1
- package/dist/esm/MenuGroup/index.js.map +1 -1
- package/dist/esm/MenuItem/index.js +1 -1
- package/dist/esm/MenuItem/index.js.map +1 -1
- package/dist/esm/Modal/index.js +1 -1
- package/dist/esm/Modal/index.js.map +1 -1
- package/dist/esm/Navigation/index.js +1 -1
- package/dist/esm/Navigation/index.js.map +1 -1
- package/dist/esm/NavigationItem/index.js +1 -1
- package/dist/esm/NavigationItem/index.js.map +1 -1
- package/dist/esm/PageContent/index.js +1 -1
- package/dist/esm/PageContent/index.js.map +1 -1
- package/dist/esm/PageHeader/index.js +1 -1
- package/dist/esm/PageHeader/index.js.map +1 -1
- package/dist/esm/PageHeaderInputSearch/index.js +1 -1
- package/dist/esm/PageHeaderInputSearch/index.js.map +1 -1
- package/dist/esm/PageHeaderSkeleton/index.js +1 -1
- package/dist/esm/ParagraphSkeleton/index.js +1 -1
- package/dist/esm/ParagraphSkeleton/index.js.map +1 -1
- package/dist/esm/Popover/index.js +1 -1
- package/dist/esm/Popover/index.js.map +1 -1
- package/dist/esm/Progress/index.js +1 -1
- package/dist/esm/Progress/index.js.map +1 -1
- package/dist/esm/RadioGroup/index.js +1 -1
- package/dist/esm/RadioGroup/index.js.map +1 -1
- package/dist/esm/RadioGroupSkeleton/index.js +1 -1
- package/dist/esm/RadioGroupSkeleton/index.js.map +1 -1
- package/dist/esm/Result/index.js +1 -1
- package/dist/esm/Result/index.js.map +1 -1
- package/dist/esm/ScrollButton/index.js +1 -1
- package/dist/esm/ScrollButton/index.js.map +1 -1
- package/dist/esm/Select/index.js +1 -1
- package/dist/esm/Select/index.js.map +1 -1
- package/dist/esm/Skeleton/index.js +1 -1
- package/dist/esm/Skeleton/index.js.map +1 -1
- package/dist/esm/Switch/index.js +1 -1
- package/dist/esm/Switch/index.js.map +1 -1
- package/dist/esm/SwitchSkeleton/index.js +1 -1
- package/dist/esm/SwitchSkeleton/index.js.map +1 -1
- package/dist/esm/Tag/index.js +1 -1
- package/dist/esm/Tag/index.js.map +1 -1
- package/dist/esm/TagLink/index.js +1 -1
- package/dist/esm/TagLink/index.js.map +1 -1
- package/dist/esm/TagList/index.js +1 -1
- package/dist/esm/TagList/index.js.map +1 -1
- package/dist/esm/TagListSkeleton/index.js +1 -1
- package/dist/esm/TagSkeleton/index.js +1 -1
- package/dist/esm/TagSkeleton/index.js.map +1 -1
- package/dist/esm/TextArea/index.js +1 -1
- package/dist/esm/TextArea/index.js.map +1 -1
- package/dist/esm/TextAreaSkeleton/index.js +1 -1
- package/dist/esm/TextAreaSkeleton/index.js.map +1 -1
- package/dist/esm/ThemeSwitcher/index.js +1 -1
- package/dist/esm/TimePicker/index.js +1 -1
- package/dist/esm/Video/index.js +1 -1
- package/dist/esm/Video/index.js.map +1 -1
- package/dist/esm/message/AlertIcon.js.map +1 -1
- package/dist/esm/message/Message.js.map +1 -1
- package/dist/types/Button/index.d.ts +2 -2
- package/dist/types/Button/index.d.ts.map +1 -1
- package/dist/types/ButtonLink/index.d.ts +14 -13
- package/dist/types/ButtonLink/index.d.ts.map +1 -1
- package/dist/types/Input/index.d.ts +4 -4
- package/dist/types/Input/index.d.ts.map +1 -1
- package/dist/types/Link/index.d.ts +4 -4
- package/dist/types/Link/index.d.ts.map +1 -1
- package/dist/types/Menu/utils/useFocusWithArrows.d.ts.map +1 -1
- package/dist/types/Modal/index.d.ts +2 -2
- package/dist/types/Modal/index.d.ts.map +1 -1
- package/dist/types/Navigation/utils/useScrollFlags.d.ts.map +1 -1
- package/dist/types/PageHeader/index.d.ts +2 -2
- package/dist/types/PageHeader/index.d.ts.map +1 -1
- package/dist/types/ScrollButton/utils/useContainerPosition.d.ts.map +1 -1
- package/dist/types/Select/index.d.ts +21 -21
- package/dist/types/Select/index.d.ts.map +1 -1
- package/dist/types/Tag/index.d.ts +6 -6
- package/dist/types/Tag/index.d.ts.map +1 -1
- package/dist/types/ThemeSwitcher/index.d.ts +14 -13
- package/dist/types/ThemeSwitcher/index.d.ts.map +1 -1
- package/dist/types/message/styles.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerCalendar.js","names":["styled","getAccessibilityDateLabel","useDatePickerCalendar","Left","Right","ellipsisStyles","resetFocusStyles","transitionStyles","clr","React","useCallback","useEffect","useRef","Button","MonthContainer","div","Month","Calendar","p","theme","datePickerCellSize","DayOfWeek","datePickerDayOfWeekColorText","sizes","small","Day","datePickerDaySize","borderRadius","datePickerDayColorBgHover","datePickerDayColorTextHover","DayAnotherMonth","datePickerDayAnotherMonthColorText","Today","datePickerTodayColorBg","datePickerTodayColorText","datePickerTodayColorBorder","SelectedDay","datePickerSelectedDayColorBg","datePickerSelectedDayColorText","DayInRange","colorText","slice","firstDayOfWeekIndexesMap","monday","saturday","sunday","DatePickerCalendar","firstDayOfWeek","locale","value","onSelect","valueRef","current","onSelectRef","selectedMonth","updateMonth","days","getDayProps","date","tabIndex","role","onClick","onKeyDown","e","includes","key","preventDefault","onMouseDown","createElement","Fragment","type","wide","size","prevMonthLabel","months","month","year","nextMonthLabel","Array","fill","map","_","index","item","_extends","toISOString","getDate"],"sources":["../../../src/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n getAccessibilityDateLabel,\n useDatePickerCalendar,\n} from '@os-design/date-picker-utils';\nimport { Left, Right } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetFocusStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { Color, clr } from '@os-design/theming';\nimport React, { HTMLAttributes, useCallback, useEffect, useRef } from 'react';\nimport Button from '../Button';\n\ninterface DatePickerCalendarProps {\n firstDayOfWeek: 'monday' | 'saturday' | 'sunday';\n locale: DatePickerLocale;\n value?: Date | [Date, Date] | null;\n onSelect?: (value: Date) => void;\n}\n\nconst MonthContainer = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 0.5em;\n`;\n\nconst Month = styled.div`\n flex-grow: 1;\n font-weight: 500;\n text-align: center;\n padding: 0 0.4em;\n ${ellipsisStyles};\n`;\n\nconst Calendar = styled.div`\n display: grid;\n grid-template-columns: repeat(7, ${(p) => p.theme.datePickerCellSize}em);\n grid-auto-rows: ${(p) => p.theme.datePickerCellSize}em;\n justify-content: space-between;\n overflow-x: auto;\n`;\n\nconst DayOfWeek = styled.div`\n justify-self: center;\n align-self: center;\n color: ${(p) => clr(p.theme.datePickerDayOfWeekColorText)};\n font-size: ${(p) => p.theme.sizes.small}em;\n`;\n\nconst Day = styled.div`\n ${resetFocusStyles};\n justify-self: center;\n align-self: center;\n\n width: ${(p) => p.theme.datePickerDaySize}em;\n height: ${(p) => p.theme.datePickerDaySize}em;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n cursor: pointer;\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${(p) => clr(p.theme.datePickerDayColorBgHover)};\n color: ${(p) => clr(p.theme.datePickerDayColorTextHover)};\n }\n }\n\n ${transitionStyles('background-color', 'color')};\n`;\n\nconst DayAnotherMonth = styled(Day)`\n color: ${(p) => clr(p.theme.datePickerDayAnotherMonthColorText)};\n`;\n\nconst Today = styled(Day)`\n background-color: ${(p) => clr(p.theme.datePickerTodayColorBg)};\n color: ${(p) => clr(p.theme.datePickerTodayColorText)};\n border: 1px solid ${(p) => clr(p.theme.datePickerTodayColorBorder)};\n box-sizing: border-box;\n`;\n\nconst SelectedDay = styled(Day)`\n background-color: ${(p) => clr(p.theme.datePickerSelectedDayColorBg)};\n color: ${(p) => clr(p.theme.datePickerSelectedDayColorText)};\n`;\n\nconst DayInRange = styled(Day)`\n background-color: ${(p) =>\n clr([\n ...p.theme.colorText.slice(0, 3),\n (p.theme.colorText[3] || 1) * 0.05,\n ] as Color)};\n`;\n\nconst firstDayOfWeekIndexesMap = {\n monday: [6, 0, 1, 2, 3, 4, 5],\n saturday: [1, 2, 3, 4, 5, 6, 0],\n sunday: [0, 1, 2, 3, 4, 5, 6],\n};\n\nconst DatePickerCalendar: React.FC<DatePickerCalendarProps> = ({\n firstDayOfWeek,\n locale,\n value,\n onSelect = () => {},\n}) => {\n const valueRef = useRef(value);\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const onSelectRef = useRef(onSelect);\n useEffect(() => {\n onSelectRef.current = onSelect;\n }, [onSelect]);\n\n const { selectedMonth, updateMonth, days } = useDatePickerCalendar({\n value,\n firstDayOfWeek,\n });\n\n const getDayProps = useCallback<\n (date: Date) => HTMLAttributes<HTMLDivElement>\n >(\n (date: Date) => ({\n tabIndex: 0,\n role: 'button',\n 'aria-label': getAccessibilityDateLabel(date, locale),\n onClick: () => {\n onSelectRef.current(date);\n },\n onKeyDown: (e) => {\n if (['Enter', ' '].includes(e.key)) {\n onSelectRef.current(date);\n e.preventDefault();\n }\n },\n onMouseDown: (e) => e.preventDefault(),\n }),\n [locale]\n );\n\n return (\n <>\n <MonthContainer>\n <Button\n type='ghost'\n wide='never'\n size='small'\n onClick={() => updateMonth(-1)}\n aria-label={locale.prevMonthLabel}\n >\n <Left />\n </Button>\n <Month>\n {locale.months[selectedMonth.month]} {selectedMonth.year}\n </Month>\n <Button\n type='ghost'\n wide='never'\n size='small'\n onClick={() => updateMonth(1)}\n aria-label={locale.nextMonthLabel}\n >\n <Right />\n </Button>\n </MonthContainer>\n\n <Calendar>\n {Array(7)\n .fill(0)\n .map((_, index) => {\n const item = firstDayOfWeekIndexesMap[firstDayOfWeek][index];\n return <DayOfWeek key={item}>{item}</DayOfWeek>;\n })}\n\n {days.map(({ type, date }) => {\n if (type === 'dayAnotherMonth') {\n return (\n <DayAnotherMonth key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </DayAnotherMonth>\n );\n }\n if (type === 'selectedDay') {\n return (\n <SelectedDay key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </SelectedDay>\n );\n }\n if (type === 'dayInRange') {\n return (\n <DayInRange key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </DayInRange>\n );\n }\n if (type === 'today') {\n return (\n <Today key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </Today>\n );\n }\n return (\n <Day key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </Day>\n );\n })}\n </Calendar>\n </>\n );\n};\n\nexport default DatePickerCalendar;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatePickerCalendar.js","names":["styled","getAccessibilityDateLabel","useDatePickerCalendar","Left","Right","ellipsisStyles","resetFocusStyles","transitionStyles","clr","React","useCallback","useEffect","useRef","Button","MonthContainer","div","Month","Calendar","p","theme","datePickerCellSize","DayOfWeek","datePickerDayOfWeekColorText","sizes","small","Day","datePickerDaySize","borderRadius","datePickerDayColorBgHover","datePickerDayColorTextHover","DayAnotherMonth","datePickerDayAnotherMonthColorText","Today","datePickerTodayColorBg","datePickerTodayColorText","datePickerTodayColorBorder","SelectedDay","datePickerSelectedDayColorBg","datePickerSelectedDayColorText","DayInRange","colorText","slice","firstDayOfWeekIndexesMap","monday","saturday","sunday","DatePickerCalendar","firstDayOfWeek","locale","value","onSelect","valueRef","current","onSelectRef","selectedMonth","updateMonth","days","getDayProps","date","tabIndex","role","onClick","onKeyDown","e","includes","key","preventDefault","onMouseDown","createElement","Fragment","type","wide","size","prevMonthLabel","months","month","year","nextMonthLabel","Array","fill","map","_","index","item","_extends","toISOString","getDate"],"sources":["../../../src/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n getAccessibilityDateLabel,\n useDatePickerCalendar,\n} from '@os-design/date-picker-utils';\nimport { Left, Right } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetFocusStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { Color, clr } from '@os-design/theming';\nimport React, { HTMLAttributes, useCallback, useEffect, useRef } from 'react';\nimport Button from '../Button';\n\ninterface DatePickerCalendarProps {\n firstDayOfWeek: 'monday' | 'saturday' | 'sunday';\n locale: DatePickerLocale;\n value?: Date | [Date, Date] | null;\n onSelect?: (value: Date) => void;\n}\n\nconst MonthContainer = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 0.5em;\n`;\n\nconst Month = styled.div`\n flex-grow: 1;\n font-weight: 500;\n text-align: center;\n padding: 0 0.4em;\n ${ellipsisStyles};\n`;\n\nconst Calendar = styled.div`\n display: grid;\n grid-template-columns: repeat(7, ${(p) => p.theme.datePickerCellSize}em);\n grid-auto-rows: ${(p) => p.theme.datePickerCellSize}em;\n justify-content: space-between;\n overflow-x: auto;\n`;\n\nconst DayOfWeek = styled.div`\n justify-self: center;\n align-self: center;\n color: ${(p) => clr(p.theme.datePickerDayOfWeekColorText)};\n font-size: ${(p) => p.theme.sizes.small}em;\n`;\n\nconst Day = styled.div`\n ${resetFocusStyles};\n justify-self: center;\n align-self: center;\n\n width: ${(p) => p.theme.datePickerDaySize}em;\n height: ${(p) => p.theme.datePickerDaySize}em;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n cursor: pointer;\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${(p) => clr(p.theme.datePickerDayColorBgHover)};\n color: ${(p) => clr(p.theme.datePickerDayColorTextHover)};\n }\n }\n\n ${transitionStyles('background-color', 'color')};\n`;\n\nconst DayAnotherMonth = styled(Day)`\n color: ${(p) => clr(p.theme.datePickerDayAnotherMonthColorText)};\n`;\n\nconst Today = styled(Day)`\n background-color: ${(p) => clr(p.theme.datePickerTodayColorBg)};\n color: ${(p) => clr(p.theme.datePickerTodayColorText)};\n border: 1px solid ${(p) => clr(p.theme.datePickerTodayColorBorder)};\n box-sizing: border-box;\n`;\n\nconst SelectedDay = styled(Day)`\n background-color: ${(p) => clr(p.theme.datePickerSelectedDayColorBg)};\n color: ${(p) => clr(p.theme.datePickerSelectedDayColorText)};\n`;\n\nconst DayInRange = styled(Day)`\n background-color: ${(p) =>\n clr([\n ...p.theme.colorText.slice(0, 3),\n (p.theme.colorText[3] || 1) * 0.05,\n ] as Color)};\n`;\n\nconst firstDayOfWeekIndexesMap = {\n monday: [6, 0, 1, 2, 3, 4, 5],\n saturday: [1, 2, 3, 4, 5, 6, 0],\n sunday: [0, 1, 2, 3, 4, 5, 6],\n};\n\nconst DatePickerCalendar: React.FC<DatePickerCalendarProps> = ({\n firstDayOfWeek,\n locale,\n value,\n onSelect = () => {},\n}) => {\n const valueRef = useRef(value);\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const onSelectRef = useRef(onSelect);\n useEffect(() => {\n onSelectRef.current = onSelect;\n }, [onSelect]);\n\n const { selectedMonth, updateMonth, days } = useDatePickerCalendar({\n value,\n firstDayOfWeek,\n });\n\n const getDayProps = useCallback<\n (date: Date) => HTMLAttributes<HTMLDivElement>\n >(\n (date: Date) => ({\n tabIndex: 0,\n role: 'button',\n 'aria-label': getAccessibilityDateLabel(date, locale),\n onClick: () => {\n onSelectRef.current(date);\n },\n onKeyDown: (e) => {\n if (['Enter', ' '].includes(e.key)) {\n onSelectRef.current(date);\n e.preventDefault();\n }\n },\n onMouseDown: (e) => e.preventDefault(),\n }),\n [locale]\n );\n\n return (\n <>\n <MonthContainer>\n <Button\n type='ghost'\n wide='never'\n size='small'\n onClick={() => updateMonth(-1)}\n aria-label={locale.prevMonthLabel}\n >\n <Left />\n </Button>\n <Month>\n {locale.months[selectedMonth.month]} {selectedMonth.year}\n </Month>\n <Button\n type='ghost'\n wide='never'\n size='small'\n onClick={() => updateMonth(1)}\n aria-label={locale.nextMonthLabel}\n >\n <Right />\n </Button>\n </MonthContainer>\n\n <Calendar>\n {Array(7)\n .fill(0)\n .map((_, index) => {\n const item = firstDayOfWeekIndexesMap[firstDayOfWeek][index];\n return <DayOfWeek key={item}>{item}</DayOfWeek>;\n })}\n\n {days.map(({ type, date }) => {\n if (type === 'dayAnotherMonth') {\n return (\n <DayAnotherMonth key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </DayAnotherMonth>\n );\n }\n if (type === 'selectedDay') {\n return (\n <SelectedDay key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </SelectedDay>\n );\n }\n if (type === 'dayInRange') {\n return (\n <DayInRange key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </DayInRange>\n );\n }\n if (type === 'today') {\n return (\n <Today key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </Today>\n );\n }\n return (\n <Day key={date.toISOString()} {...getDayProps(date)}>\n {date.getDate()}\n </Day>\n );\n })}\n </Calendar>\n </>\n );\n};\n\nexport default DatePickerCalendar;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
3
|
import { defaultLocale, getAccessibilityDateLabel, useFormattedValue } from '@os-design/date-picker-utils';
|
|
4
4
|
import { Down, Up } from '@os-design/icons';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styled","defaultLocale","getAccessibilityDateLabel","useFormattedValue","Down","Up","useIsMinWidth","ThemeOverrider","useForwardedRef","useForwardedState","useKeyPress","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","Button","Modal","Popover","ClearIcon","Placeholder","SelectContainer","Title","ToggleContent","ToggleIconContainer","ToggleLeftAddon","ToggleRightAddon","TimePicker","DatePickerCalendar","StyledPopover","p","theme","datePickerPadding","TimeContainer","div","Dash","baseHeight","StyledTimePicker","timePickerStyle","style","width","createDate","date","time","d","Date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","setMinutes","getHours","getMinutes","DatePicker","left","leftHasPadding","right","rightHasPadding","placeholder","disabled","autoFocus","autoOpen","format","firstDayOfWeek","locale","showTime","timeNotation","range","value","defaultValue","onChange","onClose","onBlur","size","rest","ref","containerRef","mergedContainerRef","opened","setOpened","forwardedValue","setForwardedValue","current","focus","onCloseRef","formattedValue","closeHandler","window","undefined","isMinXs","blurHandler","e","valueIsSpecified","rightHasPaddingValue","rightValue","createElement","type","wide","onClick","stopPropagation","onKeyDown","includes","key","preventDefault","clearLabel","firstTimePickerRef","secondTimePickerRef","rangeStartedRef","changeHandler","prev","nextValue","Array","isArray","getTime","sort","a","b","calendarComponent","onSelect","v","tabOnInputComplete","target","selectionStart","from","nextTo","closeOnInputComplete","timeComponent","Fragment","notation","containerProps","onKeyUp","_extends","tabIndex","onMouseDown","role","overrides","t","buttonPaddingHorizontal","selectToggleListItemHeight","sizes","small","hasPadding","hasLeft","hasRight","trigger","placement","visible","title","header","footer","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n defaultLocale,\n getAccessibilityDateLabel,\n useFormattedValue,\n} from '@os-design/date-picker-utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { ThemeOverrider } from '@os-design/theming';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport Popover from '../Popover';\nimport {\n ClearIcon,\n Placeholder,\n SelectContainer,\n Title,\n ToggleContent,\n ToggleIconContainer,\n ToggleLeftAddon,\n ToggleRightAddon,\n} from '../Select';\nimport TimePicker from '../TimePicker';\nimport DatePickerCalendar from './DatePickerCalendar';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseDatePickerProps<T> extends JsxDivProps, WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup calendar.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (value: T) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'monday' | 'saturday' | 'sunday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Whether the time is shown.\n * @default false\n */\n showTime?: boolean;\n /**\n * The time notation.\n * @default 12-hour\n */\n timeNotation?: '12-hour' | '24-hour';\n /**\n * Selected date.\n * @default undefined\n */\n value?: T | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T | null) => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\nexport interface DateNotRangePickerProps extends BaseDatePickerProps<Date> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range?: false;\n}\nexport interface DateRangePickerProps\n extends BaseDatePickerProps<[Date, Date]> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range: true;\n}\nexport type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;\n\nconst StyledPopover = styled(Popover)`\n padding: ${(p) => p.theme.datePickerPadding}em;\n`;\n\nconst TimeContainer = styled.div`\n display: flex;\n justify-content: center;\n margin-top: 0.5em;\n`;\n\nconst Dash = styled.div`\n margin: 0 0.5em;\n line-height: ${(p) => p.theme.baseHeight}em;\n`;\n\nconst StyledTimePicker = styled(TimePicker)`\n width: 2.5em;\n text-align: center;\n`;\n\nconst timePickerStyle = { style: { width: 'auto' } };\n\nconst createDate = (date: Date, time?: Date | null) => {\n const d = new Date(0);\n d.setFullYear(date.getFullYear());\n d.setMonth(date.getMonth());\n d.setDate(date.getDate());\n d.setHours(0);\n d.setMinutes(0);\n if (time) {\n d.setHours(time.getHours());\n d.setMinutes(time.getMinutes());\n }\n return d;\n};\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n format,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n showTime = false,\n timeNotation = '12-hour',\n range = false,\n value,\n defaultValue,\n onChange,\n onClose = () => {},\n onBlur = () => {},\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) {\n onCloseRef.current();\n containerRef.current?.focus();\n }\n }, [containerRef, opened]);\n\n const formattedValue = useFormattedValue({\n forwardedValue,\n format,\n showTime,\n timeNotation,\n });\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const valueIsSpecified = useMemo(\n () => formattedValue !== undefined && formattedValue !== null,\n [formattedValue]\n );\n\n const rightHasPaddingValue = useMemo(() => {\n if (valueIsSpecified) return false;\n return right ? rightHasPadding : true;\n }, [right, rightHasPadding, valueIsSpecified]);\n\n const rightValue = useMemo(() => {\n if (valueIsSpecified) {\n return (\n <div aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </div>\n );\n }\n return (\n right || (\n <ToggleIconContainer>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n containerRef,\n disabled,\n locale.clearLabel,\n opened,\n right,\n setForwardedValue,\n valueIsSpecified,\n ]);\n\n const firstTimePickerRef = useRef<HTMLInputElement>(null);\n const secondTimePickerRef = useRef<HTMLInputElement>(null);\n const rangeStartedRef = useRef(false);\n\n useEffect(() => {\n rangeStartedRef.current = false;\n }, [opened]);\n\n const changeHandler = useCallback(\n (date: Date) => {\n setForwardedValue((prev) => {\n if (!range) return createDate(date, prev);\n\n const d = createDate(date);\n const nextValue =\n prev && Array.isArray(prev) && rangeStartedRef.current\n ? [new Date(prev[0].getTime()), createDate(date, prev[1])]\n : [d, d];\n\n rangeStartedRef.current = !rangeStartedRef.current;\n return nextValue.sort(\n (a: Date, b: Date) => a.getTime() - b.getTime()\n );\n });\n },\n [range, setForwardedValue]\n );\n\n const calendarComponent = useMemo(\n () => (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onSelect={(v) => {\n changeHandler(v);\n firstTimePickerRef.current?.focus();\n if (!showTime && (!range || !rangeStartedRef.current)) {\n closeHandler();\n }\n }}\n />\n ),\n [\n changeHandler,\n closeHandler,\n firstDayOfWeek,\n forwardedValue,\n locale,\n range,\n showTime,\n ]\n );\n\n const tabOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n secondTimePickerRef.current?.focus();\n setForwardedValue(([from]) => {\n const nextTo = new Date(from.getTime());\n nextTo.setHours(nextTo.getHours() + 1);\n return [from, nextTo];\n });\n },\n [setForwardedValue]\n );\n\n const closeOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n closeHandler();\n },\n [closeHandler]\n );\n\n const timeComponent = useMemo(\n () =>\n showTime && forwardedValue ? (\n <TimeContainer>\n {Array.isArray(forwardedValue) ? (\n <>\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[0]}\n onChange={(v) => setForwardedValue([v, forwardedValue[1]])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={tabOnInputComplete}\n />\n <Dash>–</Dash>\n <StyledTimePicker\n ref={secondTimePickerRef}\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[1]}\n onChange={(v) => setForwardedValue([forwardedValue[0], v])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n </>\n ) : (\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue}\n onChange={setForwardedValue}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n )}\n </TimeContainer>\n ) : null,\n [\n closeOnInputComplete,\n disabled,\n forwardedValue,\n opened,\n setForwardedValue,\n showTime,\n tabOnInputComplete,\n timeNotation,\n ]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-label={\n forwardedValue\n ? getAccessibilityDateLabel(forwardedValue, locale)\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </ToggleContent>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <StyledPopover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </StyledPopover>\n ) : (\n <Modal\n title={placeholder}\n header={null}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","defaultLocale","getAccessibilityDateLabel","useFormattedValue","Down","Up","useIsMinWidth","ThemeOverrider","useForwardedRef","useForwardedState","useKeyPress","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","Button","Modal","Popover","ClearIcon","Placeholder","SelectContainer","Title","ToggleContent","ToggleIconContainer","ToggleLeftAddon","ToggleRightAddon","TimePicker","DatePickerCalendar","StyledPopover","p","theme","datePickerPadding","TimeContainer","div","Dash","baseHeight","StyledTimePicker","timePickerStyle","style","width","createDate","date","time","d","Date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","setMinutes","getHours","getMinutes","DatePicker","left","leftHasPadding","right","rightHasPadding","placeholder","disabled","autoFocus","autoOpen","format","firstDayOfWeek","locale","showTime","timeNotation","range","value","defaultValue","onChange","onClose","onBlur","size","rest","ref","containerRef","mergedContainerRef","opened","setOpened","forwardedValue","setForwardedValue","current","focus","onCloseRef","formattedValue","closeHandler","window","undefined","isMinXs","blurHandler","e","valueIsSpecified","rightHasPaddingValue","rightValue","createElement","type","wide","onClick","stopPropagation","onKeyDown","includes","key","preventDefault","clearLabel","firstTimePickerRef","secondTimePickerRef","rangeStartedRef","changeHandler","prev","nextValue","Array","isArray","getTime","sort","a","b","calendarComponent","onSelect","v","tabOnInputComplete","target","selectionStart","from","nextTo","closeOnInputComplete","timeComponent","Fragment","notation","containerProps","onKeyUp","_extends","tabIndex","onMouseDown","role","overrides","t","buttonPaddingHorizontal","selectToggleListItemHeight","sizes","small","hasPadding","hasLeft","hasRight","trigger","placement","visible","title","header","footer","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n defaultLocale,\n getAccessibilityDateLabel,\n useFormattedValue,\n} from '@os-design/date-picker-utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { ThemeOverrider } from '@os-design/theming';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport Popover from '../Popover';\nimport {\n ClearIcon,\n Placeholder,\n SelectContainer,\n Title,\n ToggleContent,\n ToggleIconContainer,\n ToggleLeftAddon,\n ToggleRightAddon,\n} from '../Select';\nimport TimePicker from '../TimePicker';\nimport DatePickerCalendar from './DatePickerCalendar';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseDatePickerProps<T> extends JsxDivProps, WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup calendar.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (value: T) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'monday' | 'saturday' | 'sunday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Whether the time is shown.\n * @default false\n */\n showTime?: boolean;\n /**\n * The time notation.\n * @default 12-hour\n */\n timeNotation?: '12-hour' | '24-hour';\n /**\n * Selected date.\n * @default undefined\n */\n value?: T | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T | null) => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\nexport interface DateNotRangePickerProps extends BaseDatePickerProps<Date> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range?: false;\n}\nexport interface DateRangePickerProps\n extends BaseDatePickerProps<[Date, Date]> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range: true;\n}\nexport type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;\n\nconst StyledPopover = styled(Popover)`\n padding: ${(p) => p.theme.datePickerPadding}em;\n`;\n\nconst TimeContainer = styled.div`\n display: flex;\n justify-content: center;\n margin-top: 0.5em;\n`;\n\nconst Dash = styled.div`\n margin: 0 0.5em;\n line-height: ${(p) => p.theme.baseHeight}em;\n`;\n\nconst StyledTimePicker = styled(TimePicker)`\n width: 2.5em;\n text-align: center;\n`;\n\nconst timePickerStyle = { style: { width: 'auto' } };\n\nconst createDate = (date: Date, time?: Date | null) => {\n const d = new Date(0);\n d.setFullYear(date.getFullYear());\n d.setMonth(date.getMonth());\n d.setDate(date.getDate());\n d.setHours(0);\n d.setMinutes(0);\n if (time) {\n d.setHours(time.getHours());\n d.setMinutes(time.getMinutes());\n }\n return d;\n};\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n format,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n showTime = false,\n timeNotation = '12-hour',\n range = false,\n value,\n defaultValue,\n onChange,\n onClose = () => {},\n onBlur = () => {},\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) {\n onCloseRef.current();\n containerRef.current?.focus();\n }\n }, [containerRef, opened]);\n\n const formattedValue = useFormattedValue({\n forwardedValue,\n format,\n showTime,\n timeNotation,\n });\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const valueIsSpecified = useMemo(\n () => formattedValue !== undefined && formattedValue !== null,\n [formattedValue]\n );\n\n const rightHasPaddingValue = useMemo(() => {\n if (valueIsSpecified) return false;\n return right ? rightHasPadding : true;\n }, [right, rightHasPadding, valueIsSpecified]);\n\n const rightValue = useMemo(() => {\n if (valueIsSpecified) {\n return (\n <div aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </div>\n );\n }\n return (\n right || (\n <ToggleIconContainer>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n containerRef,\n disabled,\n locale.clearLabel,\n opened,\n right,\n setForwardedValue,\n valueIsSpecified,\n ]);\n\n const firstTimePickerRef = useRef<HTMLInputElement>(null);\n const secondTimePickerRef = useRef<HTMLInputElement>(null);\n const rangeStartedRef = useRef(false);\n\n useEffect(() => {\n rangeStartedRef.current = false;\n }, [opened]);\n\n const changeHandler = useCallback(\n (date: Date) => {\n setForwardedValue((prev) => {\n if (!range) return createDate(date, prev);\n\n const d = createDate(date);\n const nextValue =\n prev && Array.isArray(prev) && rangeStartedRef.current\n ? [new Date(prev[0].getTime()), createDate(date, prev[1])]\n : [d, d];\n\n rangeStartedRef.current = !rangeStartedRef.current;\n return nextValue.sort(\n (a: Date, b: Date) => a.getTime() - b.getTime()\n );\n });\n },\n [range, setForwardedValue]\n );\n\n const calendarComponent = useMemo(\n () => (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onSelect={(v) => {\n changeHandler(v);\n firstTimePickerRef.current?.focus();\n if (!showTime && (!range || !rangeStartedRef.current)) {\n closeHandler();\n }\n }}\n />\n ),\n [\n changeHandler,\n closeHandler,\n firstDayOfWeek,\n forwardedValue,\n locale,\n range,\n showTime,\n ]\n );\n\n const tabOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n secondTimePickerRef.current?.focus();\n setForwardedValue(([from]) => {\n const nextTo = new Date(from.getTime());\n nextTo.setHours(nextTo.getHours() + 1);\n return [from, nextTo];\n });\n },\n [setForwardedValue]\n );\n\n const closeOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n closeHandler();\n },\n [closeHandler]\n );\n\n const timeComponent = useMemo(\n () =>\n showTime && forwardedValue ? (\n <TimeContainer>\n {Array.isArray(forwardedValue) ? (\n <>\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[0]}\n onChange={(v) => setForwardedValue([v, forwardedValue[1]])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={tabOnInputComplete}\n />\n <Dash>–</Dash>\n <StyledTimePicker\n ref={secondTimePickerRef}\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[1]}\n onChange={(v) => setForwardedValue([forwardedValue[0], v])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n </>\n ) : (\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue}\n onChange={setForwardedValue}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n )}\n </TimeContainer>\n ) : null,\n [\n closeOnInputComplete,\n disabled,\n forwardedValue,\n opened,\n setForwardedValue,\n showTime,\n tabOnInputComplete,\n timeNotation,\n ]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-label={\n forwardedValue\n ? getAccessibilityDateLabel(forwardedValue, locale)\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </ToggleContent>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <StyledPopover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </StyledPopover>\n ) : (\n <Modal\n title={placeholder}\n header={null}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Drawer/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import { css, keyframes } from '@emotion/react';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
4
|
import Portal from '@os-design/portal';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["css","keyframes","styled","Portal","enableScrollingStyles","resetFocusStyles","sizeStyles","clr","useTheme","omitEmotionProps","useBodyScroll","useClosable","React","forwardRef","useCallback","useContext","FocusLock","ModalMask","DRAWER_CONTAINER_Z_INDEX","DRAWER_BOX_SHADOW_SIZE_EM","DrawerMask","Container","div","placementLeftFadeIn","placementLeftFadeOut","placementRightFadeIn","placementRightFadeOut","placementLeftVisibleStyles","p","placement","visible","theme","transitionDelay","placementLeftInvisibleStyles","placementRightVisibleStyles","placementRightInvisibleStyles","Content","width","colorBg","colorText","drawerColorBoxShadow","CloseDrawerContext","createContext","useCloseDrawer","Drawer","onClose","size","children","onClick","rest","ref","mounted","clickHandler","e","stopPropagation","keyDownHandler","key","createElement","autoFocus","Provider","value","_extends","tabIndex","onKeyDown","role","displayName"],"sources":["../../../src/Drawer/index.tsx"],"sourcesContent":["import { css, keyframes } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport Portal from '@os-design/portal';\nimport {\n WithSize,\n enableScrollingStyles,\n resetFocusStyles,\n sizeStyles,\n} from '@os-design/styles';\nimport { clr, useTheme } from '@os-design/theming';\nimport { omitEmotionProps, useBodyScroll, useClosable } from '@os-design/utils';\nimport React, { forwardRef, useCallback, useContext } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport { ModalMask } from '../Modal';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface DrawerProps extends JsxDivProps, WithSize {\n /**\n * The placement of the drawer.\n * @default right\n */\n placement?: 'left' | 'right';\n /**\n * The width of the drawer.\n * @default 15em\n */\n width?: string;\n /**\n * Whether the drawer is visible.\n * @default false\n */\n visible?: boolean;\n /**\n * Specifies a callback that will be called when a user clicks the mask.\n * The callback should set the visible state to false.\n * @default undefined\n */\n onClose?: () => void;\n}\n\nconst DRAWER_CONTAINER_Z_INDEX = 1000;\nconst DRAWER_BOX_SHADOW_SIZE_EM = 1;\n\nconst DrawerMask = styled(ModalMask)`\n z-index: ${DRAWER_CONTAINER_Z_INDEX};\n`;\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n z-index: ${DRAWER_CONTAINER_Z_INDEX};\n`;\n\nconst placementLeftFadeIn = keyframes`\n from { transform: translateX(calc(-100% - ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateX(0); }\n`;\n\nconst placementLeftFadeOut = keyframes`\n from { transform: translateX(0); }\n to { transform: translateX(calc(-100% - ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst placementRightFadeIn = keyframes`\n from { transform: translateX(calc(100vw + ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateX(calc(100vw - 100%)); }\n`;\n\nconst placementRightFadeOut = keyframes`\n from { transform: translateX(calc(100vw - 100%)); }\n to { transform: translateX(calc(100vw + ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst placementLeftVisibleStyles = (p) =>\n p.placement === 'left' &&\n p.visible &&\n css`\n animation: ${placementLeftFadeIn} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst placementLeftInvisibleStyles = (p) =>\n p.placement === 'left' &&\n !p.visible &&\n css`\n animation: ${placementLeftFadeOut} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst placementRightVisibleStyles = (p) =>\n p.placement === 'right' &&\n p.visible &&\n css`\n animation: ${placementRightFadeIn} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst placementRightInvisibleStyles = (p) =>\n p.placement === 'right' &&\n !p.visible &&\n css`\n animation: ${placementRightFadeOut} ${p.theme.transitionDelay}ms forwards;\n `;\n\ntype ContentProps = Pick<\n DrawerProps,\n 'placement' | 'width' | 'visible' | 'size'\n>;\nconst Content = styled(\n 'div',\n omitEmotionProps('placement', 'width', 'visible', 'size')\n)<ContentProps>`\n ${resetFocusStyles};\n\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${(p) => p.width};\n max-width: 90%;\n padding-bottom: env(safe-area-inset-bottom);\n\n background-color: ${(p) => clr(p.theme.colorBg)};\n color: ${(p) => clr(p.theme.colorText)};\n box-shadow: 0 0 ${DRAWER_BOX_SHADOW_SIZE_EM}em\n ${(p) => clr(p.theme.drawerColorBoxShadow)};\n\n ${placementLeftVisibleStyles};\n ${placementLeftInvisibleStyles};\n ${placementRightVisibleStyles};\n ${placementRightInvisibleStyles};\n\n ${enableScrollingStyles('y')};\n ${sizeStyles};\n`;\n\nconst CloseDrawerContext = React.createContext<() => void>(() => {});\n\nexport const useCloseDrawer = () => useContext(CloseDrawerContext);\n\n/**\n * The side panel that appears from the edge of the screen.\n */\nconst Drawer = forwardRef<HTMLDivElement, DrawerProps>(\n (\n {\n placement = 'right',\n width = '15em',\n visible = false,\n onClose = () => {},\n size,\n children,\n onClick = () => {},\n ...rest\n },\n ref\n ) => {\n const { theme } = useTheme();\n const mounted = useClosable(visible, theme.transitionDelay);\n\n useBodyScroll(!visible);\n\n const clickHandler = useCallback(\n (e) => {\n e.stopPropagation();\n onClick(e);\n },\n [onClick]\n );\n\n const keyDownHandler = useCallback(\n (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n onClose();\n }\n },\n [onClose]\n );\n\n if (!mounted) return null;\n\n return (\n <Portal>\n <DrawerMask visible={visible} />\n <Container onClick={onClose}>\n <FocusLock autoFocus>\n <CloseDrawerContext.Provider value={onClose}>\n <Content\n placement={placement}\n width={width}\n visible={visible}\n size={size}\n tabIndex={-1}\n onKeyDown={keyDownHandler}\n onClick={clickHandler}\n role='dialog'\n aria-modal\n {...rest}\n ref={ref}\n >\n {children}\n </Content>\n </CloseDrawerContext.Provider>\n </FocusLock>\n </Container>\n </Portal>\n );\n }\n);\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["css","keyframes","styled","Portal","enableScrollingStyles","resetFocusStyles","sizeStyles","clr","useTheme","omitEmotionProps","useBodyScroll","useClosable","React","forwardRef","useCallback","useContext","FocusLock","ModalMask","DRAWER_CONTAINER_Z_INDEX","DRAWER_BOX_SHADOW_SIZE_EM","DrawerMask","Container","div","placementLeftFadeIn","placementLeftFadeOut","placementRightFadeIn","placementRightFadeOut","placementLeftVisibleStyles","p","placement","visible","theme","transitionDelay","placementLeftInvisibleStyles","placementRightVisibleStyles","placementRightInvisibleStyles","Content","width","colorBg","colorText","drawerColorBoxShadow","CloseDrawerContext","createContext","useCloseDrawer","Drawer","onClose","size","children","onClick","rest","ref","mounted","clickHandler","e","stopPropagation","keyDownHandler","key","createElement","autoFocus","Provider","value","_extends","tabIndex","onKeyDown","role","displayName"],"sources":["../../../src/Drawer/index.tsx"],"sourcesContent":["import { css, keyframes } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport Portal from '@os-design/portal';\nimport {\n WithSize,\n enableScrollingStyles,\n resetFocusStyles,\n sizeStyles,\n} from '@os-design/styles';\nimport { clr, useTheme } from '@os-design/theming';\nimport { omitEmotionProps, useBodyScroll, useClosable } from '@os-design/utils';\nimport React, { forwardRef, useCallback, useContext } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport { ModalMask } from '../Modal';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface DrawerProps extends JsxDivProps, WithSize {\n /**\n * The placement of the drawer.\n * @default right\n */\n placement?: 'left' | 'right';\n /**\n * The width of the drawer.\n * @default 15em\n */\n width?: string;\n /**\n * Whether the drawer is visible.\n * @default false\n */\n visible?: boolean;\n /**\n * Specifies a callback that will be called when a user clicks the mask.\n * The callback should set the visible state to false.\n * @default undefined\n */\n onClose?: () => void;\n}\n\nconst DRAWER_CONTAINER_Z_INDEX = 1000;\nconst DRAWER_BOX_SHADOW_SIZE_EM = 1;\n\nconst DrawerMask = styled(ModalMask)`\n z-index: ${DRAWER_CONTAINER_Z_INDEX};\n`;\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n z-index: ${DRAWER_CONTAINER_Z_INDEX};\n`;\n\nconst placementLeftFadeIn = keyframes`\n from { transform: translateX(calc(-100% - ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateX(0); }\n`;\n\nconst placementLeftFadeOut = keyframes`\n from { transform: translateX(0); }\n to { transform: translateX(calc(-100% - ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst placementRightFadeIn = keyframes`\n from { transform: translateX(calc(100vw + ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateX(calc(100vw - 100%)); }\n`;\n\nconst placementRightFadeOut = keyframes`\n from { transform: translateX(calc(100vw - 100%)); }\n to { transform: translateX(calc(100vw + ${DRAWER_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst placementLeftVisibleStyles = (p) =>\n p.placement === 'left' &&\n p.visible &&\n css`\n animation: ${placementLeftFadeIn} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst placementLeftInvisibleStyles = (p) =>\n p.placement === 'left' &&\n !p.visible &&\n css`\n animation: ${placementLeftFadeOut} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst placementRightVisibleStyles = (p) =>\n p.placement === 'right' &&\n p.visible &&\n css`\n animation: ${placementRightFadeIn} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst placementRightInvisibleStyles = (p) =>\n p.placement === 'right' &&\n !p.visible &&\n css`\n animation: ${placementRightFadeOut} ${p.theme.transitionDelay}ms forwards;\n `;\n\ntype ContentProps = Pick<\n DrawerProps,\n 'placement' | 'width' | 'visible' | 'size'\n>;\nconst Content = styled(\n 'div',\n omitEmotionProps('placement', 'width', 'visible', 'size')\n)<ContentProps>`\n ${resetFocusStyles};\n\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${(p) => p.width};\n max-width: 90%;\n padding-bottom: env(safe-area-inset-bottom);\n\n background-color: ${(p) => clr(p.theme.colorBg)};\n color: ${(p) => clr(p.theme.colorText)};\n box-shadow: 0 0 ${DRAWER_BOX_SHADOW_SIZE_EM}em\n ${(p) => clr(p.theme.drawerColorBoxShadow)};\n\n ${placementLeftVisibleStyles};\n ${placementLeftInvisibleStyles};\n ${placementRightVisibleStyles};\n ${placementRightInvisibleStyles};\n\n ${enableScrollingStyles('y')};\n ${sizeStyles};\n`;\n\nconst CloseDrawerContext = React.createContext<() => void>(() => {});\n\nexport const useCloseDrawer = () => useContext(CloseDrawerContext);\n\n/**\n * The side panel that appears from the edge of the screen.\n */\nconst Drawer = forwardRef<HTMLDivElement, DrawerProps>(\n (\n {\n placement = 'right',\n width = '15em',\n visible = false,\n onClose = () => {},\n size,\n children,\n onClick = () => {},\n ...rest\n },\n ref\n ) => {\n const { theme } = useTheme();\n const mounted = useClosable(visible, theme.transitionDelay);\n\n useBodyScroll(!visible);\n\n const clickHandler = useCallback(\n (e) => {\n e.stopPropagation();\n onClick(e);\n },\n [onClick]\n );\n\n const keyDownHandler = useCallback(\n (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n onClose();\n }\n },\n [onClose]\n );\n\n if (!mounted) return null;\n\n return (\n <Portal>\n <DrawerMask visible={visible} />\n <Container onClick={onClose}>\n <FocusLock autoFocus>\n <CloseDrawerContext.Provider value={onClose}>\n <Content\n placement={placement}\n width={width}\n visible={visible}\n size={size}\n tabIndex={-1}\n onKeyDown={keyDownHandler}\n onClick={clickHandler}\n role='dialog'\n aria-modal\n {...rest}\n ref={ref}\n >\n {children}\n </Content>\n </CloseDrawerContext.Provider>\n </FocusLock>\n </Container>\n </Portal>\n );\n }\n);\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Form/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
3
|
import { sizeStyles } from '@os-design/styles';
|
|
4
4
|
import { omitEmotionProps } from '@os-design/utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styled","sizeStyles","omitEmotionProps","React","forwardRef","useMemo","FormConfigContext","StyledForm","Form","optionalText","rest","ref","memoizedOptionalText","createElement","Provider","value","_extends","displayName"],"sources":["../../../src/Form/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { WithSize, sizeStyles } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef, useMemo } from 'react';\nimport FormConfigContext from './FormConfigContext';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface FormProps extends JsxDivProps, WithSize {\n /**\n * The text that is displayed to the right of the label of the optional field.\n * @default optional\n */\n optionalText?: string;\n}\n\nconst StyledForm = styled('div', omitEmotionProps('size'))<WithSize>`\n max-width: 50em;\n\n & > * + * {\n margin-top: 1em;\n }\n & > style + * {\n margin-top: 0;\n }\n\n ${sizeStyles};\n`;\n\n/**\n * The wrapper of the form.\n */\nconst Form = forwardRef<HTMLDivElement, FormProps>(\n ({ optionalText = 'optional', ...rest }, ref) => {\n const memoizedOptionalText = useMemo(\n () => ({ optionalText }),\n [optionalText]\n );\n\n return (\n <FormConfigContext.Provider value={memoizedOptionalText}>\n <StyledForm {...rest} ref={ref} />\n </FormConfigContext.Provider>\n );\n }\n);\n\nForm.displayName = 'Form';\n\nexport default Form;\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAAmBC,UAAU,QAAQ,mBAAmB;AACxD,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD,OAAOC,iBAAiB,MAAM,qBAAqB;AAWnD,MAAMC,UAAU,GAAGP,MAAM,CAAC,KAAK,EAAEE,gBAAgB,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","sizeStyles","omitEmotionProps","React","forwardRef","useMemo","FormConfigContext","StyledForm","Form","optionalText","rest","ref","memoizedOptionalText","createElement","Provider","value","_extends","displayName"],"sources":["../../../src/Form/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { WithSize, sizeStyles } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef, useMemo } from 'react';\nimport FormConfigContext from './FormConfigContext';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface FormProps extends JsxDivProps, WithSize {\n /**\n * The text that is displayed to the right of the label of the optional field.\n * @default optional\n */\n optionalText?: string;\n}\n\nconst StyledForm = styled('div', omitEmotionProps('size'))<WithSize>`\n max-width: 50em;\n\n & > * + * {\n margin-top: 1em;\n }\n & > style + * {\n margin-top: 0;\n }\n\n ${sizeStyles};\n`;\n\n/**\n * The wrapper of the form.\n */\nconst Form = forwardRef<HTMLDivElement, FormProps>(\n ({ optionalText = 'optional', ...rest }, ref) => {\n const memoizedOptionalText = useMemo(\n () => ({ optionalText }),\n [optionalText]\n );\n\n return (\n <FormConfigContext.Provider value={memoizedOptionalText}>\n <StyledForm {...rest} ref={ref} />\n </FormConfigContext.Provider>\n );\n }\n);\n\nForm.displayName = 'Form';\n\nexport default Form;\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAAmBC,UAAU,QAAQ,mBAAmB;AACxD,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD,OAAOC,iBAAiB,MAAM,qBAAqB;AAWnD,MAAMC,UAAU,GAAGP,MAAM,CAAC,KAAK,EAAEE,gBAAgB,CAAC,MAAM,CAAC,CAAW;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,UAAU;AACd,CAAC;;AAED;AACA;AACA;AACA,MAAMO,IAAI,gBAAGJ,UAAU,CACrB,CAAC;EAAEK,YAAY,GAAG,UAAU;EAAE,GAAGC;AAAK,CAAC,EAAEC,GAAG,KAAK;EAC/C,MAAMC,oBAAoB,GAAGP,OAAO,CAClC,OAAO;IAAEI;EAAa,CAAC,CAAC,EACxB,CAACA,YAAY,CACf,CAAC;EAED,oBACEN,KAAA,CAAAU,aAAA,CAACP,iBAAiB,CAACQ,QAAQ;IAACC,KAAK,EAAEH;EAAqB,gBACtDT,KAAA,CAAAU,aAAA,CAACN,UAAU,EAAAS,QAAA,KAAKN,IAAI;IAAEC,GAAG,EAAEA;EAAI,EAAE,CACP,CAAC;AAEjC,CACF,CAAC;AAEDH,IAAI,CAACS,WAAW,GAAG,MAAM;AAEzB,eAAeT,IAAI","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
3
|
import { ellipsisStyles, sizeStyles } from '@os-design/styles';
|
|
4
4
|
import { clr } from '@os-design/theming';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styled","ellipsisStyles","sizeStyles","clr","omitEmotionProps","React","forwardRef","Container","p","theme","formDividerColor","Content","div","Title","colorText","sizes","large","Description","inputColorPlaceholder","small","FormDivider","title","description","rest","ref","createElement","_extends","role","displayName"],"sources":["../../../src/FormDivider/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { ellipsisStyles, sizeStyles, WithSize } from '@os-design/styles';\nimport { clr } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef } from 'react';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface FormDividerProps extends JsxDivProps, WithSize {\n /**\n * The title that is in the center of the divider.\n */\n title: string;\n /**\n * The description that is under the title.\n * @default undefined\n */\n description?: string;\n}\n\nconst Container = styled('div', omitEmotionProps('size'))<WithSize>`\n display: flex;\n align-items: center;\n margin: 3em 0 1em;\n\n &::before,\n &::after {\n content: '';\n flex: 1;\n min-width: 5%;\n max-width: 50%;\n border-top: 1px solid ${(p) => clr(p.theme.formDividerColor)};\n }\n\n ${sizeStyles};\n`;\n\nconst Content = styled.div`\n padding: 0 1.5em;\n text-align: center;\n overflow: hidden;\n`;\n\nconst Title = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n font-size: ${(p) => p.theme.sizes.large}em;\n font-weight: 500;\n ${ellipsisStyles};\n`;\n\nconst Description = styled.div`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n font-size: ${(p) => p.theme.sizes.small}em;\n line-height: 1.2;\n ${ellipsisStyles};\n`;\n\n/**\n * The divider line for separating the various elements of the form.\n */\nconst FormDivider = forwardRef<HTMLDivElement, FormDividerProps>(\n ({ title, description, ...rest }, ref) => (\n <Container role='separator' {...rest} ref={ref}>\n <Content>\n <Title>{title}</Title>\n <Description>{description}</Description>\n </Content>\n </Container>\n )\n);\n\nFormDivider.displayName = 'FormDivider';\n\nexport default FormDivider;\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,cAAc,EAAEC,UAAU,QAAkB,mBAAmB;AACxE,SAASC,GAAG,QAAQ,oBAAoB;AACxC,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,IAAIC,UAAU,QAAQ,OAAO;AAezC,MAAMC,SAAS,GAAGP,MAAM,CAAC,KAAK,EAAEI,gBAAgB,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","ellipsisStyles","sizeStyles","clr","omitEmotionProps","React","forwardRef","Container","p","theme","formDividerColor","Content","div","Title","colorText","sizes","large","Description","inputColorPlaceholder","small","FormDivider","title","description","rest","ref","createElement","_extends","role","displayName"],"sources":["../../../src/FormDivider/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { ellipsisStyles, sizeStyles, WithSize } from '@os-design/styles';\nimport { clr } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef } from 'react';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface FormDividerProps extends JsxDivProps, WithSize {\n /**\n * The title that is in the center of the divider.\n */\n title: string;\n /**\n * The description that is under the title.\n * @default undefined\n */\n description?: string;\n}\n\nconst Container = styled('div', omitEmotionProps('size'))<WithSize>`\n display: flex;\n align-items: center;\n margin: 3em 0 1em;\n\n &::before,\n &::after {\n content: '';\n flex: 1;\n min-width: 5%;\n max-width: 50%;\n border-top: 1px solid ${(p) => clr(p.theme.formDividerColor)};\n }\n\n ${sizeStyles};\n`;\n\nconst Content = styled.div`\n padding: 0 1.5em;\n text-align: center;\n overflow: hidden;\n`;\n\nconst Title = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n font-size: ${(p) => p.theme.sizes.large}em;\n font-weight: 500;\n ${ellipsisStyles};\n`;\n\nconst Description = styled.div`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n font-size: ${(p) => p.theme.sizes.small}em;\n line-height: 1.2;\n ${ellipsisStyles};\n`;\n\n/**\n * The divider line for separating the various elements of the form.\n */\nconst FormDivider = forwardRef<HTMLDivElement, FormDividerProps>(\n ({ title, description, ...rest }, ref) => (\n <Container role='separator' {...rest} ref={ref}>\n <Content>\n <Title>{title}</Title>\n <Description>{description}</Description>\n </Content>\n </Container>\n )\n);\n\nFormDivider.displayName = 'FormDivider';\n\nexport default FormDivider;\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,cAAc,EAAEC,UAAU,QAAkB,mBAAmB;AACxE,SAASC,GAAG,QAAQ,oBAAoB;AACxC,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,IAAIC,UAAU,QAAQ,OAAO;AAezC,MAAMC,SAAS,GAAGP,MAAM,CAAC,KAAK,EAAEI,gBAAgB,CAAC,MAAM,CAAC,CAAW;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA6BI,CAAC,IAAKL,GAAG,CAACK,CAAC,CAACC,KAAK,CAACC,gBAAgB,CAAC;AAChE;AACA;AACA,IAAIR,UAAU;AACd,CAAC;AAED,MAAMS,OAAO,GAAGX,MAAM,CAACY,GAAG;AAC1B;AACA;AACA;AACA,CAAC;AAED,MAAMC,KAAK,GAAGb,MAAM,CAACY,GAAG;AACxB,WAAYJ,CAAC,IAAKL,GAAG,CAACK,CAAC,CAACC,KAAK,CAACK,SAAS,CAAC;AACxC,eAAgBN,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACM,KAAK,CAACC,KAAK;AACzC;AACA,IAAIf,cAAc;AAClB,CAAC;AAED,MAAMgB,WAAW,GAAGjB,MAAM,CAACY,GAAG;AAC9B,WAAYJ,CAAC,IAAKL,GAAG,CAACK,CAAC,CAACC,KAAK,CAACS,qBAAqB,CAAC;AACpD,eAAgBV,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACM,KAAK,CAACI,KAAK;AACzC;AACA,IAAIlB,cAAc;AAClB,CAAC;;AAED;AACA;AACA;AACA,MAAMmB,WAAW,gBAAGd,UAAU,CAC5B,CAAC;EAAEe,KAAK;EAAEC,WAAW;EAAE,GAAGC;AAAK,CAAC,EAAEC,GAAG,kBACnCnB,KAAA,CAAAoB,aAAA,CAAClB,SAAS,EAAAmB,QAAA;EAACC,IAAI,EAAC;AAAW,GAAKJ,IAAI;EAAEC,GAAG,EAAEA;AAAI,iBAC7CnB,KAAA,CAAAoB,aAAA,CAACd,OAAO,qBACNN,KAAA,CAAAoB,aAAA,CAACZ,KAAK,QAAEQ,KAAa,CAAC,eACtBhB,KAAA,CAAAoB,aAAA,CAACR,WAAW,QAAEK,WAAyB,CAChC,CACA,CAEf,CAAC;AAEDF,WAAW,CAACQ,WAAW,GAAG,aAAa;AAEvC,eAAeR,WAAW","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
3
|
import { sizeStyles } from '@os-design/styles';
|
|
4
4
|
import { clr, ThemeOverrider } from '@os-design/theming';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styled","sizeStyles","clr","ThemeOverrider","omitEmotionProps","React","forwardRef","useContext","useMemo","FormConfigContext","Container","Label","label","p","theme","sizes","small","colorText","Optional","span","formItemColorOptional","Help","div","formItemColorHelp","Error","formItemColorError","FormItem","help","error","optional","id","children","rest","ref","optionalText","containerId","Math","random","toString","slice","fieldId","helpId","ariaInvalid","ariaDescribedBy","undefined","createElement","_extends","role","htmlFor","overrides","inputColorBorder","displayName"],"sources":["../../../src/FormItem/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef, useContext, useMemo } from 'react';\nimport FormConfigContext from '../Form/FormConfigContext';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface FormItemProps extends JsxDivProps, WithSize {\n /**\n * Label of the field.\n * @default undefined\n */\n label?: string;\n /**\n * The help message located at the bottom of the field.\n * @default undefined\n */\n help?: string;\n /**\n * The error message located at the bottom of the field.\n * If specified, the field has a red border.\n * @default undefined\n */\n error?: string | null;\n /**\n * Whether the field is optional.\n * @default false\n */\n optional?: boolean;\n}\n\nconst Container = styled('div', omitEmotionProps('size'))<WithSize>`\n ${sizeStyles};\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin-bottom: 0.4em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.colorText)};\n`;\n\nconst Optional = styled.span`\n color: ${(p) => clr(p.theme.formItemColorOptional)};\n margin-left: 0.3em;\n`;\n\nconst Help = styled.div`\n margin-top: 0.1em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.formItemColorHelp)};\n`;\n\nconst Error = styled(Help)`\n color: ${(p) => clr(p.theme.formItemColorError)};\n`;\n\n/**\n * The wrapper of the field.\n */\nconst FormItem = forwardRef<HTMLDivElement, FormItemProps>(\n ({ label, help, error, optional = false, id, children, ...rest }, ref) => {\n const { optionalText } = useContext(FormConfigContext);\n\n const containerId = useMemo(\n () => id || Math.random().toString(36).slice(2, 11),\n [id]\n );\n const fieldId = useMemo(() => `field-${containerId}`, [containerId]);\n const helpId = useMemo(() => `help-${containerId}`, [containerId]);\n const ariaInvalid = useMemo(() => !!error, [error]);\n const ariaDescribedBy = useMemo(\n () => (help ? helpId : undefined),\n [help, helpId]\n );\n\n return (\n <Container role='group' id={id} {...rest} ref={ref}>\n {label && (\n <Label htmlFor={fieldId}>\n {label}\n {optional && <Optional>({optionalText})</Optional>}\n </Label>\n )}\n\n <div\n id={fieldId}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedBy}\n >\n <ThemeOverrider\n overrides={(theme) => ({\n inputColorBorder: error\n ? theme.formItemColorError\n : theme.inputColorBorder,\n })}\n >\n {children}\n </ThemeOverrider>\n </div>\n\n {error ? (\n <Error aria-live='polite' id={helpId}>\n {error}\n </Error>\n ) : (\n help && <Help id={helpId}>{help}</Help>\n )}\n </Container>\n );\n }\n);\n\nFormItem.displayName = 'FormItem';\n\nexport default FormItem;\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,UAAU,QAAkB,mBAAmB;AACxD,SAASC,GAAG,EAAEC,cAAc,QAAQ,oBAAoB;AACxD,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,IAAIC,UAAU,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC9D,OAAOC,iBAAiB,MAAM,2BAA2B;AA2BzD,MAAMC,SAAS,GAAGV,MAAM,CAAC,KAAK,EAAEI,gBAAgB,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","sizeStyles","clr","ThemeOverrider","omitEmotionProps","React","forwardRef","useContext","useMemo","FormConfigContext","Container","Label","label","p","theme","sizes","small","colorText","Optional","span","formItemColorOptional","Help","div","formItemColorHelp","Error","formItemColorError","FormItem","help","error","optional","id","children","rest","ref","optionalText","containerId","Math","random","toString","slice","fieldId","helpId","ariaInvalid","ariaDescribedBy","undefined","createElement","_extends","role","htmlFor","overrides","inputColorBorder","displayName"],"sources":["../../../src/FormItem/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef, useContext, useMemo } from 'react';\nimport FormConfigContext from '../Form/FormConfigContext';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface FormItemProps extends JsxDivProps, WithSize {\n /**\n * Label of the field.\n * @default undefined\n */\n label?: string;\n /**\n * The help message located at the bottom of the field.\n * @default undefined\n */\n help?: string;\n /**\n * The error message located at the bottom of the field.\n * If specified, the field has a red border.\n * @default undefined\n */\n error?: string | null;\n /**\n * Whether the field is optional.\n * @default false\n */\n optional?: boolean;\n}\n\nconst Container = styled('div', omitEmotionProps('size'))<WithSize>`\n ${sizeStyles};\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin-bottom: 0.4em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.colorText)};\n`;\n\nconst Optional = styled.span`\n color: ${(p) => clr(p.theme.formItemColorOptional)};\n margin-left: 0.3em;\n`;\n\nconst Help = styled.div`\n margin-top: 0.1em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.formItemColorHelp)};\n`;\n\nconst Error = styled(Help)`\n color: ${(p) => clr(p.theme.formItemColorError)};\n`;\n\n/**\n * The wrapper of the field.\n */\nconst FormItem = forwardRef<HTMLDivElement, FormItemProps>(\n ({ label, help, error, optional = false, id, children, ...rest }, ref) => {\n const { optionalText } = useContext(FormConfigContext);\n\n const containerId = useMemo(\n () => id || Math.random().toString(36).slice(2, 11),\n [id]\n );\n const fieldId = useMemo(() => `field-${containerId}`, [containerId]);\n const helpId = useMemo(() => `help-${containerId}`, [containerId]);\n const ariaInvalid = useMemo(() => !!error, [error]);\n const ariaDescribedBy = useMemo(\n () => (help ? helpId : undefined),\n [help, helpId]\n );\n\n return (\n <Container role='group' id={id} {...rest} ref={ref}>\n {label && (\n <Label htmlFor={fieldId}>\n {label}\n {optional && <Optional>({optionalText})</Optional>}\n </Label>\n )}\n\n <div\n id={fieldId}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedBy}\n >\n <ThemeOverrider\n overrides={(theme) => ({\n inputColorBorder: error\n ? theme.formItemColorError\n : theme.inputColorBorder,\n })}\n >\n {children}\n </ThemeOverrider>\n </div>\n\n {error ? (\n <Error aria-live='polite' id={helpId}>\n {error}\n </Error>\n ) : (\n help && <Help id={helpId}>{help}</Help>\n )}\n </Container>\n );\n }\n);\n\nFormItem.displayName = 'FormItem';\n\nexport default FormItem;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Status.js","names":["styled","clr","omitEmotionProps","React","Container","p","height","Block","count","index","current","theme","galleryStatusColorBgCurrent","galleryStatusColorBg","Status","createElement","Array","fill","map","_","key"],"sources":["../../../src/Gallery/Status.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { clr } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React from 'react';\n\ninterface StatusProps {\n count: number;\n current: number;\n height: number;\n}\n\ninterface ContainerProps {\n height: number;\n}\nconst Container = styled('div', omitEmotionProps('height'))<ContainerProps>`\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: ${(p) => p.height}px;\n`;\n\ninterface BlockProps {\n count: number;\n index: number;\n current: boolean;\n}\nconst Block = styled(\n 'div',\n omitEmotionProps('count', 'index', 'current')\n)<BlockProps>`\n position: absolute;\n left: ${(p) => (100 / p.count) * p.index}%;\n width: ${(p) =>\n p.index < p.count - 1\n ? `calc(${100 / p.count}% - 2px)`\n : `${100 / p.count}%`};\n height: 100%;\n\n background-color: ${(p) =>\n p.current\n ? clr(p.theme.galleryStatusColorBgCurrent)\n : clr(p.theme.galleryStatusColorBg)};\n backdrop-filter: blur(0.2em);\n`;\n\nconst Status: React.FC<StatusProps> = ({ count, current, height }) => (\n <Container height={height}>\n {Array(count)\n .fill(0)\n .map((_, index) => (\n <Block\n key={index} // eslint-disable-line react/no-array-index-key\n count={count}\n index={index}\n current={index === current}\n />\n ))}\n </Container>\n);\n\nexport default Status;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,GAAG,QAAQ,oBAAoB;AACxC,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,MAAM,OAAO;AAWzB,MAAMC,SAAS,GAAGJ,MAAM,CAAC,KAAK,EAAEE,gBAAgB,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"Status.js","names":["styled","clr","omitEmotionProps","React","Container","p","height","Block","count","index","current","theme","galleryStatusColorBgCurrent","galleryStatusColorBg","Status","createElement","Array","fill","map","_","key"],"sources":["../../../src/Gallery/Status.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { clr } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React from 'react';\n\ninterface StatusProps {\n count: number;\n current: number;\n height: number;\n}\n\ninterface ContainerProps {\n height: number;\n}\nconst Container = styled('div', omitEmotionProps('height'))<ContainerProps>`\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: ${(p) => p.height}px;\n`;\n\ninterface BlockProps {\n count: number;\n index: number;\n current: boolean;\n}\nconst Block = styled(\n 'div',\n omitEmotionProps('count', 'index', 'current')\n)<BlockProps>`\n position: absolute;\n left: ${(p) => (100 / p.count) * p.index}%;\n width: ${(p) =>\n p.index < p.count - 1\n ? `calc(${100 / p.count}% - 2px)`\n : `${100 / p.count}%`};\n height: 100%;\n\n background-color: ${(p) =>\n p.current\n ? clr(p.theme.galleryStatusColorBgCurrent)\n : clr(p.theme.galleryStatusColorBg)};\n backdrop-filter: blur(0.2em);\n`;\n\nconst Status: React.FC<StatusProps> = ({ count, current, height }) => (\n <Container height={height}>\n {Array(count)\n .fill(0)\n .map((_, index) => (\n <Block\n key={index} // eslint-disable-line react/no-array-index-key\n count={count}\n index={index}\n current={index === current}\n />\n ))}\n </Container>\n);\n\nexport default Status;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,GAAG,QAAQ,oBAAoB;AACxC,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,MAAM,OAAO;AAWzB,MAAMC,SAAS,GAAGJ,MAAM,CAAC,KAAK,EAAEE,gBAAgB,CAAC,QAAQ,CAAC,CAAiB;AAC3E;AACA;AACA;AACA;AACA,YAAaG,CAAC,IAAKA,CAAC,CAACC,MAAM;AAC3B,CAAC;AAOD,MAAMC,KAAK,GAAGP,MAAM,CAClB,KAAK,EACLE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAC9C,CAAa;AACb;AACA,UAAWG,CAAC,IAAM,GAAG,GAAGA,CAAC,CAACG,KAAK,GAAIH,CAAC,CAACI,KAAK;AAC1C,WAAYJ,CAAC,IACTA,CAAC,CAACI,KAAK,GAAGJ,CAAC,CAACG,KAAK,GAAG,CAAC,GACjB,QAAQ,GAAG,GAAGH,CAAC,CAACG,KAAK,UAAU,GAC/B,GAAG,GAAG,GAAGH,CAAC,CAACG,KAAK,GAAG;AAC3B;AACA;AACA,sBAAuBH,CAAC,IACpBA,CAAC,CAACK,OAAO,GACLT,GAAG,CAACI,CAAC,CAACM,KAAK,CAACC,2BAA2B,CAAC,GACxCX,GAAG,CAACI,CAAC,CAACM,KAAK,CAACE,oBAAoB,CAAC;AACzC;AACA,CAAC;AAED,MAAMC,MAA6B,GAAGA,CAAC;EAAEN,KAAK;EAAEE,OAAO;EAAEJ;AAAO,CAAC,kBAC/DH,KAAA,CAAAY,aAAA,CAACX,SAAS;EAACE,MAAM,EAAEA;AAAO,GACvBU,KAAK,CAACR,KAAK,CAAC,CACVS,IAAI,CAAC,CAAC,CAAC,CACPC,GAAG,CAAC,CAACC,CAAC,EAAEV,KAAK,kBACZN,KAAA,CAAAY,aAAA,CAACR,KAAK;EACJa,GAAG,EAAEX,KAAM,CAAC;EAAA;EACZD,KAAK,EAAEA,KAAM;EACbC,KAAK,EAAEA,KAAM;EACbC,OAAO,EAAED,KAAK,KAAKC;AAAQ,CAC5B,CACF,CACM,CACZ;AAED,eAAeI,MAAM","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
3
|
import { Left, Right } from '@os-design/icons';
|
|
4
4
|
import { ThemeOverrider, clr } from '@os-design/theming';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styled","Left","Right","ThemeOverrider","clr","isTouchDevice","omitEmotionProps","useForwardedRef","useSize","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","Button","Image","GalleryStatus","Container","p","heightPercent","theme","galleryColorBg","borderRadius","StyledImage","NavButton","LeftButton","RightButton","MIN_DIST_PX","MAX_ANGLE","Gallery","urls","aspectRatio","imageProps","hideArrows","children","rest","ref","innerContainerRef","mergedContainerRef","imageUrl","setImageUrl","undefined","imageIndex","setImageIndex","length","Math","round","imageIndexRef","current","startTouchPosRef","size","sizeRef","statusHeight","height","updateGalleryImage","clientX","x","getBoundingClientRect","widthPerImage","width","xPos","nextIndex","floor","prev","index","next","left","e","preventDefault","right","mouseMoveHandler","touchStartHandler","clientY","touches","y","touchMoveHandler","diffX","abs","diffY","diff","sqrt","angle","atan","PI","touchEndHandler","handlers","onTouchStart","onTouchMove","onTouchEnd","onMouseMove","createElement","activeTheme","_extends","url","Fragment","count","overrides","colorPrimary","type","wide","onClick"],"sources":["../../../src/Gallery/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Left, Right } from '@os-design/icons';\nimport { ThemeOverrider, clr } from '@os-design/theming';\nimport {\n isTouchDevice,\n omitEmotionProps,\n useForwardedRef,\n useSize,\n} from '@os-design/utils';\nimport React, {\n MouseEventHandler,\n TouchEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Image, { ImageProps } from '../Image';\nimport GalleryStatus from './Status';\n\ninterface ContainerProps {\n heightPercent: number;\n}\nconst Container = styled(\n 'div',\n omitEmotionProps('heightPercent')\n)<ContainerProps>`\n position: relative;\n padding-bottom: ${(p) => p.heightPercent}%;\n\n display: flex;\n justify-content: center;\n\n background-color: ${(p) => clr(p.theme.galleryColorBg)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n overflow: hidden;\n`;\n\nconst StyledImage = styled(Image)`\n position: absolute;\n width: auto;\n height: 100%;\n border-radius: 0;\n`;\n\nconst NavButton = styled(Button)`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n\n background-color: hsla(0, 0%, 0%, 0.5);\n backdrop-filter: blur(0.2em);\n`;\n\nconst LeftButton = styled(NavButton)`\n left: 0.2em;\n`;\n\nconst RightButton = styled(NavButton)`\n right: 0.2em;\n`;\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface GalleryProps extends JsxDivProps {\n /**\n * The image urls.\n */\n urls: string[] | ReadonlyArray<string>;\n /**\n * The aspect ratio of the gallery.\n * E.g. [16,9] – 16:9.\n */\n aspectRatio?: [number, number];\n /**\n * The props of the image component.\n */\n imageProps?: Omit<ImageProps, 'url'>;\n /**\n * Whether the navigation buttons is shown.\n */\n hideArrows?: boolean;\n /**\n * The children that can be displayed on top of the image.\n * E.g. tags.\n */\n children?: React.ReactNode;\n}\n\nconst MIN_DIST_PX = 30;\nconst MAX_ANGLE = 30;\n\n/**\n * The image gallery. Change the cursor/touch position to change images.\n * The lib 'lazysizes/plugins/attrchange/ls.attrchange' must be imported.\n */\nconst Gallery = forwardRef<HTMLDivElement, GalleryProps>(\n (\n {\n urls,\n aspectRatio = [16, 9],\n imageProps = {},\n hideArrows = false,\n children,\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] = useForwardedRef(ref);\n\n const [imageUrl, setImageUrl] = useState<string | undefined>(undefined);\n const [imageIndex, setImageIndex] = useState(urls.length > 0 ? 0 : null);\n\n const heightPercent = useMemo(\n () => Math.round((aspectRatio[1] / aspectRatio[0]) * 1000000) / 10000,\n [aspectRatio]\n );\n\n const imageIndexRef = useRef(imageIndex);\n useEffect(() => {\n imageIndexRef.current = imageIndex;\n }, [imageIndex]);\n\n // Update the image if the index was changed\n useEffect(() => {\n setImageUrl(imageIndex !== null ? urls[imageIndex] : undefined);\n }, [imageIndex, urls]);\n\n const startTouchPosRef = useRef<{ x: number; y: number } | null>(null);\n\n const size = useSize(innerContainerRef);\n const sizeRef = useRef(size);\n useEffect(() => {\n sizeRef.current = size;\n }, [size]);\n\n const statusHeight = useMemo(\n () => Math.round(size.height / 70),\n [size.height]\n );\n\n const updateGalleryImage = useCallback(\n (clientX: number) => {\n if (!innerContainerRef.current) return;\n const { x } = innerContainerRef.current.getBoundingClientRect();\n const widthPerImage = sizeRef.current.width / urls.length;\n const xPos = clientX - x;\n if (xPos < 0) return;\n const nextIndex = Math.floor(xPos / widthPerImage);\n if (imageIndexRef.current !== nextIndex) {\n setImageIndex(nextIndex);\n }\n },\n [innerContainerRef, urls.length]\n );\n\n const prev = useCallback(() => {\n const index = imageIndexRef.current;\n if (index === null) return;\n setImageIndex(index > 0 ? index - 1 : urls.length - 1);\n }, [urls.length]);\n\n const next = useCallback(() => {\n const index = imageIndexRef.current;\n if (index === null) return;\n setImageIndex(index < urls.length - 1 ? index + 1 : 0);\n }, [urls.length]);\n\n const left = useCallback<MouseEventHandler>(\n (e) => {\n prev();\n e.preventDefault();\n },\n [prev]\n );\n\n const right = useCallback<MouseEventHandler>(\n (e) => {\n next();\n e.preventDefault();\n },\n [next]\n );\n\n const mouseMoveHandler = useCallback<MouseEventHandler<HTMLDivElement>>(\n (e) => updateGalleryImage(e.clientX),\n [updateGalleryImage]\n );\n\n const touchStartHandler = useCallback<TouchEventHandler<HTMLDivElement>>(\n (e) => {\n const { clientX, clientY } = e.touches[0];\n startTouchPosRef.current = { x: clientX, y: clientY };\n },\n []\n );\n\n const touchMoveHandler = useCallback<TouchEventHandler<HTMLDivElement>>(\n (e) => {\n if (!startTouchPosRef.current) return;\n const { x, y } = startTouchPosRef.current;\n const { clientX, clientY } = e.touches[0];\n const diffX = Math.abs(x - clientX);\n const diffY = Math.abs(y - clientY);\n const diff = Math.sqrt(diffX ** 2 + diffY ** 2);\n if (diff < MIN_DIST_PX) return;\n const angle = (Math.atan(diffY / diffX) * 180) / Math.PI;\n if (angle > MAX_ANGLE) {\n startTouchPosRef.current = null;\n return;\n }\n if (x < clientX) prev();\n else next();\n startTouchPosRef.current = null;\n },\n [next, prev]\n );\n\n const touchEndHandler = useCallback<\n TouchEventHandler<HTMLDivElement>\n >(() => {\n startTouchPosRef.current = null;\n }, []);\n\n const handlers = useMemo(() => {\n if (isTouchDevice()) {\n return {\n onTouchStart: touchStartHandler,\n onTouchMove: touchMoveHandler,\n onTouchEnd: touchEndHandler,\n };\n }\n return {\n onMouseMove: mouseMoveHandler,\n };\n }, [\n mouseMoveHandler,\n touchEndHandler,\n touchMoveHandler,\n touchStartHandler,\n ]);\n\n return (\n <ThemeOverrider activeTheme='dark'>\n <Container\n heightPercent={heightPercent}\n {...handlers}\n {...rest}\n ref={mergedContainerRef}\n >\n <StyledImage url={imageUrl} {...imageProps} />\n {urls.length > 1 && imageIndex !== null && (\n <>\n <GalleryStatus\n count={urls.length}\n current={imageIndex}\n height={statusHeight}\n />\n {isTouchDevice() && !hideArrows && (\n <ThemeOverrider overrides={{ colorPrimary: [0, 0, 100] }}>\n <LeftButton\n type='ghost'\n wide='never'\n size='small'\n onClick={left}\n >\n <Left />\n </LeftButton>\n <RightButton\n type='ghost'\n wide='never'\n size='small'\n onClick={right}\n >\n <Right />\n </RightButton>\n </ThemeOverrider>\n )}\n </>\n )}\n {children}\n </Container>\n </ThemeOverrider>\n );\n }\n);\n\nexport default Gallery;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","Left","Right","ThemeOverrider","clr","isTouchDevice","omitEmotionProps","useForwardedRef","useSize","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","Button","Image","GalleryStatus","Container","p","heightPercent","theme","galleryColorBg","borderRadius","StyledImage","NavButton","LeftButton","RightButton","MIN_DIST_PX","MAX_ANGLE","Gallery","urls","aspectRatio","imageProps","hideArrows","children","rest","ref","innerContainerRef","mergedContainerRef","imageUrl","setImageUrl","undefined","imageIndex","setImageIndex","length","Math","round","imageIndexRef","current","startTouchPosRef","size","sizeRef","statusHeight","height","updateGalleryImage","clientX","x","getBoundingClientRect","widthPerImage","width","xPos","nextIndex","floor","prev","index","next","left","e","preventDefault","right","mouseMoveHandler","touchStartHandler","clientY","touches","y","touchMoveHandler","diffX","abs","diffY","diff","sqrt","angle","atan","PI","touchEndHandler","handlers","onTouchStart","onTouchMove","onTouchEnd","onMouseMove","createElement","activeTheme","_extends","url","Fragment","count","overrides","colorPrimary","type","wide","onClick"],"sources":["../../../src/Gallery/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Left, Right } from '@os-design/icons';\nimport { ThemeOverrider, clr } from '@os-design/theming';\nimport {\n isTouchDevice,\n omitEmotionProps,\n useForwardedRef,\n useSize,\n} from '@os-design/utils';\nimport React, {\n MouseEventHandler,\n TouchEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Image, { ImageProps } from '../Image';\nimport GalleryStatus from './Status';\n\ninterface ContainerProps {\n heightPercent: number;\n}\nconst Container = styled(\n 'div',\n omitEmotionProps('heightPercent')\n)<ContainerProps>`\n position: relative;\n padding-bottom: ${(p) => p.heightPercent}%;\n\n display: flex;\n justify-content: center;\n\n background-color: ${(p) => clr(p.theme.galleryColorBg)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n overflow: hidden;\n`;\n\nconst StyledImage = styled(Image)`\n position: absolute;\n width: auto;\n height: 100%;\n border-radius: 0;\n`;\n\nconst NavButton = styled(Button)`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n\n background-color: hsla(0, 0%, 0%, 0.5);\n backdrop-filter: blur(0.2em);\n`;\n\nconst LeftButton = styled(NavButton)`\n left: 0.2em;\n`;\n\nconst RightButton = styled(NavButton)`\n right: 0.2em;\n`;\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface GalleryProps extends JsxDivProps {\n /**\n * The image urls.\n */\n urls: string[] | ReadonlyArray<string>;\n /**\n * The aspect ratio of the gallery.\n * E.g. [16,9] – 16:9.\n */\n aspectRatio?: [number, number];\n /**\n * The props of the image component.\n */\n imageProps?: Omit<ImageProps, 'url'>;\n /**\n * Whether the navigation buttons is shown.\n */\n hideArrows?: boolean;\n /**\n * The children that can be displayed on top of the image.\n * E.g. tags.\n */\n children?: React.ReactNode;\n}\n\nconst MIN_DIST_PX = 30;\nconst MAX_ANGLE = 30;\n\n/**\n * The image gallery. Change the cursor/touch position to change images.\n * The lib 'lazysizes/plugins/attrchange/ls.attrchange' must be imported.\n */\nconst Gallery = forwardRef<HTMLDivElement, GalleryProps>(\n (\n {\n urls,\n aspectRatio = [16, 9],\n imageProps = {},\n hideArrows = false,\n children,\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] = useForwardedRef(ref);\n\n const [imageUrl, setImageUrl] = useState<string | undefined>(undefined);\n const [imageIndex, setImageIndex] = useState(urls.length > 0 ? 0 : null);\n\n const heightPercent = useMemo(\n () => Math.round((aspectRatio[1] / aspectRatio[0]) * 1000000) / 10000,\n [aspectRatio]\n );\n\n const imageIndexRef = useRef(imageIndex);\n useEffect(() => {\n imageIndexRef.current = imageIndex;\n }, [imageIndex]);\n\n // Update the image if the index was changed\n useEffect(() => {\n setImageUrl(imageIndex !== null ? urls[imageIndex] : undefined);\n }, [imageIndex, urls]);\n\n const startTouchPosRef = useRef<{ x: number; y: number } | null>(null);\n\n const size = useSize(innerContainerRef);\n const sizeRef = useRef(size);\n useEffect(() => {\n sizeRef.current = size;\n }, [size]);\n\n const statusHeight = useMemo(\n () => Math.round(size.height / 70),\n [size.height]\n );\n\n const updateGalleryImage = useCallback(\n (clientX: number) => {\n if (!innerContainerRef.current) return;\n const { x } = innerContainerRef.current.getBoundingClientRect();\n const widthPerImage = sizeRef.current.width / urls.length;\n const xPos = clientX - x;\n if (xPos < 0) return;\n const nextIndex = Math.floor(xPos / widthPerImage);\n if (imageIndexRef.current !== nextIndex) {\n setImageIndex(nextIndex);\n }\n },\n [innerContainerRef, urls.length]\n );\n\n const prev = useCallback(() => {\n const index = imageIndexRef.current;\n if (index === null) return;\n setImageIndex(index > 0 ? index - 1 : urls.length - 1);\n }, [urls.length]);\n\n const next = useCallback(() => {\n const index = imageIndexRef.current;\n if (index === null) return;\n setImageIndex(index < urls.length - 1 ? index + 1 : 0);\n }, [urls.length]);\n\n const left = useCallback<MouseEventHandler>(\n (e) => {\n prev();\n e.preventDefault();\n },\n [prev]\n );\n\n const right = useCallback<MouseEventHandler>(\n (e) => {\n next();\n e.preventDefault();\n },\n [next]\n );\n\n const mouseMoveHandler = useCallback<MouseEventHandler<HTMLDivElement>>(\n (e) => updateGalleryImage(e.clientX),\n [updateGalleryImage]\n );\n\n const touchStartHandler = useCallback<TouchEventHandler<HTMLDivElement>>(\n (e) => {\n const { clientX, clientY } = e.touches[0];\n startTouchPosRef.current = { x: clientX, y: clientY };\n },\n []\n );\n\n const touchMoveHandler = useCallback<TouchEventHandler<HTMLDivElement>>(\n (e) => {\n if (!startTouchPosRef.current) return;\n const { x, y } = startTouchPosRef.current;\n const { clientX, clientY } = e.touches[0];\n const diffX = Math.abs(x - clientX);\n const diffY = Math.abs(y - clientY);\n const diff = Math.sqrt(diffX ** 2 + diffY ** 2);\n if (diff < MIN_DIST_PX) return;\n const angle = (Math.atan(diffY / diffX) * 180) / Math.PI;\n if (angle > MAX_ANGLE) {\n startTouchPosRef.current = null;\n return;\n }\n if (x < clientX) prev();\n else next();\n startTouchPosRef.current = null;\n },\n [next, prev]\n );\n\n const touchEndHandler = useCallback<\n TouchEventHandler<HTMLDivElement>\n >(() => {\n startTouchPosRef.current = null;\n }, []);\n\n const handlers = useMemo(() => {\n if (isTouchDevice()) {\n return {\n onTouchStart: touchStartHandler,\n onTouchMove: touchMoveHandler,\n onTouchEnd: touchEndHandler,\n };\n }\n return {\n onMouseMove: mouseMoveHandler,\n };\n }, [\n mouseMoveHandler,\n touchEndHandler,\n touchMoveHandler,\n touchStartHandler,\n ]);\n\n return (\n <ThemeOverrider activeTheme='dark'>\n <Container\n heightPercent={heightPercent}\n {...handlers}\n {...rest}\n ref={mergedContainerRef}\n >\n <StyledImage url={imageUrl} {...imageProps} />\n {urls.length > 1 && imageIndex !== null && (\n <>\n <GalleryStatus\n count={urls.length}\n current={imageIndex}\n height={statusHeight}\n />\n {isTouchDevice() && !hideArrows && (\n <ThemeOverrider overrides={{ colorPrimary: [0, 0, 100] }}>\n <LeftButton\n type='ghost'\n wide='never'\n size='small'\n onClick={left}\n >\n <Left />\n </LeftButton>\n <RightButton\n type='ghost'\n wide='never'\n size='small'\n onClick={right}\n >\n <Right />\n </RightButton>\n </ThemeOverrider>\n )}\n </>\n )}\n {children}\n </Container>\n </ThemeOverrider>\n );\n }\n);\n\nexport default Gallery;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resetStyles.js","names":["css","resetStyles","theme","paragraphMarginBottom"],"sources":["../../../src/GlobalStyles/resetStyles.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { SerializedStyles } from '@emotion/serialize';\nimport { Theme } from '@os-design/theming';\n\nconst resetStyles = (theme: Theme): SerializedStyles => css`\n body {\n margin: 0;\n }\n\n p,\n figure,\n pre {\n margin: 0 0 ${theme.paragraphMarginBottom}em;\n }\n`;\n\nexport default resetStyles;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAIpC,MAAMC,WAAW,GAAIC,KAAY,IAAuBF,
|
|
1
|
+
{"version":3,"file":"resetStyles.js","names":["css","resetStyles","theme","paragraphMarginBottom"],"sources":["../../../src/GlobalStyles/resetStyles.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { SerializedStyles } from '@emotion/serialize';\nimport { Theme } from '@os-design/theming';\n\nconst resetStyles = (theme: Theme): SerializedStyles => css`\n body {\n margin: 0;\n }\n\n p,\n figure,\n pre {\n margin: 0 0 ${theme.paragraphMarginBottom}em;\n }\n`;\n\nexport default resetStyles;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAIpC,MAAMC,WAAW,GAAIC,KAAY,IAAuBF,GAAG;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBE,KAAK,CAACC,qBAAqB;AAC7C;AACA,CAAC;AAED,eAAeF,WAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typographyStyles.js","names":["css","m","clr","fp","headingsFontSizeStyles","fontSize","headings","literal","map","item","headingsMarginTopStyles","marginTop","h","typographyStyles","theme","colorText","lineHeight","min","md","xxl","s","colorBg","headingsMarginBottom","headingsMarginTop","headingsFontSize","headingsFontSizeMd"],"sources":["../../../src/GlobalStyles/typographyStyles.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { SerializedStyles } from '@emotion/serialize';\nimport { m } from '@os-design/media';\nimport { Theme, clr } from '@os-design/theming';\nimport fp from 'facepaint';\n\nconst headingsFontSizeStyles = (fontSize: number[]) => {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n return fp(headings, { literal: true })({\n fontSize: fontSize.map((item) => `${item}em`),\n });\n};\n\nconst headingsMarginTopStyles = (marginTop: number[]) => {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].map(\n (h) => `${h}:not(:first-of-type)`\n );\n return fp(headings, { literal: true })({\n marginTop: marginTop.map((item) => `${item}em`),\n });\n};\n\nconst typographyStyles = (theme: Theme): SerializedStyles => css`\n html,\n button,\n input,\n textarea,\n select {\n font-family: 'Helvetica Neue', Helvetica, sans-serif;\n }\n\n html,\n input {\n color: ${clr(theme.colorText)};\n }\n\n html {\n line-height: ${theme.lineHeight};\n\n // Sets the font smoothing\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n\n // Sets the base font size and increases it on large screens\n ${fp([m.min.md, m.min.xxl])({\n fontSize: theme.fontSize.map((s) => `${s}px`),\n })};\n }\n\n body {\n background-color: ${clr(theme.colorBg)};\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-weight: bold;\n line-height: 1.2;\n margin: 0 0 ${theme.headingsMarginBottom}em;\n }\n\n // Sets the margin top of headings\n ${headingsMarginTopStyles(theme.headingsMarginTop)};\n\n // Sets the base font size of headings\n ${headingsFontSizeStyles(theme.headingsFontSize)};\n\n // Sets the font size of headings on large screens\n ${m.min.md} {\n ${headingsFontSizeStyles(theme.headingsFontSizeMd)}\n }\n`;\n\nexport default typographyStyles;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,SAASC,CAAC,QAAQ,kBAAkB;AACpC,SAAgBC,GAAG,QAAQ,oBAAoB;AAC/C,OAAOC,EAAE,MAAM,WAAW;AAE1B,MAAMC,sBAAsB,GAAIC,QAAkB,IAAK;EACrD,MAAMC,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;EACrD,OAAOH,EAAE,CAACG,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC,CAAC;IACrCF,QAAQ,EAAEA,QAAQ,CAACG,GAAG,CAAEC,IAAI,
|
|
1
|
+
{"version":3,"file":"typographyStyles.js","names":["css","m","clr","fp","headingsFontSizeStyles","fontSize","headings","literal","map","item","headingsMarginTopStyles","marginTop","h","typographyStyles","theme","colorText","lineHeight","min","md","xxl","s","colorBg","headingsMarginBottom","headingsMarginTop","headingsFontSize","headingsFontSizeMd"],"sources":["../../../src/GlobalStyles/typographyStyles.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { SerializedStyles } from '@emotion/serialize';\nimport { m } from '@os-design/media';\nimport { Theme, clr } from '@os-design/theming';\nimport fp from 'facepaint';\n\nconst headingsFontSizeStyles = (fontSize: number[]) => {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n return fp(headings, { literal: true })({\n fontSize: fontSize.map((item) => `${item}em`),\n });\n};\n\nconst headingsMarginTopStyles = (marginTop: number[]) => {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].map(\n (h) => `${h}:not(:first-of-type)`\n );\n return fp(headings, { literal: true })({\n marginTop: marginTop.map((item) => `${item}em`),\n });\n};\n\nconst typographyStyles = (theme: Theme): SerializedStyles => css`\n html,\n button,\n input,\n textarea,\n select {\n font-family: 'Helvetica Neue', Helvetica, sans-serif;\n }\n\n html,\n input {\n color: ${clr(theme.colorText)};\n }\n\n html {\n line-height: ${theme.lineHeight};\n\n // Sets the font smoothing\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n\n // Sets the base font size and increases it on large screens\n ${fp([m.min.md, m.min.xxl])({\n fontSize: theme.fontSize.map((s) => `${s}px`),\n })};\n }\n\n body {\n background-color: ${clr(theme.colorBg)};\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-weight: bold;\n line-height: 1.2;\n margin: 0 0 ${theme.headingsMarginBottom}em;\n }\n\n // Sets the margin top of headings\n ${headingsMarginTopStyles(theme.headingsMarginTop)};\n\n // Sets the base font size of headings\n ${headingsFontSizeStyles(theme.headingsFontSize)};\n\n // Sets the font size of headings on large screens\n ${m.min.md} {\n ${headingsFontSizeStyles(theme.headingsFontSizeMd)}\n }\n`;\n\nexport default typographyStyles;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,SAASC,CAAC,QAAQ,kBAAkB;AACpC,SAAgBC,GAAG,QAAQ,oBAAoB;AAC/C,OAAOC,EAAE,MAAM,WAAW;AAE1B,MAAMC,sBAAsB,GAAIC,QAAkB,IAAK;EACrD,MAAMC,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;EACrD,OAAOH,EAAE,CAACG,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC,CAAC;IACrCF,QAAQ,EAAEA,QAAQ,CAACG,GAAG,CAAEC,IAAI,IAAK,GAAGA,IAAI,IAAI;EAC9C,CAAC,CAAC;AACJ,CAAC;AAED,MAAMC,uBAAuB,GAAIC,SAAmB,IAAK;EACvD,MAAML,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAACE,GAAG,CACtDI,CAAC,IAAK,GAAGA,CAAC,sBACb,CAAC;EACD,OAAOT,EAAE,CAACG,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC,CAAC;IACrCI,SAAS,EAAEA,SAAS,CAACH,GAAG,CAAEC,IAAI,IAAK,GAAGA,IAAI,IAAI;EAChD,CAAC,CAAC;AACJ,CAAC;AAED,MAAMI,gBAAgB,GAAIC,KAAY,IAAuBd,GAAG;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaE,GAAG,CAACY,KAAK,CAACC,SAAS,CAAC;AACjC;AACA;AACA;AACA,mBAAmBD,KAAK,CAACE,UAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMb,EAAE,CAAC,CAACF,CAAC,CAACgB,GAAG,CAACC,EAAE,EAAEjB,CAAC,CAACgB,GAAG,CAACE,GAAG,CAAC,CAAC,CAAC;EAC1Bd,QAAQ,EAAES,KAAK,CAACT,QAAQ,CAACG,GAAG,CAAEY,CAAC,IAAK,GAAGA,CAAC,IAAI;AAC9C,CAAC,CAAC;AACN;AACA;AACA;AACA,wBAAwBlB,GAAG,CAACY,KAAK,CAACO,OAAO,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBP,KAAK,CAACQ,oBAAoB;AAC5C;AACA;AACA;AACA,IAAIZ,uBAAuB,CAACI,KAAK,CAACS,iBAAiB,CAAC;AACpD;AACA;AACA,IAAInB,sBAAsB,CAACU,KAAK,CAACU,gBAAgB,CAAC;AAClD;AACA;AACA,IAAIvB,CAAC,CAACgB,GAAG,CAACC,EAAE;AACZ,MAAMd,sBAAsB,CAACU,KAAK,CAACW,kBAAkB,CAAC;AACtD;AACA,CAAC;AAED,eAAeZ,gBAAgB","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import { css } from '@emotion/react';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
4
|
import { m } from '@os-design/media';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["css","styled","m","omitEmotionProps","React","forwardRef","Skeleton","hasMarginStyles","p","hasMargin","theme","headingsMarginTop","type","headingsMarginBottom","MULTIPLIER","StyledHeaderSkeleton","headingsFontSize","min","md","headingsFontSizeMd","HeaderSkeleton","width","rest","ref","createElement","_extends","displayName"],"sources":["../../../src/HeaderSkeleton/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { m } from '@os-design/media';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef } from 'react';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport interface HeaderSkeletonProps extends SkeletonProps {\n /**\n * The header type.\n * @default 1\n */\n type?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * Whether the header has top and bottom margins.\n * @default false\n */\n hasMargin?: boolean;\n}\n\nconst hasMarginStyles = (p) =>\n p.hasMargin &&\n css`\n margin: ${p.theme.headingsMarginTop[p.type - 1]}em 0\n ${p.theme.headingsMarginBottom}em;\n `;\n\nconst MULTIPLIER = 0.9;\n\ntype StyledHeaderSkeletonProps = Required<\n Pick<HeaderSkeletonProps, 'type' | 'hasMargin'>\n>;\nconst StyledHeaderSkeleton = styled(\n Skeleton,\n omitEmotionProps('type', 'hasMargin')\n)<StyledHeaderSkeletonProps>`\n font-size: ${(p) => p.theme.headingsFontSize[p.type - 1] * MULTIPLIER}em;\n ${m.min.md} {\n font-size: ${(p) => p.theme.headingsFontSizeMd[p.type - 1] * MULTIPLIER}em;\n }\n ${hasMarginStyles};\n`;\n\n/**\n * Provides a header placeholder while a user waits for the content to load.\n */\nconst HeaderSkeleton = forwardRef<HTMLDivElement, HeaderSkeletonProps>(\n ({ type = 1, hasMargin = false, width = '100%', ...rest }, ref) => (\n <StyledHeaderSkeleton\n type={type}\n hasMargin={hasMargin}\n width={width}\n {...rest}\n ref={ref}\n />\n )\n);\n\nHeaderSkeleton.displayName = 'HeaderSkeleton';\n\nexport default HeaderSkeleton;\n"],"mappings":";AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,CAAC,QAAQ,kBAAkB;AACpC,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,QAAQ,MAAyB,aAAa;AAerD,MAAMC,eAAe,GAAIC,CAAC,IACxBA,CAAC,CAACC,SAAS,IACXT,
|
|
1
|
+
{"version":3,"file":"index.js","names":["css","styled","m","omitEmotionProps","React","forwardRef","Skeleton","hasMarginStyles","p","hasMargin","theme","headingsMarginTop","type","headingsMarginBottom","MULTIPLIER","StyledHeaderSkeleton","headingsFontSize","min","md","headingsFontSizeMd","HeaderSkeleton","width","rest","ref","createElement","_extends","displayName"],"sources":["../../../src/HeaderSkeleton/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { m } from '@os-design/media';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef } from 'react';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport interface HeaderSkeletonProps extends SkeletonProps {\n /**\n * The header type.\n * @default 1\n */\n type?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * Whether the header has top and bottom margins.\n * @default false\n */\n hasMargin?: boolean;\n}\n\nconst hasMarginStyles = (p) =>\n p.hasMargin &&\n css`\n margin: ${p.theme.headingsMarginTop[p.type - 1]}em 0\n ${p.theme.headingsMarginBottom}em;\n `;\n\nconst MULTIPLIER = 0.9;\n\ntype StyledHeaderSkeletonProps = Required<\n Pick<HeaderSkeletonProps, 'type' | 'hasMargin'>\n>;\nconst StyledHeaderSkeleton = styled(\n Skeleton,\n omitEmotionProps('type', 'hasMargin')\n)<StyledHeaderSkeletonProps>`\n font-size: ${(p) => p.theme.headingsFontSize[p.type - 1] * MULTIPLIER}em;\n ${m.min.md} {\n font-size: ${(p) => p.theme.headingsFontSizeMd[p.type - 1] * MULTIPLIER}em;\n }\n ${hasMarginStyles};\n`;\n\n/**\n * Provides a header placeholder while a user waits for the content to load.\n */\nconst HeaderSkeleton = forwardRef<HTMLDivElement, HeaderSkeletonProps>(\n ({ type = 1, hasMargin = false, width = '100%', ...rest }, ref) => (\n <StyledHeaderSkeleton\n type={type}\n hasMargin={hasMargin}\n width={width}\n {...rest}\n ref={ref}\n />\n )\n);\n\nHeaderSkeleton.displayName = 'HeaderSkeleton';\n\nexport default HeaderSkeleton;\n"],"mappings":";AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,CAAC,QAAQ,kBAAkB;AACpC,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,OAAOC,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,QAAQ,MAAyB,aAAa;AAerD,MAAMC,eAAe,GAAIC,CAAC,IACxBA,CAAC,CAACC,SAAS,IACXT,GAAG;AACL,cAAcQ,CAAC,CAACE,KAAK,CAACC,iBAAiB,CAACH,CAAC,CAACI,IAAI,GAAG,CAAC,CAAC;AACnD,QAAQJ,CAAC,CAACE,KAAK,CAACG,oBAAoB;AACpC,GAAG;AAEH,MAAMC,UAAU,GAAG,GAAG;AAKtB,MAAMC,oBAAoB,GAAGd,MAAM,CACjCK,QAAQ,EACRH,gBAAgB,CAAC,MAAM,EAAE,WAAW,CACtC,CAA4B;AAC5B,eAAgBK,CAAC,IAAKA,CAAC,CAACE,KAAK,CAACM,gBAAgB,CAACR,CAAC,CAACI,IAAI,GAAG,CAAC,CAAC,GAAGE,UAAU;AACvE,IAAIZ,CAAC,CAACe,GAAG,CAACC,EAAE;AACZ,iBAAkBV,CAAC,IAAKA,CAAC,CAACE,KAAK,CAACS,kBAAkB,CAACX,CAAC,CAACI,IAAI,GAAG,CAAC,CAAC,GAAGE,UAAU;AAC3E;AACA,IAAIP,eAAe;AACnB,CAAC;;AAED;AACA;AACA;AACA,MAAMa,cAAc,gBAAGf,UAAU,CAC/B,CAAC;EAAEO,IAAI,GAAG,CAAC;EAAEH,SAAS,GAAG,KAAK;EAAEY,KAAK,GAAG,MAAM;EAAE,GAAGC;AAAK,CAAC,EAAEC,GAAG,kBAC5DnB,KAAA,CAAAoB,aAAA,CAACT,oBAAoB,EAAAU,QAAA;EACnBb,IAAI,EAAEA,IAAK;EACXH,SAAS,EAAEA,SAAU;EACrBY,KAAK,EAAEA;AAAM,GACTC,IAAI;EACRC,GAAG,EAAEA;AAAI,EACV,CAEL,CAAC;AAEDH,cAAc,CAACM,WAAW,GAAG,gBAAgB;AAE7C,eAAeN,cAAc","ignoreList":[]}
|
package/dist/esm/Image/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import { css } from '@emotion/react';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
4
|
import { omitEmotionProps } from '@os-design/utils';
|