@os-design/core 1.0.133 → 1.0.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/cjs/Alert/index.js.map +1 -1
  2. package/dist/cjs/Avatar/index.js.map +1 -1
  3. package/dist/cjs/Avatar/utils/nameToInitials.js.map +1 -1
  4. package/dist/cjs/Avatar/utils/strToHue.js.map +1 -1
  5. package/dist/cjs/AvatarSkeleton/index.js.map +1 -1
  6. package/dist/cjs/Breadcrumb/index.js.map +1 -1
  7. package/dist/cjs/BreadcrumbItem/index.js.map +1 -1
  8. package/dist/cjs/Button/ButtonContent.js.map +1 -1
  9. package/dist/cjs/Button/index.js.map +1 -1
  10. package/dist/cjs/Button/utils/useButtonColors.js.map +1 -1
  11. package/dist/cjs/Checkbox/index.js.map +1 -1
  12. package/dist/cjs/CheckboxSkeleton/index.js.map +1 -1
  13. package/dist/cjs/DatePicker/DatePickerCalendar.js.map +1 -1
  14. package/dist/cjs/DatePicker/index.js.map +1 -1
  15. package/dist/cjs/Drawer/index.js.map +1 -1
  16. package/dist/cjs/Form/FormConfigContext.js.map +1 -1
  17. package/dist/cjs/Form/index.js.map +1 -1
  18. package/dist/cjs/FormDivider/index.js.map +1 -1
  19. package/dist/cjs/FormItem/index.js.map +1 -1
  20. package/dist/cjs/FormItem/utils/firstChildHasType.js.map +1 -1
  21. package/dist/cjs/GlobalStyles/index.js.map +1 -1
  22. package/dist/cjs/GlobalStyles/resetStyles.js.map +1 -1
  23. package/dist/cjs/GlobalStyles/typographyStyles.js.map +1 -1
  24. package/dist/cjs/HeaderSkeleton/index.js.map +1 -1
  25. package/dist/cjs/Image/index.js.map +1 -1
  26. package/dist/cjs/ImageSkeleton/index.js.map +1 -1
  27. package/dist/cjs/Input/index.js.map +1 -1
  28. package/dist/cjs/Input/utils/getFocusableElements.js.map +1 -1
  29. package/dist/cjs/InputNumber/index.js.map +1 -1
  30. package/dist/cjs/InputNumber/utils/defaultLocale.js.map +1 -1
  31. package/dist/cjs/InputPassword/index.js.map +1 -1
  32. package/dist/cjs/InputPassword/utils/defaultLocale.js.map +1 -1
  33. package/dist/cjs/InputSearch/index.js.map +1 -1
  34. package/dist/cjs/InputSearch/utils/defaultLocale.js.map +1 -1
  35. package/dist/cjs/InputSkeleton/index.js.map +1 -1
  36. package/dist/cjs/Layout/LayoutContext.js.map +1 -1
  37. package/dist/cjs/Layout/index.js.map +1 -1
  38. package/dist/cjs/Link/index.js.map +1 -1
  39. package/dist/cjs/LinkButton/index.js.map +1 -1
  40. package/dist/cjs/List/WindowScroller.js.map +1 -1
  41. package/dist/cjs/List/index.js +11 -7
  42. package/dist/cjs/List/index.js.map +1 -1
  43. package/dist/cjs/List/utils/bodyPointerEvents.js.map +1 -1
  44. package/dist/cjs/List/utils/frameTimeout.js.map +1 -1
  45. package/dist/cjs/List/utils/useRWLoadNext.js.map +1 -1
  46. package/dist/cjs/ListItem/ListItemContent.js.map +1 -1
  47. package/dist/cjs/ListItem/index.js.map +1 -1
  48. package/dist/cjs/ListItemLink/index.js.map +1 -1
  49. package/dist/cjs/ListSkeleton/index.js.map +1 -1
  50. package/dist/cjs/LogoLink/index.js.map +1 -1
  51. package/dist/cjs/Menu/index.js.map +1 -1
  52. package/dist/cjs/Menu/utils/useFocusWithArrows.js.map +1 -1
  53. package/dist/cjs/MenuDivider/index.js.map +1 -1
  54. package/dist/cjs/MenuGroup/index.js.map +1 -1
  55. package/dist/cjs/MenuItem/index.js.map +1 -1
  56. package/dist/cjs/Modal/index.js.map +1 -1
  57. package/dist/cjs/Modal/utils/defaultLocale.js.map +1 -1
  58. package/dist/cjs/Navigation/index.js.map +1 -1
  59. package/dist/cjs/Navigation/utils/useScrollFlags.js.map +1 -1
  60. package/dist/cjs/NavigationItem/index.js.map +1 -1
  61. package/dist/cjs/PageContent/index.js.map +1 -1
  62. package/dist/cjs/PageHeader/index.js.map +1 -1
  63. package/dist/cjs/PageHeader/utils/defaultLocale.js.map +1 -1
  64. package/dist/cjs/PageHeaderInputSearch/index.js.map +1 -1
  65. package/dist/cjs/PageHeaderInputSearch/utils/defaultLocale.js.map +1 -1
  66. package/dist/cjs/PageHeaderSkeleton/index.js.map +1 -1
  67. package/dist/cjs/ParagraphSkeleton/index.js.map +1 -1
  68. package/dist/cjs/Popover/index.js.map +1 -1
  69. package/dist/cjs/Popover/utils/usePopoverPosition.js.map +1 -1
  70. package/dist/cjs/Progress/index.js.map +1 -1
  71. package/dist/cjs/RadioGroup/index.js +4 -6
  72. package/dist/cjs/RadioGroup/index.js.map +1 -1
  73. package/dist/cjs/RadioGroupSkeleton/index.js.map +1 -1
  74. package/dist/cjs/Result/index.js.map +1 -1
  75. package/dist/cjs/ScrollButton/index.js.map +1 -1
  76. package/dist/cjs/ScrollButton/utils/useContainerPosition.js.map +1 -1
  77. package/dist/cjs/ScrollButton/utils/useVisibility.js.map +1 -1
  78. package/dist/cjs/Select/SelectList.js +2 -3
  79. package/dist/cjs/Select/SelectList.js.map +1 -1
  80. package/dist/cjs/Select/SelectToggle.js.map +1 -1
  81. package/dist/cjs/Select/index.js.map +1 -1
  82. package/dist/cjs/Select/utils/defaultLocale.js.map +1 -1
  83. package/dist/cjs/Skeleton/index.js.map +1 -1
  84. package/dist/cjs/Switch/index.js.map +1 -1
  85. package/dist/cjs/SwitchSkeleton/index.js.map +1 -1
  86. package/dist/cjs/Tag/index.js.map +1 -1
  87. package/dist/cjs/TagLink/index.js.map +1 -1
  88. package/dist/cjs/TagList/index.js.map +1 -1
  89. package/dist/cjs/TagListSkeleton/index.js.map +1 -1
  90. package/dist/cjs/TagSkeleton/index.js.map +1 -1
  91. package/dist/cjs/TextArea/index.js.map +1 -1
  92. package/dist/cjs/TextAreaSkeleton/index.js.map +1 -1
  93. package/dist/cjs/ThemeSwitcher/index.js.map +1 -1
  94. package/dist/cjs/YouTubeVideo/index.js.map +1 -1
  95. package/dist/cjs/emotion.d.js.map +1 -1
  96. package/dist/cjs/index.js.map +1 -1
  97. package/dist/cjs/message/AlertIcon.js.map +1 -1
  98. package/dist/cjs/message/Message.js.map +1 -1
  99. package/dist/cjs/message/index.js.map +1 -1
  100. package/dist/cjs/message/styles.js.map +1 -1
  101. package/dist/esm/Alert/index.js.map +1 -1
  102. package/dist/esm/Avatar/index.js.map +1 -1
  103. package/dist/esm/Avatar/utils/nameToInitials.js.map +1 -1
  104. package/dist/esm/Avatar/utils/strToHue.js.map +1 -1
  105. package/dist/esm/AvatarSkeleton/index.js.map +1 -1
  106. package/dist/esm/Breadcrumb/index.js.map +1 -1
  107. package/dist/esm/BreadcrumbItem/index.js.map +1 -1
  108. package/dist/esm/Button/ButtonContent.js.map +1 -1
  109. package/dist/esm/Button/index.js.map +1 -1
  110. package/dist/esm/Button/utils/useButtonColors.js.map +1 -1
  111. package/dist/esm/Checkbox/index.js.map +1 -1
  112. package/dist/esm/CheckboxSkeleton/index.js.map +1 -1
  113. package/dist/esm/DatePicker/DatePickerCalendar.js.map +1 -1
  114. package/dist/esm/DatePicker/index.js.map +1 -1
  115. package/dist/esm/Drawer/index.js.map +1 -1
  116. package/dist/esm/Form/FormConfigContext.js.map +1 -1
  117. package/dist/esm/Form/index.js.map +1 -1
  118. package/dist/esm/FormDivider/index.js.map +1 -1
  119. package/dist/esm/FormItem/index.js.map +1 -1
  120. package/dist/esm/FormItem/utils/firstChildHasType.js.map +1 -1
  121. package/dist/esm/GlobalStyles/index.js.map +1 -1
  122. package/dist/esm/GlobalStyles/resetStyles.js.map +1 -1
  123. package/dist/esm/GlobalStyles/typographyStyles.js.map +1 -1
  124. package/dist/esm/HeaderSkeleton/index.js.map +1 -1
  125. package/dist/esm/Image/index.js.map +1 -1
  126. package/dist/esm/ImageSkeleton/index.js.map +1 -1
  127. package/dist/esm/Input/index.js.map +1 -1
  128. package/dist/esm/Input/utils/getFocusableElements.js.map +1 -1
  129. package/dist/esm/InputNumber/index.js.map +1 -1
  130. package/dist/esm/InputNumber/utils/defaultLocale.js.map +1 -1
  131. package/dist/esm/InputPassword/index.js.map +1 -1
  132. package/dist/esm/InputPassword/utils/defaultLocale.js.map +1 -1
  133. package/dist/esm/InputSearch/index.js.map +1 -1
  134. package/dist/esm/InputSearch/utils/defaultLocale.js.map +1 -1
  135. package/dist/esm/InputSkeleton/index.js.map +1 -1
  136. package/dist/esm/Layout/LayoutContext.js.map +1 -1
  137. package/dist/esm/Layout/index.js.map +1 -1
  138. package/dist/esm/Link/index.js.map +1 -1
  139. package/dist/esm/LinkButton/index.js.map +1 -1
  140. package/dist/esm/List/WindowScroller.js.map +1 -1
  141. package/dist/esm/List/index.js +8 -6
  142. package/dist/esm/List/index.js.map +1 -1
  143. package/dist/esm/List/utils/bodyPointerEvents.js.map +1 -1
  144. package/dist/esm/List/utils/frameTimeout.js.map +1 -1
  145. package/dist/esm/List/utils/useRWLoadNext.js.map +1 -1
  146. package/dist/esm/ListItem/ListItemContent.js.map +1 -1
  147. package/dist/esm/ListItem/index.js.map +1 -1
  148. package/dist/esm/ListItemLink/index.js.map +1 -1
  149. package/dist/esm/ListSkeleton/index.js.map +1 -1
  150. package/dist/esm/LogoLink/index.js.map +1 -1
  151. package/dist/esm/Menu/index.js.map +1 -1
  152. package/dist/esm/Menu/utils/useFocusWithArrows.js.map +1 -1
  153. package/dist/esm/MenuDivider/index.js.map +1 -1
  154. package/dist/esm/MenuGroup/index.js.map +1 -1
  155. package/dist/esm/MenuItem/index.js.map +1 -1
  156. package/dist/esm/Modal/index.js.map +1 -1
  157. package/dist/esm/Modal/utils/defaultLocale.js.map +1 -1
  158. package/dist/esm/Navigation/index.js.map +1 -1
  159. package/dist/esm/Navigation/utils/useScrollFlags.js.map +1 -1
  160. package/dist/esm/NavigationItem/index.js.map +1 -1
  161. package/dist/esm/PageContent/index.js.map +1 -1
  162. package/dist/esm/PageHeader/index.js.map +1 -1
  163. package/dist/esm/PageHeader/utils/defaultLocale.js.map +1 -1
  164. package/dist/esm/PageHeaderInputSearch/index.js.map +1 -1
  165. package/dist/esm/PageHeaderInputSearch/utils/defaultLocale.js.map +1 -1
  166. package/dist/esm/PageHeaderSkeleton/index.js.map +1 -1
  167. package/dist/esm/ParagraphSkeleton/index.js.map +1 -1
  168. package/dist/esm/Popover/index.js.map +1 -1
  169. package/dist/esm/Popover/utils/usePopoverPosition.js.map +1 -1
  170. package/dist/esm/Progress/index.js.map +1 -1
  171. package/dist/esm/RadioGroup/index.js +3 -5
  172. package/dist/esm/RadioGroup/index.js.map +1 -1
  173. package/dist/esm/RadioGroupSkeleton/index.js.map +1 -1
  174. package/dist/esm/Result/index.js.map +1 -1
  175. package/dist/esm/ScrollButton/index.js.map +1 -1
  176. package/dist/esm/ScrollButton/utils/useContainerPosition.js.map +1 -1
  177. package/dist/esm/ScrollButton/utils/useVisibility.js.map +1 -1
  178. package/dist/esm/Select/SelectList.js +3 -4
  179. package/dist/esm/Select/SelectList.js.map +1 -1
  180. package/dist/esm/Select/SelectToggle.js.map +1 -1
  181. package/dist/esm/Select/index.js.map +1 -1
  182. package/dist/esm/Select/utils/defaultLocale.js.map +1 -1
  183. package/dist/esm/Skeleton/index.js.map +1 -1
  184. package/dist/esm/Switch/index.js.map +1 -1
  185. package/dist/esm/SwitchSkeleton/index.js.map +1 -1
  186. package/dist/esm/Tag/index.js.map +1 -1
  187. package/dist/esm/TagLink/index.js.map +1 -1
  188. package/dist/esm/TagList/index.js.map +1 -1
  189. package/dist/esm/TagListSkeleton/index.js.map +1 -1
  190. package/dist/esm/TagSkeleton/index.js.map +1 -1
  191. package/dist/esm/TextArea/index.js.map +1 -1
  192. package/dist/esm/TextAreaSkeleton/index.js.map +1 -1
  193. package/dist/esm/ThemeSwitcher/index.js.map +1 -1
  194. package/dist/esm/YouTubeVideo/index.js.map +1 -1
  195. package/dist/esm/emotion.d.js.map +1 -1
  196. package/dist/esm/index.js.map +1 -1
  197. package/dist/esm/message/AlertIcon.js.map +1 -1
  198. package/dist/esm/message/Message.js.map +1 -1
  199. package/dist/esm/message/index.js.map +1 -1
  200. package/dist/esm/message/styles.js.map +1 -1
  201. package/dist/types/List/index.d.ts +1 -0
  202. package/dist/types/List/index.d.ts.map +1 -1
  203. package/dist/types/RadioGroup/index.d.ts.map +1 -1
  204. package/dist/types/Select/SelectList.d.ts.map +1 -1
  205. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Drawer/index.tsx"],"names":["React","forwardRef","FocusLock","useBodyScroll","useClosable","useKeyPress","omitEmotionProps","enableScrollingStyles","sizeStyles","clr","useTheme","styled","css","keyframes","Portal","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","Drawer","onClose","size","children","onClick","rest","ref","mounted","window","undefined","e","stopPropagation","displayName"],"mappings":"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","sourcesContent":["import React, { forwardRef } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport {\n useBodyScroll,\n useClosable,\n useKeyPress,\n omitEmotionProps,\n} from '@os-design/utils';\nimport { enableScrollingStyles, sizeStyles, WithSize } from '@os-design/styles';\nimport { clr, useTheme } from '@os-design/theming';\nimport styled from '@emotion/styled';\nimport { css, keyframes } from '@emotion/react';\nimport Portal from '@os-design/portal';\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 = 900;\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 position: absolute;\n top: 0;\n bottom: 0;\n width: ${(p) => p.width};\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\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 useBodyScroll(!visible);\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\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={false}>\n <Content\n placement={placement}\n width={width}\n visible={visible}\n size={size}\n onClick={(e) => {\n e.stopPropagation();\n onClick(e);\n }}\n role='dialog'\n aria-modal\n {...rest}\n ref={ref}\n >\n {children}\n </Content>\n </FocusLock>\n </Container>\n </Portal>\n );\n }\n);\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","FocusLock","useBodyScroll","useClosable","useKeyPress","omitEmotionProps","enableScrollingStyles","sizeStyles","clr","useTheme","styled","css","keyframes","Portal","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","Drawer","onClose","size","children","onClick","rest","ref","mounted","window","undefined","e","stopPropagation","displayName"],"sources":["../../../src/Drawer/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport {\n useBodyScroll,\n useClosable,\n useKeyPress,\n omitEmotionProps,\n} from '@os-design/utils';\nimport { enableScrollingStyles, sizeStyles, WithSize } from '@os-design/styles';\nimport { clr, useTheme } from '@os-design/theming';\nimport styled from '@emotion/styled';\nimport { css, keyframes } from '@emotion/react';\nimport Portal from '@os-design/portal';\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 = 900;\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 position: absolute;\n top: 0;\n bottom: 0;\n width: ${(p) => p.width};\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\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 useBodyScroll(!visible);\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\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={false}>\n <Content\n placement={placement}\n width={width}\n visible={visible}\n size={size}\n onClick={(e) => {\n e.stopPropagation();\n onClick(e);\n }}\n role='dialog'\n aria-modal\n {...rest}\n ref={ref}\n >\n {children}\n </Content>\n </FocusLock>\n </Container>\n </Portal>\n );\n }\n);\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Form/FormConfigContext.ts"],"names":["React","FormConfigContext","createContext","optionalText","displayName"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AASA,MAAMC,iBAAiB,gBAAGD,KAAK,CAACE,aAAN,CAA4C;AACpEC,EAAAA,YAAY,EAAE;AADsD,CAA5C,CAA1B;AAIAF,iBAAiB,CAACG,WAAlB,GAAgC,mBAAhC;AAEA,eAAeH,iBAAf","sourcesContent":["import React from 'react';\n\nexport interface FormConfigContextProps {\n /**\n * The text that is displayed to the right of the label of the optional field.\n */\n optionalText: string;\n}\n\nconst FormConfigContext = React.createContext<FormConfigContextProps>({\n optionalText: 'optional',\n});\n\nFormConfigContext.displayName = 'FormConfigContext';\n\nexport default FormConfigContext;\n"],"file":"FormConfigContext.js"}
1
+ {"version":3,"file":"FormConfigContext.js","names":["React","FormConfigContext","createContext","optionalText","displayName"],"sources":["../../../src/Form/FormConfigContext.ts"],"sourcesContent":["import React from 'react';\n\nexport interface FormConfigContextProps {\n /**\n * The text that is displayed to the right of the label of the optional field.\n */\n optionalText: string;\n}\n\nconst FormConfigContext = React.createContext<FormConfigContextProps>({\n optionalText: 'optional',\n});\n\nFormConfigContext.displayName = 'FormConfigContext';\n\nexport default FormConfigContext;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AASA,MAAMC,iBAAiB,gBAAGD,KAAK,CAACE,aAAN,CAA4C;EACpEC,YAAY,EAAE;AADsD,CAA5C,CAA1B;AAIAF,iBAAiB,CAACG,WAAlB,GAAgC,mBAAhC;AAEA,eAAeH,iBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Form/index.tsx"],"names":["React","forwardRef","useMemo","styled","sizeStyles","omitEmotionProps","FormConfigContext","StyledForm","Form","optionalText","rest","ref","memoizedOptionalText","displayName"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,OAA5B,QAA2C,OAA3C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,UAAT,QAAqC,mBAArC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AAWA,MAAMC,UAAU,GAAGJ,MAAM,CAAC,KAAD,EAAQE,gBAAgB,CAAC,MAAD,CAAxB,CAA4C;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,UAAW;AACf,CAXA;AAaA;AACA;AACA;;AACA,MAAMI,IAAI,gBAAGP,UAAU,CACrB,CAAC;AAAEQ,EAAAA,YAAY,GAAG,UAAjB;AAA6B,KAAGC;AAAhC,CAAD,EAAyCC,GAAzC,KAAiD;AAC/C,QAAMC,oBAAoB,GAAGV,OAAO,CAClC,OAAO;AAAEO,IAAAA;AAAF,GAAP,CADkC,EAElC,CAACA,YAAD,CAFkC,CAApC;AAKA,sBACE,oBAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAEG;AAAnC,kBACE,oBAAC,UAAD,eAAgBF,IAAhB;AAAsB,IAAA,GAAG,EAAEC;AAA3B,KADF,CADF;AAKD,CAZoB,CAAvB;AAeAH,IAAI,CAACK,WAAL,GAAmB,MAAnB;AAEA,eAAeL,IAAf","sourcesContent":["import React, { forwardRef, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\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"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","useMemo","styled","sizeStyles","omitEmotionProps","FormConfigContext","StyledForm","Form","optionalText","rest","ref","memoizedOptionalText","displayName"],"sources":["../../../src/Form/index.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\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,KAAP,IAAgBC,UAAhB,EAA4BC,OAA5B,QAA2C,OAA3C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,UAAT,QAAqC,mBAArC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AAWA,MAAMC,UAAU,GAAGJ,MAAM,CAAC,KAAD,EAAQE,gBAAgB,CAAC,MAAD,CAAxB,CAA4C;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,UAAW;AACf,CAXA;AAaA;AACA;AACA;;AACA,MAAMI,IAAI,gBAAGP,UAAU,CACrB,CAAC;EAAEQ,YAAY,GAAG,UAAjB;EAA6B,GAAGC;AAAhC,CAAD,EAAyCC,GAAzC,KAAiD;EAC/C,MAAMC,oBAAoB,GAAGV,OAAO,CAClC,OAAO;IAAEO;EAAF,CAAP,CADkC,EAElC,CAACA,YAAD,CAFkC,CAApC;EAKA,oBACE,oBAAC,iBAAD,CAAmB,QAAnB;IAA4B,KAAK,EAAEG;EAAnC,gBACE,oBAAC,UAAD,eAAgBF,IAAhB;IAAsB,GAAG,EAAEC;EAA3B,GADF,CADF;AAKD,CAZoB,CAAvB;AAeAH,IAAI,CAACK,WAAL,GAAmB,MAAnB;AAEA,eAAeL,IAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/FormDivider/index.tsx"],"names":["React","forwardRef","styled","ellipsisStyles","sizeStyles","omitEmotionProps","clr","Container","p","theme","formDividerColor","Content","div","Title","colorText","sizes","large","Description","inputColorPlaceholder","small","FormDivider","title","description","rest","ref","displayName"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,cAAT,EAAyBC,UAAzB,QAAqD,mBAArD;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,oBAApB;AAeA,MAAMC,SAAS,GAAGL,MAAM,CAAC,KAAD,EAAQG,gBAAgB,CAAC,MAAD,CAAxB,CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA6BG,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQC,gBAAT,CAA2B;AACjE;AACA;AACA,IAAIN,UAAW;AACf,CAfA;AAiBA,MAAMO,OAAO,GAAGT,MAAM,CAACU,GAAI;AAC3B;AACA;AACA;AACA,CAJA;AAMA,MAAMC,KAAK,GAAGX,MAAM,CAACU,GAAI;AACzB,WAAYJ,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQK,SAAT,CAAoB;AACzC,eAAgBN,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQM,KAAR,CAAcC,KAAM;AAC1C;AACA,IAAIb,cAAe;AACnB,CALA;AAOA,MAAMc,WAAW,GAAGf,MAAM,CAACU,GAAI;AAC/B,WAAYJ,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQS,qBAAT,CAAgC;AACrD,eAAgBV,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQM,KAAR,CAAcI,KAAM;AAC1C;AACA,IAAIhB,cAAe;AACnB,CALA;AAOA;AACA;AACA;;AACA,MAAMiB,WAAW,gBAAGnB,UAAU,CAC5B,CAAC;AAAEoB,EAAAA,KAAF;AAASC,EAAAA,WAAT;AAAsB,KAAGC;AAAzB,CAAD,EAAkCC,GAAlC,kBACE,oBAAC,SAAD;AAAW,EAAA,IAAI,EAAC;AAAhB,GAAgCD,IAAhC;AAAsC,EAAA,GAAG,EAAEC;AAA3C,iBACE,oBAAC,OAAD,qBACE,oBAAC,KAAD,QAAQH,KAAR,CADF,eAEE,oBAAC,WAAD,QAAcC,WAAd,CAFF,CADF,CAF0B,CAA9B;AAWAF,WAAW,CAACK,WAAZ,GAA0B,aAA1B;AAEA,eAAeL,WAAf","sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport { ellipsisStyles, sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\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"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","styled","ellipsisStyles","sizeStyles","omitEmotionProps","clr","Container","p","theme","formDividerColor","Content","div","Title","colorText","sizes","large","Description","inputColorPlaceholder","small","FormDivider","title","description","rest","ref","displayName"],"sources":["../../../src/FormDivider/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport { ellipsisStyles, sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\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,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,cAAT,EAAyBC,UAAzB,QAAqD,mBAArD;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,oBAApB;AAeA,MAAMC,SAAS,GAAGL,MAAM,CAAC,KAAD,EAAQG,gBAAgB,CAAC,MAAD,CAAxB,CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA6BG,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQC,gBAAT,CAA2B;AACjE;AACA;AACA,IAAIN,UAAW;AACf,CAfA;AAiBA,MAAMO,OAAO,GAAGT,MAAM,CAACU,GAAI;AAC3B;AACA;AACA;AACA,CAJA;AAMA,MAAMC,KAAK,GAAGX,MAAM,CAACU,GAAI;AACzB,WAAYJ,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQK,SAAT,CAAoB;AACzC,eAAgBN,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQM,KAAR,CAAcC,KAAM;AAC1C;AACA,IAAIb,cAAe;AACnB,CALA;AAOA,MAAMc,WAAW,GAAGf,MAAM,CAACU,GAAI;AAC/B,WAAYJ,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQS,qBAAT,CAAgC;AACrD,eAAgBV,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQM,KAAR,CAAcI,KAAM;AAC1C;AACA,IAAIhB,cAAe;AACnB,CALA;AAOA;AACA;AACA;;AACA,MAAMiB,WAAW,gBAAGnB,UAAU,CAC5B,CAAC;EAAEoB,KAAF;EAASC,WAAT;EAAsB,GAAGC;AAAzB,CAAD,EAAkCC,GAAlC,kBACE,oBAAC,SAAD;EAAW,IAAI,EAAC;AAAhB,GAAgCD,IAAhC;EAAsC,GAAG,EAAEC;AAA3C,iBACE,oBAAC,OAAD,qBACE,oBAAC,KAAD,QAAQH,KAAR,CADF,eAEE,oBAAC,WAAD,QAAcC,WAAd,CAFF,CADF,CAF0B,CAA9B;AAWAF,WAAW,CAACK,WAAZ,GAA0B,aAA1B;AAEA,eAAeL,WAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/FormItem/index.tsx"],"names":["React","forwardRef","useCallback","useContext","useMemo","styled","sizeStyles","omitEmotionProps","clr","ThemeOverrider","css","firstChildHasType","TextArea","TextAreaSkeleton","InputSkeleton","FormConfigContext","Switch","SwitchSkeleton","Container","Label","label","p","theme","sizes","small","colorText","Optional","span","formItemColorOptional","hasErrorStyles","hasError","formItemColorError","Help","formItemColorHelp","FormItem","help","optional","loading","id","children","rest","ref","optionalText","containerId","Math","random","toString","slice","fieldId","helpId","renderChildren","c","isValidElement","cloneElement","undefined","inputColorBorder","renderSkeleton","displayName"],"mappings":"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","sourcesContent":["import React, { forwardRef, useCallback, useContext, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport firstChildHasType from './utils/firstChildHasType';\nimport TextArea from '../TextArea';\nimport TextAreaSkeleton from '../TextAreaSkeleton';\nimport InputSkeleton from '../InputSkeleton';\nimport FormConfigContext from '../Form/FormConfigContext';\nimport Switch from '../Switch';\nimport SwitchSkeleton from '../SwitchSkeleton';\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 * Whether the field is optional.\n * @default false\n */\n optional?: boolean;\n /**\n * Applies the red style to the field.\n * @default false\n */\n hasError?: boolean;\n /**\n * Whether the skeleton is displayed.\n * @default false\n */\n loading?: 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 hasErrorStyles = (p) =>\n p.hasError &&\n css`\n color: ${clr(p.theme.formItemColorError)};\n `;\n\ntype HelpProps = Required<Pick<FormItemProps, 'hasError'>>;\nconst Help = styled('div', omitEmotionProps('hasError'))<HelpProps>`\n margin-top: 0.1em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.formItemColorHelp)};\n ${hasErrorStyles};\n`;\n\n/**\n * The wrapper of the field.\n */\nconst FormItem = forwardRef<HTMLDivElement, FormItemProps>(\n (\n {\n label,\n help,\n optional = false,\n hasError = false,\n loading = false,\n id,\n children,\n ...rest\n },\n ref\n ) => {\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\n const renderChildren = useCallback(() => {\n const c = React.isValidElement(children)\n ? React.cloneElement(children, {\n id: fieldId,\n 'aria-invalid': hasError,\n 'aria-describedby': help ? helpId : undefined,\n })\n : children;\n\n if (!hasError) return c;\n\n return (\n <ThemeOverrider\n overrides={(theme) => ({\n inputColorBorder: theme.formItemColorError,\n })}\n >\n {c}\n </ThemeOverrider>\n );\n }, [children, fieldId, help, helpId, hasError]);\n\n const renderSkeleton = useCallback(() => {\n if (firstChildHasType(children, TextArea)) return <TextAreaSkeleton />;\n if (firstChildHasType(children, Switch)) return <SwitchSkeleton />;\n return <InputSkeleton />;\n }, [children]);\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 {loading ? renderSkeleton() : renderChildren()}\n {help && (\n <Help\n hasError={hasError}\n aria-live={hasError ? 'polite' : undefined}\n id={helpId}\n >\n {help}\n </Help>\n )}\n </Container>\n );\n }\n);\n\nFormItem.displayName = 'FormItem';\n\nexport default FormItem;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","useCallback","useContext","useMemo","styled","sizeStyles","omitEmotionProps","clr","ThemeOverrider","css","firstChildHasType","TextArea","TextAreaSkeleton","InputSkeleton","FormConfigContext","Switch","SwitchSkeleton","Container","Label","label","p","theme","sizes","small","colorText","Optional","span","formItemColorOptional","hasErrorStyles","hasError","formItemColorError","Help","formItemColorHelp","FormItem","help","optional","loading","id","children","rest","ref","optionalText","containerId","Math","random","toString","slice","fieldId","helpId","renderChildren","c","isValidElement","cloneElement","undefined","inputColorBorder","renderSkeleton","displayName"],"sources":["../../../src/FormItem/index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useContext, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport firstChildHasType from './utils/firstChildHasType';\nimport TextArea from '../TextArea';\nimport TextAreaSkeleton from '../TextAreaSkeleton';\nimport InputSkeleton from '../InputSkeleton';\nimport FormConfigContext from '../Form/FormConfigContext';\nimport Switch from '../Switch';\nimport SwitchSkeleton from '../SwitchSkeleton';\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 * Whether the field is optional.\n * @default false\n */\n optional?: boolean;\n /**\n * Applies the red style to the field.\n * @default false\n */\n hasError?: boolean;\n /**\n * Whether the skeleton is displayed.\n * @default false\n */\n loading?: 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 hasErrorStyles = (p) =>\n p.hasError &&\n css`\n color: ${clr(p.theme.formItemColorError)};\n `;\n\ntype HelpProps = Required<Pick<FormItemProps, 'hasError'>>;\nconst Help = styled('div', omitEmotionProps('hasError'))<HelpProps>`\n margin-top: 0.1em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.formItemColorHelp)};\n ${hasErrorStyles};\n`;\n\n/**\n * The wrapper of the field.\n */\nconst FormItem = forwardRef<HTMLDivElement, FormItemProps>(\n (\n {\n label,\n help,\n optional = false,\n hasError = false,\n loading = false,\n id,\n children,\n ...rest\n },\n ref\n ) => {\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\n const renderChildren = useCallback(() => {\n const c = React.isValidElement(children)\n ? React.cloneElement(children, {\n id: fieldId,\n 'aria-invalid': hasError,\n 'aria-describedby': help ? helpId : undefined,\n })\n : children;\n\n if (!hasError) return c;\n\n return (\n <ThemeOverrider\n overrides={(theme) => ({\n inputColorBorder: theme.formItemColorError,\n })}\n >\n {c}\n </ThemeOverrider>\n );\n }, [children, fieldId, help, helpId, hasError]);\n\n const renderSkeleton = useCallback(() => {\n if (firstChildHasType(children, TextArea)) return <TextAreaSkeleton />;\n if (firstChildHasType(children, Switch)) return <SwitchSkeleton />;\n return <InputSkeleton />;\n }, [children]);\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 {loading ? renderSkeleton() : renderChildren()}\n {help && (\n <Help\n hasError={hasError}\n aria-live={hasError ? 'polite' : undefined}\n id={helpId}\n >\n {help}\n </Help>\n )}\n </Container>\n );\n }\n);\n\nFormItem.displayName = 'FormItem';\n\nexport default FormItem;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/FormItem/utils/firstChildHasType.ts"],"names":["React","firstChildHasType","children","component","firstChild","Children","toArray","isValidElement","type"],"mappings":"AAAA,OAAOA,KAAP,MAAiC,OAAjC;;AAEA,MAAMC,iBAAiB,GAAG,CACxBC,QADwB,EAExBC,SAFwB,KAGZ;AACZ,QAAMC,UAAU,GAAGJ,KAAK,CAACK,QAAN,CAAeC,OAAf,CAAuBJ,QAAvB,EAAiC,CAAjC,CAAnB;AACA,SAAO,aAAAF,KAAK,CAACO,cAAN,CAAqBH,UAArB,KAAoCA,UAAU,CAACI,IAAX,KAAoBL,SAA/D;AACD,CAND;;AAQA,eAAeF,iBAAf","sourcesContent":["import React, { ReactNode } from 'react';\n\nconst firstChildHasType = (\n children: ReactNode | ReactNode[],\n component: React.FC\n): boolean => {\n const firstChild = React.Children.toArray(children)[0];\n return React.isValidElement(firstChild) && firstChild.type === component;\n};\n\nexport default firstChildHasType;\n"],"file":"firstChildHasType.js"}
1
+ {"version":3,"file":"firstChildHasType.js","names":["React","firstChildHasType","children","component","firstChild","Children","toArray","isValidElement","type"],"sources":["../../../../src/FormItem/utils/firstChildHasType.ts"],"sourcesContent":["import React, { ReactNode } from 'react';\n\nconst firstChildHasType = (\n children: ReactNode | ReactNode[],\n component: React.FC\n): boolean => {\n const firstChild = React.Children.toArray(children)[0];\n return React.isValidElement(firstChild) && firstChild.type === component;\n};\n\nexport default firstChildHasType;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAiC,OAAjC;;AAEA,MAAMC,iBAAiB,GAAG,CACxBC,QADwB,EAExBC,SAFwB,KAGZ;EACZ,MAAMC,UAAU,GAAGJ,KAAK,CAACK,QAAN,CAAeC,OAAf,CAAuBJ,QAAvB,EAAiC,CAAjC,CAAnB;EACA,OAAO,aAAAF,KAAK,CAACO,cAAN,CAAqBH,UAArB,KAAoCA,UAAU,CAACI,IAAX,KAAoBL,SAA/D;AACD,CAND;;AAQA,eAAeF,iBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/GlobalStyles/index.tsx"],"names":["React","Global","useVh","resetStyles","typographyStyles","GlobalStyles","theme","displayName"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,KAAT,QAAsB,kBAAtB;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAEA,MAAMC,YAAsB,GAAG,MAAM;AACnCH,EAAAA,KAAK;AACL,sBACE,oBAAC,MAAD;AAAQ,IAAA,MAAM,EAAGI,KAAD,IAAW,CAACH,WAAW,CAACG,KAAD,CAAZ,EAAqBF,gBAAgB,CAACE,KAAD,CAArC;AAA3B,IADF;AAGD,CALD;;AAOAD,YAAY,CAACE,WAAb,GAA2B,cAA3B;AAEA,eAAeF,YAAf","sourcesContent":["import React from 'react';\nimport { Global } from '@emotion/react';\nimport { useVh } from '@os-design/utils';\nimport resetStyles from './resetStyles';\nimport typographyStyles from './typographyStyles';\n\nconst GlobalStyles: React.FC = () => {\n useVh();\n return (\n <Global styles={(theme) => [resetStyles(theme), typographyStyles(theme)]} />\n );\n};\n\nGlobalStyles.displayName = 'GlobalStyles';\n\nexport default GlobalStyles;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","Global","useVh","resetStyles","typographyStyles","GlobalStyles","theme","displayName"],"sources":["../../../src/GlobalStyles/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Global } from '@emotion/react';\nimport { useVh } from '@os-design/utils';\nimport resetStyles from './resetStyles';\nimport typographyStyles from './typographyStyles';\n\nconst GlobalStyles: React.FC = () => {\n useVh();\n return (\n <Global styles={(theme) => [resetStyles(theme), typographyStyles(theme)]} />\n );\n};\n\nGlobalStyles.displayName = 'GlobalStyles';\n\nexport default GlobalStyles;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,KAAT,QAAsB,kBAAtB;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAEA,MAAMC,YAAsB,GAAG,MAAM;EACnCH,KAAK;EACL,oBACE,oBAAC,MAAD;IAAQ,MAAM,EAAGI,KAAD,IAAW,CAACH,WAAW,CAACG,KAAD,CAAZ,EAAqBF,gBAAgB,CAACE,KAAD,CAArC;EAA3B,EADF;AAGD,CALD;;AAOAD,YAAY,CAACE,WAAb,GAA2B,cAA3B;AAEA,eAAeF,YAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/GlobalStyles/resetStyles.ts"],"names":["css","resetStyles","theme","paragraphMarginBottom"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;;AAIA,MAAMC,WAAW,GAAIC,KAAD,IAAoCF,GAAI;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBE,KAAK,CAACC,qBAAsB;AAC9C;AACA,CAVA;;AAYA,eAAeF,WAAf","sourcesContent":["import { css } from '@emotion/react';\nimport { Theme } from '@os-design/theming';\nimport { SerializedStyles } from '@emotion/serialize';\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"],"file":"resetStyles.js"}
1
+ {"version":3,"file":"resetStyles.js","names":["css","resetStyles","theme","paragraphMarginBottom"],"sources":["../../../src/GlobalStyles/resetStyles.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { Theme } from '@os-design/theming';\nimport { SerializedStyles } from '@emotion/serialize';\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,GAAT,QAAoB,gBAApB;;AAIA,MAAMC,WAAW,GAAIC,KAAD,IAAoCF,GAAI;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBE,KAAK,CAACC,qBAAsB;AAC9C;AACA,CAVA;;AAYA,eAAeF,WAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/GlobalStyles/typographyStyles.ts"],"names":["css","fp","m","clr","headingsFontSizeStyles","fontSize","headings","literal","map","item","headingsMarginTopStyles","marginTop","h","typographyStyles","theme","colorText","lineHeight","min","md","xxl","s","colorBg","headingsMarginBottom","headingsMarginTop","headingsFontSize","headingsFontSizeMd"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AACA,OAAOC,EAAP,MAAe,WAAf;AAEA,SAASC,CAAT,QAAkB,kBAAlB;AACA,SAAgBC,GAAhB,QAA2B,oBAA3B;;AAEA,MAAMC,sBAAsB,GAAIC,QAAD,IAAwB;AACrD,QAAMC,QAAQ,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,CAAjB;AACA,SAAOL,EAAE,CAACK,QAAD,EAAW;AAAEC,IAAAA,OAAO,EAAE;AAAX,GAAX,CAAF,CAAgC;AACrCF,IAAAA,QAAQ,EAAEA,QAAQ,CAACG,GAAT,CAAcC,IAAD,IAAW,GAAEA,IAAK,IAA/B;AAD2B,GAAhC,CAAP;AAGD,CALD;;AAOA,MAAMC,uBAAuB,GAAIC,SAAD,IAAyB;AACvD,QAAML,QAAQ,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqCE,GAArC,CACdI,CAAD,IAAQ,GAAEA,CAAE,sBADG,CAAjB;AAGA,SAAOX,EAAE,CAACK,QAAD,EAAW;AAAEC,IAAAA,OAAO,EAAE;AAAX,GAAX,CAAF,CAAgC;AACrCI,IAAAA,SAAS,EAAEA,SAAS,CAACH,GAAV,CAAeC,IAAD,IAAW,GAAEA,IAAK,IAAhC;AAD0B,GAAhC,CAAP;AAGD,CAPD;;AASA,MAAMI,gBAAgB,GAAIC,KAAD,IAAoCd,GAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaG,GAAG,CAACW,KAAK,CAACC,SAAP,CAAkB;AAClC;AACA;AACA;AACA,mBAAmBD,KAAK,CAACE,UAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMf,EAAE,CAAC,CAACC,CAAC,CAACe,GAAF,CAAMC,EAAP,EAAWhB,CAAC,CAACe,GAAF,CAAME,GAAjB,CAAD,CAAF,CAA0B;AAC1Bd,EAAAA,QAAQ,EAAES,KAAK,CAACT,QAAN,CAAeG,GAAf,CAAoBY,CAAD,IAAQ,GAAEA,CAAE,IAA/B;AADgB,CAA1B,CAEC;AACP;AACA;AACA;AACA,wBAAwBjB,GAAG,CAACW,KAAK,CAACO,OAAP,CAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBP,KAAK,CAACQ,oBAAqB;AAC7C;AACA;AACA;AACA,IAAIZ,uBAAuB,CAACI,KAAK,CAACS,iBAAP,CAA0B;AACrD;AACA;AACA,IAAInB,sBAAsB,CAACU,KAAK,CAACU,gBAAP,CAAyB;AACnD;AACA;AACA,IAAItB,CAAC,CAACe,GAAF,CAAMC,EAAG;AACb,MAAMd,sBAAsB,CAACU,KAAK,CAACW,kBAAP,CAA2B;AACvD;AACA,CArDA;;AAuDA,eAAeZ,gBAAf","sourcesContent":["import { css } from '@emotion/react';\nimport fp from 'facepaint';\nimport { SerializedStyles } from '@emotion/serialize';\nimport { m } from '@os-design/media';\nimport { Theme, clr } from '@os-design/theming';\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"],"file":"typographyStyles.js"}
1
+ {"version":3,"file":"typographyStyles.js","names":["css","fp","m","clr","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 fp from 'facepaint';\nimport { SerializedStyles } from '@emotion/serialize';\nimport { m } from '@os-design/media';\nimport { Theme, clr } from '@os-design/theming';\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,GAAT,QAAoB,gBAApB;AACA,OAAOC,EAAP,MAAe,WAAf;AAEA,SAASC,CAAT,QAAkB,kBAAlB;AACA,SAAgBC,GAAhB,QAA2B,oBAA3B;;AAEA,MAAMC,sBAAsB,GAAIC,QAAD,IAAwB;EACrD,MAAMC,QAAQ,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,CAAjB;EACA,OAAOL,EAAE,CAACK,QAAD,EAAW;IAAEC,OAAO,EAAE;EAAX,CAAX,CAAF,CAAgC;IACrCF,QAAQ,EAAEA,QAAQ,CAACG,GAAT,CAAcC,IAAD,IAAW,GAAEA,IAAK,IAA/B;EAD2B,CAAhC,CAAP;AAGD,CALD;;AAOA,MAAMC,uBAAuB,GAAIC,SAAD,IAAyB;EACvD,MAAML,QAAQ,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqCE,GAArC,CACdI,CAAD,IAAQ,GAAEA,CAAE,sBADG,CAAjB;EAGA,OAAOX,EAAE,CAACK,QAAD,EAAW;IAAEC,OAAO,EAAE;EAAX,CAAX,CAAF,CAAgC;IACrCI,SAAS,EAAEA,SAAS,CAACH,GAAV,CAAeC,IAAD,IAAW,GAAEA,IAAK,IAAhC;EAD0B,CAAhC,CAAP;AAGD,CAPD;;AASA,MAAMI,gBAAgB,GAAIC,KAAD,IAAoCd,GAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaG,GAAG,CAACW,KAAK,CAACC,SAAP,CAAkB;AAClC;AACA;AACA;AACA,mBAAmBD,KAAK,CAACE,UAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMf,EAAE,CAAC,CAACC,CAAC,CAACe,GAAF,CAAMC,EAAP,EAAWhB,CAAC,CAACe,GAAF,CAAME,GAAjB,CAAD,CAAF,CAA0B;EAC1Bd,QAAQ,EAAES,KAAK,CAACT,QAAN,CAAeG,GAAf,CAAoBY,CAAD,IAAQ,GAAEA,CAAE,IAA/B;AADgB,CAA1B,CAEC;AACP;AACA;AACA;AACA,wBAAwBjB,GAAG,CAACW,KAAK,CAACO,OAAP,CAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBP,KAAK,CAACQ,oBAAqB;AAC7C;AACA;AACA;AACA,IAAIZ,uBAAuB,CAACI,KAAK,CAACS,iBAAP,CAA0B;AACrD;AACA;AACA,IAAInB,sBAAsB,CAACU,KAAK,CAACU,gBAAP,CAAyB;AACnD;AACA;AACA,IAAItB,CAAC,CAACe,GAAF,CAAMC,EAAG;AACb,MAAMd,sBAAsB,CAACU,KAAK,CAACW,kBAAP,CAA2B;AACvD;AACA,CArDA;;AAuDA,eAAeZ,gBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/HeaderSkeleton/index.tsx"],"names":["styled","React","forwardRef","omitEmotionProps","m","css","Skeleton","hasMarginStyles","p","hasMargin","theme","headingsMarginTop","type","headingsMarginBottom","MULTIPLIER","StyledHeaderSkeleton","headingsFontSize","min","md","headingsFontSizeMd","HeaderSkeleton","width","rest","ref","displayName"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,CAAT,QAAkB,kBAAlB;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,OAAOC,QAAP,MAAwC,aAAxC;;AAeA,MAAMC,eAAe,GAAIC,CAAD,IACtBA,CAAC,CAACC,SAAF,IACAJ,GAAI;AACN,cAAcG,CAAC,CAACE,KAAF,CAAQC,iBAAR,CAA0BH,CAAC,CAACI,IAAF,GAAS,CAAnC,CAAsC;AACpD,QAAQJ,CAAC,CAACE,KAAF,CAAQG,oBAAqB;AACrC,GALA;;AAOA,MAAMC,UAAU,GAAG,GAAnB;AAKA,MAAMC,oBAAoB,GAAGf,MAAM,CACjCM,QADiC,EAEjCH,gBAAgB,CAAC,MAAD,EAAS,WAAT,CAFiB,CAGN;AAC7B,eAAgBK,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQM,gBAAR,CAAyBR,CAAC,CAACI,IAAF,GAAS,CAAlC,IAAuCE,UAAW;AACxE,IAAIV,CAAC,CAACa,GAAF,CAAMC,EAAG;AACb,iBAAkBV,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQS,kBAAR,CAA2BX,CAAC,CAACI,IAAF,GAAS,CAApC,IAAyCE,UAAW;AAC5E;AACA,IAAIP,eAAgB;AACpB,CATA;AAWA;AACA;AACA;;AACA,MAAMa,cAAc,gBAAGlB,UAAU,CAC/B,CAAC;AAAEU,EAAAA,IAAI,GAAG,CAAT;AAAYH,EAAAA,SAAS,GAAG,KAAxB;AAA+BY,EAAAA,KAAK,GAAG,MAAvC;AAA+C,KAAGC;AAAlD,CAAD,EAA2DC,GAA3D,kBACE,oBAAC,oBAAD;AACE,EAAA,IAAI,EAAEX,IADR;AAEE,EAAA,SAAS,EAAEH,SAFb;AAGE,EAAA,KAAK,EAAEY;AAHT,GAIMC,IAJN;AAKE,EAAA,GAAG,EAAEC;AALP,GAF6B,CAAjC;AAYAH,cAAc,CAACI,WAAf,GAA6B,gBAA7B;AAEA,eAAeJ,cAAf","sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { m } from '@os-design/media';\nimport { css } from '@emotion/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"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["styled","React","forwardRef","omitEmotionProps","m","css","Skeleton","hasMarginStyles","p","hasMargin","theme","headingsMarginTop","type","headingsMarginBottom","MULTIPLIER","StyledHeaderSkeleton","headingsFontSize","min","md","headingsFontSizeMd","HeaderSkeleton","width","rest","ref","displayName"],"sources":["../../../src/HeaderSkeleton/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { m } from '@os-design/media';\nimport { css } from '@emotion/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,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,CAAT,QAAkB,kBAAlB;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,OAAOC,QAAP,MAAwC,aAAxC;;AAeA,MAAMC,eAAe,GAAIC,CAAD,IACtBA,CAAC,CAACC,SAAF,IACAJ,GAAI;AACN,cAAcG,CAAC,CAACE,KAAF,CAAQC,iBAAR,CAA0BH,CAAC,CAACI,IAAF,GAAS,CAAnC,CAAsC;AACpD,QAAQJ,CAAC,CAACE,KAAF,CAAQG,oBAAqB;AACrC,GALA;;AAOA,MAAMC,UAAU,GAAG,GAAnB;AAKA,MAAMC,oBAAoB,GAAGf,MAAM,CACjCM,QADiC,EAEjCH,gBAAgB,CAAC,MAAD,EAAS,WAAT,CAFiB,CAGN;AAC7B,eAAgBK,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQM,gBAAR,CAAyBR,CAAC,CAACI,IAAF,GAAS,CAAlC,IAAuCE,UAAW;AACxE,IAAIV,CAAC,CAACa,GAAF,CAAMC,EAAG;AACb,iBAAkBV,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQS,kBAAR,CAA2BX,CAAC,CAACI,IAAF,GAAS,CAApC,IAAyCE,UAAW;AAC5E;AACA,IAAIP,eAAgB;AACpB,CATA;AAWA;AACA;AACA;;AACA,MAAMa,cAAc,gBAAGlB,UAAU,CAC/B,CAAC;EAAEU,IAAI,GAAG,CAAT;EAAYH,SAAS,GAAG,KAAxB;EAA+BY,KAAK,GAAG,MAAvC;EAA+C,GAAGC;AAAlD,CAAD,EAA2DC,GAA3D,kBACE,oBAAC,oBAAD;EACE,IAAI,EAAEX,IADR;EAEE,SAAS,EAAEH,SAFb;EAGE,KAAK,EAAEY;AAHT,GAIMC,IAJN;EAKE,GAAG,EAAEC;AALP,GAF6B,CAAjC;AAYAH,cAAc,CAACI,WAAf,GAA6B,gBAA7B;AAEA,eAAeJ,cAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Image/index.tsx"],"names":["React","forwardRef","useCallback","styled","omitEmotionProps","css","EMPTY_IMAGE","coverStyles","p","cover","StyledImage","theme","borderRadius","Image","url","sizes","defaultSize","cropped","className","rest","ref","getUrl","size","map","join","filter","i","displayName"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,WAA5B,QAA+C,OAA/C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,gBAApB;AAEA,MAAMC,WAAW,GACf,oHADF;;AAgCA,MAAMC,WAAW,GAAIC,CAAD,IAClBA,CAAC,CAACC,KAAF,IACAJ,GAAI;AACN;AACA;AACA,GALA;;AAQA,MAAMK,WAAW,GAAGP,MAAM,CAAC,KAAD,EAAQC,gBAAgB,CAAC,OAAD,CAAxB,CAAqD;AAC/E;AACA;AACA,mBAAoBI,CAAD,IAAOA,CAAC,CAACG,KAAF,CAAQC,YAAa;AAC/C,IAAIL,WAAY;AAChB,CALA;AAOA;AACA;AACA;AACA;;AACA,MAAMM,KAAK,gBAAGZ,UAAU,CACtB,CACE;AACEa,EAAAA,GADF;AAEEC,EAAAA,KAAK,GAAG,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,EAAe,IAAf,EAAqB,IAArB,CAFV;AAGEC,EAAAA,WAAW,GAAG,EAHhB;AAIEC,EAAAA,OAAO,GAAG,KAJZ;AAKER,EAAAA,KAAK,GAAG,KALV;AAMES,EAAAA,SANF;AAOE,KAAGC;AAPL,CADF,EAUEC,GAVF,KAWK;AACH,QAAMC,MAAM,GAAGnB,WAAW,CACvBoB,IAAD,IAAmB,GAAER,GAAI,IAAGQ,IAAK,GAAEL,OAAO,GAAG,IAAH,GAAU,EAAG,EAD/B,EAExB,CAACH,GAAD,EAAMG,OAAN,CAFwB,CAA1B;;AAKA,MAAI,CAACH,GAAL,EAAU;AACR,wBACE,oBAAC,WAAD;AACE,MAAA,GAAG,EAAER,WADP;AAEE,MAAA,SAAS,EAAEY;AAFb,OAGMC,IAHN;AAIE,MAAA,GAAG,EAAEC;AAJP,OADF;AAQD;;AAED,sBACE,oBAAC,WAAD;AACE,IAAA,GAAG,EAAEC,MAAM,CAACL,WAAD,CADb;AAEE,IAAA,MAAM,EAAEV,WAFV;AAGE,kBAAW,MAHb;AAIE,mBAAaS,KAAK,CAACQ,GAAN,CAAWD,IAAD,IAAW,GAAED,MAAM,CAACC,IAAD,CAAO,IAAGA,IAAK,GAA5C,EAAgDE,IAAhD,CAAqD,IAArD,CAJf;AAKE,IAAA,KAAK,EAAEf,KALT;AAME,IAAA,SAAS,EAAE,CAACS,SAAD,EAAY,UAAZ,EAAwBO,MAAxB,CAAgCC,CAAD,IAAOA,CAAtC,EAAyCF,IAAzC,CAA8C,GAA9C;AANb,KAOML,IAPN;AAQE,IAAA,GAAG,EAAEC;AARP,KADF;AAYD,CAzCqB,CAAxB;AA4CAP,KAAK,CAACc,WAAN,GAAoB,OAApB;AAEA,eAAed,KAAf","sourcesContent":["import React, { forwardRef, useCallback } from 'react';\nimport styled from '@emotion/styled';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { css } from '@emotion/react';\n\nconst EMPTY_IMAGE =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mO8+R8AArcB2pIvCSwAAAAASUVORK5CYII=';\n\ntype JsxImgProps = Omit<JSX.IntrinsicElements['img'], 'sizes' | 'ref'>;\nexport interface ImageProps extends JsxImgProps {\n /**\n * The image URL.\n * @default undefined\n */\n url?: string;\n /**\n * All available sizes of the image.\n * @default [72, 192, 512, 1024, 2560]\n */\n sizes?: number[];\n /**\n * The image size if the browser does not support lazy loading.\n * @default 72\n */\n defaultSize?: number;\n /**\n * Whether the image is cropped.\n * @default false\n */\n cropped?: boolean;\n /**\n * Sets object-fit: cover.\n * @default false\n */\n cover?: boolean;\n}\n\nconst coverStyles = (p) =>\n p.cover &&\n css`\n height: 100%;\n object-fit: cover;\n `;\n\ntype StyledImageProps = Pick<ImageProps, 'cover'>;\nconst StyledImage = styled('img', omitEmotionProps('cover'))<StyledImageProps>`\n display: block; // To remove the indent under the image\n width: 100%;\n border-radius: ${(p) => p.theme.borderRadius}em;\n ${coverStyles};\n`;\n\n/**\n * The image with lazy loading. Required lazysizes.\n * Should be loaded by @os-team/image-storage.\n */\nconst Image = forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n url,\n sizes = [72, 192, 512, 1024, 2560],\n defaultSize = 72,\n cropped = false,\n cover = false,\n className,\n ...rest\n },\n ref\n ) => {\n const getUrl = useCallback(\n (size: number) => `${url}-${size}${cropped ? '-c' : ''}`,\n [url, cropped]\n );\n\n if (!url) {\n return (\n <StyledImage\n src={EMPTY_IMAGE}\n className={className}\n {...rest}\n ref={ref}\n />\n );\n }\n\n return (\n <StyledImage\n src={getUrl(defaultSize)}\n srcSet={EMPTY_IMAGE}\n data-sizes='auto'\n data-srcset={sizes.map((size) => `${getUrl(size)} ${size}w`).join(', ')}\n cover={cover}\n className={[className, 'lazyload'].filter((i) => i).join(' ')}\n {...rest}\n ref={ref}\n />\n );\n }\n);\n\nImage.displayName = 'Image';\n\nexport default Image;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","useCallback","styled","omitEmotionProps","css","EMPTY_IMAGE","coverStyles","p","cover","StyledImage","theme","borderRadius","Image","url","sizes","defaultSize","cropped","className","rest","ref","getUrl","size","map","join","filter","i","displayName"],"sources":["../../../src/Image/index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback } from 'react';\nimport styled from '@emotion/styled';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { css } from '@emotion/react';\n\nconst EMPTY_IMAGE =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mO8+R8AArcB2pIvCSwAAAAASUVORK5CYII=';\n\ntype JsxImgProps = Omit<JSX.IntrinsicElements['img'], 'sizes' | 'ref'>;\nexport interface ImageProps extends JsxImgProps {\n /**\n * The image URL.\n * @default undefined\n */\n url?: string;\n /**\n * All available sizes of the image.\n * @default [72, 192, 512, 1024, 2560]\n */\n sizes?: number[];\n /**\n * The image size if the browser does not support lazy loading.\n * @default 72\n */\n defaultSize?: number;\n /**\n * Whether the image is cropped.\n * @default false\n */\n cropped?: boolean;\n /**\n * Sets object-fit: cover.\n * @default false\n */\n cover?: boolean;\n}\n\nconst coverStyles = (p) =>\n p.cover &&\n css`\n height: 100%;\n object-fit: cover;\n `;\n\ntype StyledImageProps = Pick<ImageProps, 'cover'>;\nconst StyledImage = styled('img', omitEmotionProps('cover'))<StyledImageProps>`\n display: block; // To remove the indent under the image\n width: 100%;\n border-radius: ${(p) => p.theme.borderRadius}em;\n ${coverStyles};\n`;\n\n/**\n * The image with lazy loading. Required lazysizes.\n * Should be loaded by @os-team/image-storage.\n */\nconst Image = forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n url,\n sizes = [72, 192, 512, 1024, 2560],\n defaultSize = 72,\n cropped = false,\n cover = false,\n className,\n ...rest\n },\n ref\n ) => {\n const getUrl = useCallback(\n (size: number) => `${url}-${size}${cropped ? '-c' : ''}`,\n [url, cropped]\n );\n\n if (!url) {\n return (\n <StyledImage\n src={EMPTY_IMAGE}\n className={className}\n {...rest}\n ref={ref}\n />\n );\n }\n\n return (\n <StyledImage\n src={getUrl(defaultSize)}\n srcSet={EMPTY_IMAGE}\n data-sizes='auto'\n data-srcset={sizes.map((size) => `${getUrl(size)} ${size}w`).join(', ')}\n cover={cover}\n className={[className, 'lazyload'].filter((i) => i).join(' ')}\n {...rest}\n ref={ref}\n />\n );\n }\n);\n\nImage.displayName = 'Image';\n\nexport default Image;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,WAA5B,QAA+C,OAA/C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,gBAApB;AAEA,MAAMC,WAAW,GACf,oHADF;;AAgCA,MAAMC,WAAW,GAAIC,CAAD,IAClBA,CAAC,CAACC,KAAF,IACAJ,GAAI;AACN;AACA;AACA,GALA;;AAQA,MAAMK,WAAW,GAAGP,MAAM,CAAC,KAAD,EAAQC,gBAAgB,CAAC,OAAD,CAAxB,CAAqD;AAC/E;AACA;AACA,mBAAoBI,CAAD,IAAOA,CAAC,CAACG,KAAF,CAAQC,YAAa;AAC/C,IAAIL,WAAY;AAChB,CALA;AAOA;AACA;AACA;AACA;;AACA,MAAMM,KAAK,gBAAGZ,UAAU,CACtB,CACE;EACEa,GADF;EAEEC,KAAK,GAAG,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,EAAe,IAAf,EAAqB,IAArB,CAFV;EAGEC,WAAW,GAAG,EAHhB;EAIEC,OAAO,GAAG,KAJZ;EAKER,KAAK,GAAG,KALV;EAMES,SANF;EAOE,GAAGC;AAPL,CADF,EAUEC,GAVF,KAWK;EACH,MAAMC,MAAM,GAAGnB,WAAW,CACvBoB,IAAD,IAAmB,GAAER,GAAI,IAAGQ,IAAK,GAAEL,OAAO,GAAG,IAAH,GAAU,EAAG,EAD/B,EAExB,CAACH,GAAD,EAAMG,OAAN,CAFwB,CAA1B;;EAKA,IAAI,CAACH,GAAL,EAAU;IACR,oBACE,oBAAC,WAAD;MACE,GAAG,EAAER,WADP;MAEE,SAAS,EAAEY;IAFb,GAGMC,IAHN;MAIE,GAAG,EAAEC;IAJP,GADF;EAQD;;EAED,oBACE,oBAAC,WAAD;IACE,GAAG,EAAEC,MAAM,CAACL,WAAD,CADb;IAEE,MAAM,EAAEV,WAFV;IAGE,cAAW,MAHb;IAIE,eAAaS,KAAK,CAACQ,GAAN,CAAWD,IAAD,IAAW,GAAED,MAAM,CAACC,IAAD,CAAO,IAAGA,IAAK,GAA5C,EAAgDE,IAAhD,CAAqD,IAArD,CAJf;IAKE,KAAK,EAAEf,KALT;IAME,SAAS,EAAE,CAACS,SAAD,EAAY,UAAZ,EAAwBO,MAAxB,CAAgCC,CAAD,IAAOA,CAAtC,EAAyCF,IAAzC,CAA8C,GAA9C;EANb,GAOML,IAPN;IAQE,GAAG,EAAEC;EARP,GADF;AAYD,CAzCqB,CAAxB;AA4CAP,KAAK,CAACc,WAAN,GAAoB,OAApB;AAEA,eAAed,KAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ImageSkeleton/index.tsx"],"names":["React","forwardRef","styled","Skeleton","StyledImageSkeleton","ImageSkeleton","props","ref","displayName"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,QAAP,MAAwC,aAAxC;AAIA,MAAMC,mBAAmB,GAAGF,MAAM,CAACC,QAAD,CAAW;AAC7C;AACA,CAFA;AAIA;AACA;AACA;;AACA,MAAME,aAAa,gBAAGJ,UAAU,CAC9B,CAACK,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,mBAAD;AAAqB,EAAA,KAAK,EAAC;AAA3B,GAAsCD,KAAtC;AAA6C,EAAA,GAAG,EAAEC;AAAlD,GADc,CAAhC;AAIAF,aAAa,CAACG,WAAd,GAA4B,eAA5B;AAEA,eAAeH,aAAf","sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type ImageSkeletonProps = Omit<SkeletonProps, 'width'>;\n\nconst StyledImageSkeleton = styled(Skeleton)`\n height: 100%;\n`;\n\n/**\n * Provides an image placeholder while a user waits for the content to load.\n */\nconst ImageSkeleton = forwardRef<HTMLDivElement, ImageSkeletonProps>(\n (props, ref) => <StyledImageSkeleton width='100%' {...props} ref={ref} />\n);\n\nImageSkeleton.displayName = 'ImageSkeleton';\n\nexport default ImageSkeleton;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","styled","Skeleton","StyledImageSkeleton","ImageSkeleton","props","ref","displayName"],"sources":["../../../src/ImageSkeleton/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type ImageSkeletonProps = Omit<SkeletonProps, 'width'>;\n\nconst StyledImageSkeleton = styled(Skeleton)`\n height: 100%;\n`;\n\n/**\n * Provides an image placeholder while a user waits for the content to load.\n */\nconst ImageSkeleton = forwardRef<HTMLDivElement, ImageSkeletonProps>(\n (props, ref) => <StyledImageSkeleton width='100%' {...props} ref={ref} />\n);\n\nImageSkeleton.displayName = 'ImageSkeleton';\n\nexport default ImageSkeleton;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,QAAP,MAAwC,aAAxC;AAIA,MAAMC,mBAAmB,GAAGF,MAAM,CAACC,QAAD,CAAW;AAC7C;AACA,CAFA;AAIA;AACA;AACA;;AACA,MAAME,aAAa,gBAAGJ,UAAU,CAC9B,CAACK,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,mBAAD;EAAqB,KAAK,EAAC;AAA3B,GAAsCD,KAAtC;EAA6C,GAAG,EAAEC;AAAlD,GADc,CAAhC;AAIAF,aAAa,CAACG,WAAd,GAA4B,eAA5B;AAEA,eAAeH,aAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Input/index.tsx"],"names":["React","forwardRef","useMemo","resetFocusStyles","sizeStyles","transitionStyles","omitEmotionProps","useForwardedRef","styled","clr","ThemeOverrider","css","Loading","getFocusableElements","hoverStyles","p","disabled","theme","inputHoverColorBorder","focusStyles","inputFocusColorBorder","inputFocusColorShadow","disabledStyles","inputDisabledColorText","inputDisabledColorBg","inputDisabledColorBorder","inputDisabledColorPlaceholder","InputContainer","baseHeight","inputColorBg","inputBorderWidth","inputColorBorder","borderRadius","notHasLeftStyles","hasLeft","inputPaddingHorizontal","notHasRightStyles","hasRight","StyledInput","inputColorText","inputColorPlaceholder","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","Input","type","left","leftHasPadding","right","rightHasPadding","loading","containerRef","containerProps","size","value","onChange","rest","ref","innerContainerRef","mergedContainerRef","rightValue","rightHasPaddingValue","e","target","current","focusableElements","focus","document","inputFocusableElements","firstInputElementIsFocused","activeElement","key","shiftKey","inputContainerIndex","findIndex","el","elementBeforeInputContainer","buttonPaddingHorizontal","displayName"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, ForwardedRef, forwardRef, useMemo } from 'react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps, useForwardedRef } from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport { Loading } from '@os-design/icons';\nimport getFocusableElements from './utils/getFocusableElements';\n\ntype JsxInputProps = Omit<\n JSX.IntrinsicElements['input'],\n 'value' | 'onChange' | 'size' | 'ref'\n>;\nexport interface InputProps extends JsxInputProps, WithSize {\n /**\n * Type of the input.\n * @default text\n */\n type?: JsxInputProps['type'];\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 * Whether the input is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * The ref of the input container.\n * @default undefined\n */\n containerRef?: ForwardedRef<HTMLDivElement>;\n /**\n * The props of the input container.\n * @default undefined\n */\n containerProps?: JSX.IntrinsicElements['div'];\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst hoverStyles = (p) =>\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover {\n border-color: ${clr(p.theme.inputHoverColorBorder)};\n }\n }\n `;\n\nconst focusStyles = (p) =>\n !p.disabled &&\n css`\n &:focus-within {\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n }\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n cursor: not-allowed;\n color: ${clr(p.theme.inputDisabledColorText)};\n background-color: ${clr(p.theme.inputDisabledColorBg)};\n border-color: ${clr(p.theme.inputDisabledColorBorder)};\n\n input,\n textarea {\n cursor: not-allowed;\n &::placeholder {\n color: ${clr(p.theme.inputDisabledColorPlaceholder)};\n }\n }\n `;\n\ntype InputContainerProps = Pick<InputProps, 'disabled' | 'size'>;\nexport const InputContainer = styled(\n 'div',\n omitEmotionProps('disabled', 'size')\n)<InputContainerProps>`\n ${resetFocusStyles};\n\n display: inline-flex;\n width: 100%;\n height: ${(p) => p.theme.baseHeight}em;\n box-sizing: border-box;\n background-color: ${(p) => clr(p.theme.inputColorBg)};\n\n border: ${(p) => p.theme.inputBorderWidth}px solid\n ${(p) => clr(p.theme.inputColorBorder)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n ${hoverStyles};\n ${focusStyles};\n ${disabledStyles};\n ${sizeStyles};\n ${transitionStyles('border-color', 'box-shadow')};\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface StyledInputProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n}\nexport const StyledInput = styled(\n 'input',\n omitEmotionProps('hasLeft', 'hasRight')\n)<StyledInputProps>`\n ${resetFocusStyles};\n appearance: none;\n border: none;\n font-size: 1em;\n flex: 1;\n overflow: hidden;\n\n color: ${(p) => clr(p.theme.inputColorText)};\n background-color: transparent;\n\n &::placeholder {\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n }\n\n ${notHasLeftStyles};\n ${notHasRightStyles};\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nconst LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The basic input component.\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n disabled = false,\n loading = false,\n containerRef,\n containerProps = {},\n size,\n value,\n onChange = () => {},\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] =\n useForwardedRef(containerRef);\n\n const rightValue = useMemo(\n () => (loading ? <Loading /> : right),\n [loading, right]\n );\n\n const rightHasPaddingValue = useMemo(\n () => (loading ? true : rightHasPadding),\n [loading, rightHasPadding]\n );\n\n return (\n <InputContainer\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onFocus={(e) => {\n // Focus the next element if the container element was focused.\n // The next element will be the input or button in the addon.\n if (disabled || e.target !== innerContainerRef.current) return;\n const focusableElements = getFocusableElements(\n innerContainerRef.current\n );\n focusableElements[0].focus();\n }}\n onKeyDown={(e) => {\n // Focus the previous element if the first element in the input\n // container is focused and the Shift + Tab combination is pressed.\n const focusableElements = getFocusableElements(document);\n const inputFocusableElements = innerContainerRef.current\n ? getFocusableElements(innerContainerRef.current)\n : [];\n const firstInputElementIsFocused =\n inputFocusableElements[0] === document.activeElement;\n if (firstInputElementIsFocused && e.key === 'Tab' && e.shiftKey) {\n const inputContainerIndex = focusableElements.findIndex(\n (el) => el === innerContainerRef.current\n );\n if (inputContainerIndex === 0) return;\n const elementBeforeInputContainer =\n focusableElements[inputContainerIndex - 1];\n elementBeforeInputContainer.focus();\n }\n }}\n ref={mergedContainerRef}\n {...containerProps}\n >\n {left && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <StyledInput\n type={type}\n disabled={disabled}\n hasLeft={!!left}\n hasRight={!!right}\n value={value || ''}\n onChange={(e) => onChange(e.target.value, e)}\n {...rest}\n ref={ref}\n />\n\n {rightValue && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","useMemo","resetFocusStyles","sizeStyles","transitionStyles","omitEmotionProps","useForwardedRef","styled","clr","ThemeOverrider","css","Loading","getFocusableElements","hoverStyles","p","disabled","theme","inputHoverColorBorder","focusStyles","inputFocusColorBorder","inputFocusColorShadow","disabledStyles","inputDisabledColorText","inputDisabledColorBg","inputDisabledColorBorder","inputDisabledColorPlaceholder","InputContainer","baseHeight","inputColorBg","inputBorderWidth","inputColorBorder","borderRadius","notHasLeftStyles","hasLeft","inputPaddingHorizontal","notHasRightStyles","hasRight","StyledInput","inputColorText","inputColorPlaceholder","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","Input","type","left","leftHasPadding","right","rightHasPadding","loading","containerRef","containerProps","size","value","onChange","rest","ref","innerContainerRef","mergedContainerRef","rightValue","rightHasPaddingValue","e","target","current","focusableElements","focus","document","inputFocusableElements","firstInputElementIsFocused","activeElement","key","shiftKey","inputContainerIndex","findIndex","el","elementBeforeInputContainer","buttonPaddingHorizontal","displayName"],"sources":["../../../src/Input/index.tsx"],"sourcesContent":["import React, { ChangeEvent, ForwardedRef, forwardRef, useMemo } from 'react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps, useForwardedRef } from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport { Loading } from '@os-design/icons';\nimport getFocusableElements from './utils/getFocusableElements';\n\ntype JsxInputProps = Omit<\n JSX.IntrinsicElements['input'],\n 'value' | 'onChange' | 'size' | 'ref'\n>;\nexport interface InputProps extends JsxInputProps, WithSize {\n /**\n * Type of the input.\n * @default text\n */\n type?: JsxInputProps['type'];\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 * Whether the input is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * The ref of the input container.\n * @default undefined\n */\n containerRef?: ForwardedRef<HTMLDivElement>;\n /**\n * The props of the input container.\n * @default undefined\n */\n containerProps?: JSX.IntrinsicElements['div'];\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst hoverStyles = (p) =>\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover {\n border-color: ${clr(p.theme.inputHoverColorBorder)};\n }\n }\n `;\n\nconst focusStyles = (p) =>\n !p.disabled &&\n css`\n &:focus-within {\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n }\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n cursor: not-allowed;\n color: ${clr(p.theme.inputDisabledColorText)};\n background-color: ${clr(p.theme.inputDisabledColorBg)};\n border-color: ${clr(p.theme.inputDisabledColorBorder)};\n\n input,\n textarea {\n cursor: not-allowed;\n &::placeholder {\n color: ${clr(p.theme.inputDisabledColorPlaceholder)};\n }\n }\n `;\n\ntype InputContainerProps = Pick<InputProps, 'disabled' | 'size'>;\nexport const InputContainer = styled(\n 'div',\n omitEmotionProps('disabled', 'size')\n)<InputContainerProps>`\n ${resetFocusStyles};\n\n display: inline-flex;\n width: 100%;\n height: ${(p) => p.theme.baseHeight}em;\n box-sizing: border-box;\n background-color: ${(p) => clr(p.theme.inputColorBg)};\n\n border: ${(p) => p.theme.inputBorderWidth}px solid\n ${(p) => clr(p.theme.inputColorBorder)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n ${hoverStyles};\n ${focusStyles};\n ${disabledStyles};\n ${sizeStyles};\n ${transitionStyles('border-color', 'box-shadow')};\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface StyledInputProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n}\nexport const StyledInput = styled(\n 'input',\n omitEmotionProps('hasLeft', 'hasRight')\n)<StyledInputProps>`\n ${resetFocusStyles};\n appearance: none;\n border: none;\n font-size: 1em;\n flex: 1;\n overflow: hidden;\n\n color: ${(p) => clr(p.theme.inputColorText)};\n background-color: transparent;\n\n &::placeholder {\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n }\n\n ${notHasLeftStyles};\n ${notHasRightStyles};\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nconst LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The basic input component.\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n disabled = false,\n loading = false,\n containerRef,\n containerProps = {},\n size,\n value,\n onChange = () => {},\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] =\n useForwardedRef(containerRef);\n\n const rightValue = useMemo(\n () => (loading ? <Loading /> : right),\n [loading, right]\n );\n\n const rightHasPaddingValue = useMemo(\n () => (loading ? true : rightHasPadding),\n [loading, rightHasPadding]\n );\n\n return (\n <InputContainer\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onFocus={(e) => {\n // Focus the next element if the container element was focused.\n // The next element will be the input or button in the addon.\n if (disabled || e.target !== innerContainerRef.current) return;\n const focusableElements = getFocusableElements(\n innerContainerRef.current\n );\n focusableElements[0].focus();\n }}\n onKeyDown={(e) => {\n // Focus the previous element if the first element in the input\n // container is focused and the Shift + Tab combination is pressed.\n const focusableElements = getFocusableElements(document);\n const inputFocusableElements = innerContainerRef.current\n ? getFocusableElements(innerContainerRef.current)\n : [];\n const firstInputElementIsFocused =\n inputFocusableElements[0] === document.activeElement;\n if (firstInputElementIsFocused && e.key === 'Tab' && e.shiftKey) {\n const inputContainerIndex = focusableElements.findIndex(\n (el) => el === innerContainerRef.current\n );\n if (inputContainerIndex === 0) return;\n const elementBeforeInputContainer =\n focusableElements[inputContainerIndex - 1];\n elementBeforeInputContainer.focus();\n }\n }}\n ref={mergedContainerRef}\n {...containerProps}\n >\n {left && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <StyledInput\n type={type}\n disabled={disabled}\n hasLeft={!!left}\n hasRight={!!right}\n value={value || ''}\n onChange={(e) => onChange(e.target.value, e)}\n {...rest}\n ref={ref}\n />\n\n {rightValue && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAA2CC,UAA3C,EAAuDC,OAAvD,QAAsE,OAAtE;AACA,SACEC,gBADF,EAEEC,UAFF,EAGEC,gBAHF,QAKO,mBALP;AAMA,SAASC,gBAAT,EAA2BC,eAA3B,QAAkD,kBAAlD;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,GAAT,EAAcC,cAAd,QAAoC,oBAApC;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,OAAOC,oBAAP,MAAiC,8BAAjC;;AAkEA,MAAMC,WAAW,GAAIC,CAAD,IAClB,CAACA,CAAC,CAACC,QAAH,IACAL,GAAI;AACN;AACA;AACA,wBAAwBF,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQC,qBAAT,CAAgC;AAC3D;AACA;AACA,GARA;;AAUA,MAAMC,WAAW,GAAIJ,CAAD,IAClB,CAACA,CAAC,CAACC,QAAH,IACAL,GAAI;AACN;AACA,sBAAsBF,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQG,qBAAT,CAAgC;AACzD,iCAAiCX,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQI,qBAAT,CAAgC;AACpE;AACA,GAPA;;AASA,MAAMC,cAAc,GAAIP,CAAD,IACrBA,CAAC,CAACC,QAAF,IACAL,GAAI;AACN;AACA,aAAaF,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQM,sBAAT,CAAiC;AACjD,wBAAwBd,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQO,oBAAT,CAA+B;AAC1D,oBAAoBf,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQQ,wBAAT,CAAmC;AAC1D;AACA;AACA;AACA;AACA;AACA,iBAAiBhB,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQS,6BAAT,CAAwC;AAC5D;AACA;AACA,GAfA;;AAkBA,OAAO,MAAMC,cAAc,GAAGnB,MAAM,CAClC,KADkC,EAElCF,gBAAgB,CAAC,UAAD,EAAa,MAAb,CAFkB,CAGb;AACvB,IAAIH,gBAAiB;AACrB;AACA;AACA;AACA,YAAaY,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQW,UAAW;AACtC;AACA,sBAAuBb,CAAD,IAAON,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQY,YAAT,CAAuB;AACvD;AACA,YAAad,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQa,gBAAiB;AAC5C,MAAOf,CAAD,IAAON,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQc,gBAAT,CAA2B;AAC3C,mBAAoBhB,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQe,YAAa;AAC/C;AACA,IAAIlB,WAAY;AAChB,IAAIK,WAAY;AAChB,IAAIG,cAAe;AACnB,IAAIlB,UAAW;AACf,IAAIC,gBAAgB,CAAC,cAAD,EAAiB,YAAjB,CAA+B;AACnD,CArBO;;AAuBP,MAAM4B,gBAAgB,GAAIlB,CAAD,IACvB,CAACA,CAAC,CAACmB,OAAH,IACAvB,GAAI;AACN,oBAAoBI,CAAC,CAACE,KAAF,CAAQkB,sBAAuB;AACnD,GAJA;;AAMA,MAAMC,iBAAiB,GAAIrB,CAAD,IACxB,CAACA,CAAC,CAACsB,QAAH,IACA1B,GAAI;AACN,qBAAqBI,CAAC,CAACE,KAAF,CAAQkB,sBAAuB;AACpD,GAJA;;AAUA,OAAO,MAAMG,WAAW,GAAG9B,MAAM,CAC/B,OAD+B,EAE/BF,gBAAgB,CAAC,SAAD,EAAY,UAAZ,CAFe,CAGb;AACpB,IAAIH,gBAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,WAAYY,CAAD,IAAON,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQsB,cAAT,CAAyB;AAC9C;AACA;AACA;AACA,aAAcxB,CAAD,IAAON,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQuB,qBAAT,CAAgC;AACvD;AACA;AACA,IAAIP,gBAAiB;AACrB,IAAIG,iBAAkB;AACtB,CApBO;AAyBP,MAAMK,KAAK,GAAGjC,MAAM,CAAC,MAAD,EAASF,gBAAgB,CAAC,YAAD,CAAzB,CAAqD;AACzE;AACA;AACA;AACA,WAAYS,CAAD,IAAON,GAAG,CAACM,CAAC,CAACE,KAAF,CAAQuB,qBAAT,CAAgC;AACrD;AACA;AACA;AACA;AACA,CATA;AAWA,MAAME,SAAS,GAAGlC,MAAM,CAACiC,KAAD,CAAQ;AAChC,mBAAoB1B,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQ0B,2BAA4B;AAC9D,IAAK5B,CAAD,IACAA,CAAC,CAAC6B,UAAF,IACAjC,GAAI;AACR,sBAAsBI,CAAC,CAACE,KAAF,CAAQkB,sBAAuB;AACrD,KAAM;AACN,CAPA;AASA,MAAMU,UAAU,GAAGrC,MAAM,CAACiC,KAAD,CAAQ;AACjC,kBAAmB1B,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQ0B,2BAA4B;AAC7D,IAAK5B,CAAD,IACAA,CAAC,CAAC6B,UAAF,IACAjC,GAAI;AACR,uBAAuBI,CAAC,CAACE,KAAF,CAAQkB,sBAAuB;AACtD,KAAM;AACN,CAPA;AASA;AACA;AACA;;AACA,MAAMW,KAAK,gBAAG7C,UAAU,CACtB,CACE;EACE8C,IAAI,GAAG,MADT;EAEEC,IAFF;EAGEC,cAAc,GAAG,KAHnB;EAIEC,KAJF;EAKEC,eAAe,GAAG,KALpB;EAMEnC,QAAQ,GAAG,KANb;EAOEoC,OAAO,GAAG,KAPZ;EAQEC,YARF;EASEC,cAAc,GAAG,EATnB;EAUEC,IAVF;EAWEC,KAXF;EAYEC,QAAQ,GAAG,MAAM,CAAE,CAZrB;EAaE,GAAGC;AAbL,CADF,EAgBEC,GAhBF,KAiBK;EACH,MAAM,CAACC,iBAAD,EAAoBC,kBAApB,IACJtD,eAAe,CAAC8C,YAAD,CADjB;EAGA,MAAMS,UAAU,GAAG5D,OAAO,CACxB,MAAOkD,OAAO,gBAAG,oBAAC,OAAD,OAAH,GAAiBF,KADP,EAExB,CAACE,OAAD,EAAUF,KAAV,CAFwB,CAA1B;EAKA,MAAMa,oBAAoB,GAAG7D,OAAO,CAClC,MAAOkD,OAAO,GAAG,IAAH,GAAUD,eADU,EAElC,CAACC,OAAD,EAAUD,eAAV,CAFkC,CAApC;EAKA,oBACE,oBAAC,cAAD;IACE,QAAQ,EAAEnC,QADZ;IAEE,IAAI,EAAEuC,IAFR;IAGE,QAAQ,EAAE,CAACvC,QAAD,GAAY,CAAZ,GAAgB,CAAC,CAH7B;IAIE,OAAO,EAAGgD,CAAD,IAAO;MACd;MACA;MACA,IAAIhD,QAAQ,IAAIgD,CAAC,CAACC,MAAF,KAAaL,iBAAiB,CAACM,OAA/C,EAAwD;MACxD,MAAMC,iBAAiB,GAAGtD,oBAAoB,CAC5C+C,iBAAiB,CAACM,OAD0B,CAA9C;MAGAC,iBAAiB,CAAC,CAAD,CAAjB,CAAqBC,KAArB;IACD,CAZH;IAaE,SAAS,EAAGJ,CAAD,IAAO;MAChB;MACA;MACA,MAAMG,iBAAiB,GAAGtD,oBAAoB,CAACwD,QAAD,CAA9C;MACA,MAAMC,sBAAsB,GAAGV,iBAAiB,CAACM,OAAlB,GAC3BrD,oBAAoB,CAAC+C,iBAAiB,CAACM,OAAnB,CADO,GAE3B,EAFJ;MAGA,MAAMK,0BAA0B,GAC9BD,sBAAsB,CAAC,CAAD,CAAtB,KAA8BD,QAAQ,CAACG,aADzC;;MAEA,IAAID,0BAA0B,IAAIP,CAAC,CAACS,GAAF,KAAU,KAAxC,IAAiDT,CAAC,CAACU,QAAvD,EAAiE;QAC/D,MAAMC,mBAAmB,GAAGR,iBAAiB,CAACS,SAAlB,CACzBC,EAAD,IAAQA,EAAE,KAAKjB,iBAAiB,CAACM,OADP,CAA5B;QAGA,IAAIS,mBAAmB,KAAK,CAA5B,EAA+B;QAC/B,MAAMG,2BAA2B,GAC/BX,iBAAiB,CAACQ,mBAAmB,GAAG,CAAvB,CADnB;QAEAG,2BAA2B,CAACV,KAA5B;MACD;IACF,CA/BH;IAgCE,GAAG,EAAEP;EAhCP,GAiCMP,cAjCN,GAmCGN,IAAI,iBACH,oBAAC,cAAD;IAAgB,SAAS,EAAE;MAAE+B,uBAAuB,EAAE;IAA3B;EAA3B,gBACE,oBAAC,SAAD;IAAW,UAAU,EAAE9B;EAAvB,GAAwCD,IAAxC,CADF,CApCJ,eAyCE,oBAAC,WAAD;IACE,IAAI,EAAED,IADR;IAEE,QAAQ,EAAE/B,QAFZ;IAGE,OAAO,EAAE,CAAC,CAACgC,IAHb;IAIE,QAAQ,EAAE,CAAC,CAACE,KAJd;IAKE,KAAK,EAAEM,KAAK,IAAI,EALlB;IAME,QAAQ,EAAGQ,CAAD,IAAOP,QAAQ,CAACO,CAAC,CAACC,MAAF,CAAST,KAAV,EAAiBQ,CAAjB;EAN3B,GAOMN,IAPN;IAQE,GAAG,EAAEC;EARP,GAzCF,EAoDGG,UAAU,iBACT,oBAAC,cAAD;IAAgB,SAAS,EAAE;MAAEiB,uBAAuB,EAAE;IAA3B;EAA3B,gBACE,oBAAC,UAAD;IAAY,UAAU,EAAEhB;EAAxB,GACGD,UADH,CADF,CArDJ,CADF;AA8DD,CA9FqB,CAAxB;AAiGAhB,KAAK,CAACkC,WAAN,GAAoB,OAApB;AAEA,eAAelC,KAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/Input/utils/getFocusableElements.ts"],"names":["getFocusableElements","element","querySelectorAll","filter","el","hasAttribute"],"mappings":"AAAA,MAAMA,oBAAoB,GAAIC,OAAD,IAC3B,CACE,GAAGA,OAAO,CAACC,gBAAR,CACD,6EADC,CADL,EAIEC,MAJF,CAIUC,EAAD,IAAQ,CAACA,EAAE,CAACC,YAAH,CAAgB,UAAhB,CAJlB,CADF;;AAOA,eAAeL,oBAAf","sourcesContent":["const getFocusableElements = (element: ParentNode): HTMLElement[] =>\n [\n ...element.querySelectorAll<HTMLElement>(\n 'a, button, input, textarea, select, details,[tabindex]:not([tabindex=\"-1\"])'\n ),\n ].filter((el) => !el.hasAttribute('disabled'));\n\nexport default getFocusableElements;\n"],"file":"getFocusableElements.js"}
1
+ {"version":3,"file":"getFocusableElements.js","names":["getFocusableElements","element","querySelectorAll","filter","el","hasAttribute"],"sources":["../../../../src/Input/utils/getFocusableElements.ts"],"sourcesContent":["const getFocusableElements = (element: ParentNode): HTMLElement[] =>\n [\n ...element.querySelectorAll<HTMLElement>(\n 'a, button, input, textarea, select, details,[tabindex]:not([tabindex=\"-1\"])'\n ),\n ].filter((el) => !el.hasAttribute('disabled'));\n\nexport default getFocusableElements;\n"],"mappings":"AAAA,MAAMA,oBAAoB,GAAIC,OAAD,IAC3B,CACE,GAAGA,OAAO,CAACC,gBAAR,CACD,6EADC,CADL,EAIEC,MAJF,CAIUC,EAAD,IAAQ,CAACA,EAAE,CAACC,YAAH,CAAgB,UAAhB,CAJlB,CADF;;AAOA,eAAeL,oBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/InputNumber/index.tsx"],"names":["React","forwardRef","useEffect","useMemo","useState","useForwardedRef","numberToFormattedString","getNextState","getNextCaret","useValidate","useGetCaretWithinValue","Input","defaultLocale","InputNumber","min","max","precision","prefix","suffix","decimalSeparator","thousandsSeparator","locale","value","onChange","onSelect","onFocus","rest","ref","options","inputRef","mergedInputRef","valueString","setValueString","selection","setSelection","start","end","getCaretWithinValue","current","setSelectionRange","e","selectionStart","selectionEnd","currentTarget","length","v","nextState","valueNumber","nextCaret","prevValueString","nextValueString","prevCaret","deleteKeyPressed","nativeEvent","inputType","undefined","emptyLabel","displayName"],"mappings":"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","sourcesContent":["import React, { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { useForwardedRef } from '@os-design/utils';\nimport {\n numberToFormattedString,\n getNextState,\n getNextCaret,\n useValidate,\n useGetCaretWithinValue,\n} from '@os-design/input-number-utils';\nimport Input, { InputProps } from '../Input';\nimport defaultLocale, { InputNumberLocale } from './utils/defaultLocale';\n\nexport interface InputNumberProps\n extends Omit<InputProps, 'type' | 'value' | 'onChange'> {\n /**\n * The minimum value.\n * @default 0\n */\n min?: number;\n /**\n * The maximum value.\n * @default 2147483647\n */\n max?: number;\n /**\n * The number of digits after the decimal point.\n * @default 0\n */\n precision?: number;\n /**\n * The string before the number.\n * @default undefined\n */\n prefix?: string;\n /**\n * The string after the number.\n * @default undefined\n */\n suffix?: string;\n /**\n * The decimal separator.\n * @default .\n */\n decimalSeparator?: '.' | ',';\n /**\n * The thousands separator.\n * @default ' '\n */\n thousandsSeparator?: ' ' | '.' | ',' | null;\n /**\n * The locale.\n * @default undefined\n */\n locale?: InputNumberLocale;\n /**\n * The input value.\n * @default undefined\n */\n value?: number | null;\n /**\n * The change event handler.\n * Returns null when the input value is empty.\n * @default undefined\n */\n onChange?: (value: number | null) => void;\n}\n\ninterface Selection {\n start: number;\n end: number;\n}\n\n/**\n * The input for entering a number.\n */\nconst InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n min = 0,\n max = 2147483647,\n precision = 0,\n prefix = '',\n suffix = '',\n decimalSeparator = '.',\n thousandsSeparator = ' ',\n locale = defaultLocale,\n value = null,\n onChange = () => {},\n onSelect = () => {},\n onFocus = () => {},\n ...rest\n },\n ref\n ) => {\n useValidate({\n min,\n max,\n precision,\n prefix,\n suffix,\n decimalSeparator,\n thousandsSeparator,\n });\n\n const options = useMemo(\n () => ({\n min,\n max,\n precision,\n prefix,\n suffix,\n decimalSeparator,\n thousandsSeparator,\n }),\n [\n min,\n max,\n precision,\n prefix,\n suffix,\n decimalSeparator,\n thousandsSeparator,\n ]\n );\n\n const [inputRef, mergedInputRef] = useForwardedRef(ref);\n const [valueString, setValueString] = useState<string>(\n numberToFormattedString(value, options)\n );\n const [selection, setSelection] = useState<Selection>({ start: 0, end: 0 });\n const getCaretWithinValue = useGetCaretWithinValue(prefix, suffix);\n\n // Update the value\n useEffect(() => {\n setValueString(numberToFormattedString(value, options));\n }, [value, options]);\n\n // Update the selection\n useEffect(() => {\n if (!inputRef.current) return;\n inputRef.current.setSelectionRange(selection.start, selection.end);\n }, [inputRef, selection]);\n\n return (\n <Input\n onSelect={(e) => {\n // Update the selection state.\n // Don't use `getCaretWithinValue` here to allow a user to copy\n // the input value with a prefix and suffix.\n const { selectionStart, selectionEnd } = e.currentTarget;\n setSelection({ start: selectionStart || 0, end: selectionEnd || 0 });\n onSelect(e);\n }}\n onFocus={(e) => {\n // Move the caret to the end of the input value and before the suffix\n setSelection({\n start: getCaretWithinValue(valueString.length, valueString),\n end: getCaretWithinValue(valueString.length, valueString),\n });\n onFocus(e);\n }}\n value={valueString}\n onChange={(v, e) => {\n // Get a new value as a string and number\n const nextState = getNextState(v, options);\n\n // Set the new string value in the input field\n setValueString(nextState.valueString);\n\n // Send the new numeric value in the onChange callback\n onChange(nextState.valueNumber);\n\n // Update the caret position\n const nextCaret = getCaretWithinValue(\n getNextCaret({\n value: v,\n prevValueString: valueString,\n nextValueString: nextState.valueString,\n prevCaret: selection.end,\n deleteKeyPressed:\n (e.nativeEvent as InputEvent).inputType ===\n 'deleteContentBackward',\n options,\n }),\n nextState.valueString\n );\n setSelection({ start: nextCaret, end: nextCaret });\n }}\n role='spinbutton'\n aria-valuenow={\n value !== undefined && value !== null ? value : undefined\n }\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuetext={valueString === '' ? locale.emptyLabel : undefined}\n inputMode='decimal'\n autoComplete='off'\n autoCorrect='off'\n {...rest}\n ref={mergedInputRef}\n />\n );\n }\n);\n\nInputNumber.displayName = 'InputNumber';\n\nexport default InputNumber;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","useEffect","useMemo","useState","useForwardedRef","numberToFormattedString","getNextState","getNextCaret","useValidate","useGetCaretWithinValue","Input","defaultLocale","InputNumber","min","max","precision","prefix","suffix","decimalSeparator","thousandsSeparator","locale","value","onChange","onSelect","onFocus","rest","ref","options","inputRef","mergedInputRef","valueString","setValueString","selection","setSelection","start","end","getCaretWithinValue","current","setSelectionRange","e","selectionStart","selectionEnd","currentTarget","length","v","nextState","valueNumber","nextCaret","prevValueString","nextValueString","prevCaret","deleteKeyPressed","nativeEvent","inputType","undefined","emptyLabel","displayName"],"sources":["../../../src/InputNumber/index.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { useForwardedRef } from '@os-design/utils';\nimport {\n numberToFormattedString,\n getNextState,\n getNextCaret,\n useValidate,\n useGetCaretWithinValue,\n} from '@os-design/input-number-utils';\nimport Input, { InputProps } from '../Input';\nimport defaultLocale, { InputNumberLocale } from './utils/defaultLocale';\n\nexport interface InputNumberProps\n extends Omit<InputProps, 'type' | 'value' | 'onChange'> {\n /**\n * The minimum value.\n * @default 0\n */\n min?: number;\n /**\n * The maximum value.\n * @default 2147483647\n */\n max?: number;\n /**\n * The number of digits after the decimal point.\n * @default 0\n */\n precision?: number;\n /**\n * The string before the number.\n * @default undefined\n */\n prefix?: string;\n /**\n * The string after the number.\n * @default undefined\n */\n suffix?: string;\n /**\n * The decimal separator.\n * @default .\n */\n decimalSeparator?: '.' | ',';\n /**\n * The thousands separator.\n * @default ' '\n */\n thousandsSeparator?: ' ' | '.' | ',' | null;\n /**\n * The locale.\n * @default undefined\n */\n locale?: InputNumberLocale;\n /**\n * The input value.\n * @default undefined\n */\n value?: number | null;\n /**\n * The change event handler.\n * Returns null when the input value is empty.\n * @default undefined\n */\n onChange?: (value: number | null) => void;\n}\n\ninterface Selection {\n start: number;\n end: number;\n}\n\n/**\n * The input for entering a number.\n */\nconst InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n min = 0,\n max = 2147483647,\n precision = 0,\n prefix = '',\n suffix = '',\n decimalSeparator = '.',\n thousandsSeparator = ' ',\n locale = defaultLocale,\n value = null,\n onChange = () => {},\n onSelect = () => {},\n onFocus = () => {},\n ...rest\n },\n ref\n ) => {\n useValidate({\n min,\n max,\n precision,\n prefix,\n suffix,\n decimalSeparator,\n thousandsSeparator,\n });\n\n const options = useMemo(\n () => ({\n min,\n max,\n precision,\n prefix,\n suffix,\n decimalSeparator,\n thousandsSeparator,\n }),\n [\n min,\n max,\n precision,\n prefix,\n suffix,\n decimalSeparator,\n thousandsSeparator,\n ]\n );\n\n const [inputRef, mergedInputRef] = useForwardedRef(ref);\n const [valueString, setValueString] = useState<string>(\n numberToFormattedString(value, options)\n );\n const [selection, setSelection] = useState<Selection>({ start: 0, end: 0 });\n const getCaretWithinValue = useGetCaretWithinValue(prefix, suffix);\n\n // Update the value\n useEffect(() => {\n setValueString(numberToFormattedString(value, options));\n }, [value, options]);\n\n // Update the selection\n useEffect(() => {\n if (!inputRef.current) return;\n inputRef.current.setSelectionRange(selection.start, selection.end);\n }, [inputRef, selection]);\n\n return (\n <Input\n onSelect={(e) => {\n // Update the selection state.\n // Don't use `getCaretWithinValue` here to allow a user to copy\n // the input value with a prefix and suffix.\n const { selectionStart, selectionEnd } = e.currentTarget;\n setSelection({ start: selectionStart || 0, end: selectionEnd || 0 });\n onSelect(e);\n }}\n onFocus={(e) => {\n // Move the caret to the end of the input value and before the suffix\n setSelection({\n start: getCaretWithinValue(valueString.length, valueString),\n end: getCaretWithinValue(valueString.length, valueString),\n });\n onFocus(e);\n }}\n value={valueString}\n onChange={(v, e) => {\n // Get a new value as a string and number\n const nextState = getNextState(v, options);\n\n // Set the new string value in the input field\n setValueString(nextState.valueString);\n\n // Send the new numeric value in the onChange callback\n onChange(nextState.valueNumber);\n\n // Update the caret position\n const nextCaret = getCaretWithinValue(\n getNextCaret({\n value: v,\n prevValueString: valueString,\n nextValueString: nextState.valueString,\n prevCaret: selection.end,\n deleteKeyPressed:\n (e.nativeEvent as InputEvent).inputType ===\n 'deleteContentBackward',\n options,\n }),\n nextState.valueString\n );\n setSelection({ start: nextCaret, end: nextCaret });\n }}\n role='spinbutton'\n aria-valuenow={\n value !== undefined && value !== null ? value : undefined\n }\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuetext={valueString === '' ? locale.emptyLabel : undefined}\n inputMode='decimal'\n autoComplete='off'\n autoCorrect='off'\n {...rest}\n ref={mergedInputRef}\n />\n );\n }\n);\n\nInputNumber.displayName = 'InputNumber';\n\nexport default InputNumber;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,SAA5B,EAAuCC,OAAvC,EAAgDC,QAAhD,QAAgE,OAAhE;AACA,SAASC,eAAT,QAAgC,kBAAhC;AACA,SACEC,uBADF,EAEEC,YAFF,EAGEC,YAHF,EAIEC,WAJF,EAKEC,sBALF,QAMO,+BANP;AAOA,OAAOC,KAAP,MAAkC,UAAlC;AACA,OAAOC,aAAP,MAAiD,uBAAjD;;AA8DA;AACA;AACA;AACA,MAAMC,WAAW,gBAAGZ,UAAU,CAC5B,CACE;EACEa,GAAG,GAAG,CADR;EAEEC,GAAG,GAAG,UAFR;EAGEC,SAAS,GAAG,CAHd;EAIEC,MAAM,GAAG,EAJX;EAKEC,MAAM,GAAG,EALX;EAMEC,gBAAgB,GAAG,GANrB;EAOEC,kBAAkB,GAAG,GAPvB;EAQEC,MAAM,GAAGT,aARX;EASEU,KAAK,GAAG,IATV;EAUEC,QAAQ,GAAG,MAAM,CAAE,CAVrB;EAWEC,QAAQ,GAAG,MAAM,CAAE,CAXrB;EAYEC,OAAO,GAAG,MAAM,CAAE,CAZpB;EAaE,GAAGC;AAbL,CADF,EAgBEC,GAhBF,KAiBK;EACHlB,WAAW,CAAC;IACVK,GADU;IAEVC,GAFU;IAGVC,SAHU;IAIVC,MAJU;IAKVC,MALU;IAMVC,gBANU;IAOVC;EAPU,CAAD,CAAX;EAUA,MAAMQ,OAAO,GAAGzB,OAAO,CACrB,OAAO;IACLW,GADK;IAELC,GAFK;IAGLC,SAHK;IAILC,MAJK;IAKLC,MALK;IAMLC,gBANK;IAOLC;EAPK,CAAP,CADqB,EAUrB,CACEN,GADF,EAEEC,GAFF,EAGEC,SAHF,EAIEC,MAJF,EAKEC,MALF,EAMEC,gBANF,EAOEC,kBAPF,CAVqB,CAAvB;EAqBA,MAAM,CAACS,QAAD,EAAWC,cAAX,IAA6BzB,eAAe,CAACsB,GAAD,CAAlD;EACA,MAAM,CAACI,WAAD,EAAcC,cAAd,IAAgC5B,QAAQ,CAC5CE,uBAAuB,CAACgB,KAAD,EAAQM,OAAR,CADqB,CAA9C;EAGA,MAAM,CAACK,SAAD,EAAYC,YAAZ,IAA4B9B,QAAQ,CAAY;IAAE+B,KAAK,EAAE,CAAT;IAAYC,GAAG,EAAE;EAAjB,CAAZ,CAA1C;EACA,MAAMC,mBAAmB,GAAG3B,sBAAsB,CAACO,MAAD,EAASC,MAAT,CAAlD,CArCG,CAuCH;;EACAhB,SAAS,CAAC,MAAM;IACd8B,cAAc,CAAC1B,uBAAuB,CAACgB,KAAD,EAAQM,OAAR,CAAxB,CAAd;EACD,CAFQ,EAEN,CAACN,KAAD,EAAQM,OAAR,CAFM,CAAT,CAxCG,CA4CH;;EACA1B,SAAS,CAAC,MAAM;IACd,IAAI,CAAC2B,QAAQ,CAACS,OAAd,EAAuB;IACvBT,QAAQ,CAACS,OAAT,CAAiBC,iBAAjB,CAAmCN,SAAS,CAACE,KAA7C,EAAoDF,SAAS,CAACG,GAA9D;EACD,CAHQ,EAGN,CAACP,QAAD,EAAWI,SAAX,CAHM,CAAT;EAKA,oBACE,oBAAC,KAAD;IACE,QAAQ,EAAGO,CAAD,IAAO;MACf;MACA;MACA;MACA,MAAM;QAAEC,cAAF;QAAkBC;MAAlB,IAAmCF,CAAC,CAACG,aAA3C;MACAT,YAAY,CAAC;QAAEC,KAAK,EAAEM,cAAc,IAAI,CAA3B;QAA8BL,GAAG,EAAEM,YAAY,IAAI;MAAnD,CAAD,CAAZ;MACAlB,QAAQ,CAACgB,CAAD,CAAR;IACD,CARH;IASE,OAAO,EAAGA,CAAD,IAAO;MACd;MACAN,YAAY,CAAC;QACXC,KAAK,EAAEE,mBAAmB,CAACN,WAAW,CAACa,MAAb,EAAqBb,WAArB,CADf;QAEXK,GAAG,EAAEC,mBAAmB,CAACN,WAAW,CAACa,MAAb,EAAqBb,WAArB;MAFb,CAAD,CAAZ;MAIAN,OAAO,CAACe,CAAD,CAAP;IACD,CAhBH;IAiBE,KAAK,EAAET,WAjBT;IAkBE,QAAQ,EAAE,CAACc,CAAD,EAAIL,CAAJ,KAAU;MAClB;MACA,MAAMM,SAAS,GAAGvC,YAAY,CAACsC,CAAD,EAAIjB,OAAJ,CAA9B,CAFkB,CAIlB;;MACAI,cAAc,CAACc,SAAS,CAACf,WAAX,CAAd,CALkB,CAOlB;;MACAR,QAAQ,CAACuB,SAAS,CAACC,WAAX,CAAR,CARkB,CAUlB;;MACA,MAAMC,SAAS,GAAGX,mBAAmB,CACnC7B,YAAY,CAAC;QACXc,KAAK,EAAEuB,CADI;QAEXI,eAAe,EAAElB,WAFN;QAGXmB,eAAe,EAAEJ,SAAS,CAACf,WAHhB;QAIXoB,SAAS,EAAElB,SAAS,CAACG,GAJV;QAKXgB,gBAAgB,EACbZ,CAAC,CAACa,WAAH,CAA8BC,SAA9B,KACA,uBAPS;QAQX1B;MARW,CAAD,CADuB,EAWnCkB,SAAS,CAACf,WAXyB,CAArC;MAaAG,YAAY,CAAC;QAAEC,KAAK,EAAEa,SAAT;QAAoBZ,GAAG,EAAEY;MAAzB,CAAD,CAAZ;IACD,CA3CH;IA4CE,IAAI,EAAC,YA5CP;IA6CE,iBACE1B,KAAK,KAAKiC,SAAV,IAAuBjC,KAAK,KAAK,IAAjC,GAAwCA,KAAxC,GAAgDiC,SA9CpD;IAgDE,iBAAezC,GAhDjB;IAiDE,iBAAeC,GAjDjB;IAkDE,kBAAgBgB,WAAW,KAAK,EAAhB,GAAqBV,MAAM,CAACmC,UAA5B,GAAyCD,SAlD3D;IAmDE,SAAS,EAAC,SAnDZ;IAoDE,YAAY,EAAC,KApDf;IAqDE,WAAW,EAAC;EArDd,GAsDM7B,IAtDN;IAuDE,GAAG,EAAEI;EAvDP,GADF;AA2DD,CA/H2B,CAA9B;AAkIAjB,WAAW,CAAC4C,WAAZ,GAA0B,aAA1B;AAEA,eAAe5C,WAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/InputNumber/utils/defaultLocale.ts"],"names":["defaultLocale","emptyLabel"],"mappings":"AAIA,MAAMA,aAAgC,GAAG;AACvCC,EAAAA,UAAU,EAAE;AAD2B,CAAzC;AAIA,eAAeD,aAAf","sourcesContent":["export interface InputNumberLocale {\n emptyLabel: string;\n}\n\nconst defaultLocale: InputNumberLocale = {\n emptyLabel: 'Empty',\n};\n\nexport default defaultLocale;\n"],"file":"defaultLocale.js"}
1
+ {"version":3,"file":"defaultLocale.js","names":["defaultLocale","emptyLabel"],"sources":["../../../../src/InputNumber/utils/defaultLocale.ts"],"sourcesContent":["export interface InputNumberLocale {\n emptyLabel: string;\n}\n\nconst defaultLocale: InputNumberLocale = {\n emptyLabel: 'Empty',\n};\n\nexport default defaultLocale;\n"],"mappings":"AAIA,MAAMA,aAAgC,GAAG;EACvCC,UAAU,EAAE;AAD2B,CAAzC;AAIA,eAAeD,aAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/InputPassword/index.tsx"],"names":["React","forwardRef","useEffect","useMemo","useState","Eye","EyeInvisible","ThemeOverrider","useTheme","useForwardedRef","useForwardedState","getPasswordScore","styled","Input","Button","Progress","defaultLocale","StrengthMeterProgress","InputPassword","showStrengthMeter","strengthNames","strengthThresholds","locale","value","defaultValue","onChange","onSelect","disabled","right","rest","ref","inputRef","mergedInputRef","forwardedValue","setForwardedValue","selection","setSelection","start","end","invisible","setInvisible","theme","current","setSelectionRange","score","strength","name","color","inputPasswordColorPowerful","inputPasswordColorStrong","inputPasswordColorGood","inputPasswordColorWeak","focus","showLabel","hideLabel","e","selectionStart","selectionEnd","currentTarget","progressColorStroke","progressColorStrokeSuccess","undefined","displayName"],"mappings":"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","sourcesContent":["import React, { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { Eye, EyeInvisible } from '@os-design/icons';\nimport { ThemeOverrider, useTheme } from '@os-design/theming';\nimport { useForwardedRef, useForwardedState } from '@os-design/utils';\nimport getPasswordScore from '@os-team/password-score';\nimport styled from '@emotion/styled';\nimport Input, { InputProps } from '../Input';\nimport Button from '../Button';\nimport Progress from '../Progress';\nimport defaultLocale, { InputPasswordLocale } from './utils/defaultLocale';\n\nexport interface InputPasswordProps extends Omit<InputProps, 'type'> {\n /**\n * Whether the password strength meter is visible.\n * @default false\n */\n showStrengthMeter?: boolean;\n /**\n * The name of a weak, good, strong, and powerful password.\n * Located to the right of the password strength meter.\n * @default undefined\n */\n strengthNames?: Record<'weak' | 'good' | 'strong' | 'powerful', string>;\n /**\n * From what number of score the password is considered\n * good, strong, and powerful.\n * @default [30, 60, 80]\n */\n strengthThresholds?: [number, number, number];\n /**\n * The locale.\n * @default undefined\n */\n locale?: InputPasswordLocale;\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string) => void;\n}\n\ninterface Selection {\n start: number;\n end: number;\n}\n\nconst StrengthMeterProgress = styled(Progress)`\n margin-top: 0.4em;\n`;\n\n/**\n * The input for entering a password.\n */\nconst InputPassword = forwardRef<HTMLInputElement, InputPasswordProps>(\n (\n {\n showStrengthMeter = false,\n strengthNames,\n strengthThresholds = [30, 60, 80],\n locale = defaultLocale,\n value,\n defaultValue,\n onChange = () => {},\n onSelect = () => {},\n disabled,\n right,\n ...rest\n },\n ref\n ) => {\n const [inputRef, mergedInputRef] = useForwardedRef(ref);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n const [selection, setSelection] = useState<Selection>({ start: 0, end: 0 });\n const [invisible, setInvisible] = useState(true);\n const { theme } = useTheme();\n\n // Update the selection of the input when changing the invisible flag\n useEffect(() => {\n if (!inputRef.current) return;\n inputRef.current.setSelectionRange(selection.start, selection.end);\n }, [inputRef, selection, invisible]);\n\n const score = useMemo(\n () => getPasswordScore(forwardedValue || ''),\n [forwardedValue]\n );\n\n const strength = useMemo(() => {\n if (score >= strengthThresholds[2]) {\n return {\n name: 'powerful',\n color: theme.inputPasswordColorPowerful,\n };\n }\n if (score >= strengthThresholds[1]) {\n return {\n name: 'strong',\n color: theme.inputPasswordColorStrong,\n };\n }\n if (score >= strengthThresholds[0]) {\n return {\n name: 'good',\n color: theme.inputPasswordColorGood,\n };\n }\n return {\n name: 'weak',\n color: theme.inputPasswordColorWeak,\n };\n }, [\n score,\n strengthThresholds,\n theme.inputPasswordColorPowerful,\n theme.inputPasswordColorStrong,\n theme.inputPasswordColorGood,\n theme.inputPasswordColorWeak,\n ]);\n\n return (\n <>\n <Input\n type={invisible ? 'password' : 'text'}\n right={\n <>\n <Button\n key='invisible-button'\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={() => {\n setInvisible(!invisible);\n if (!inputRef.current) return;\n inputRef.current.focus();\n }}\n aria-label={invisible ? locale.showLabel : locale.hideLabel}\n >\n {invisible ? <EyeInvisible /> : <Eye />}\n </Button>\n {right}\n </>\n }\n value={forwardedValue}\n onChange={setForwardedValue}\n onSelect={(e) => {\n // Update the selection state\n const { selectionStart, selectionEnd } = e.currentTarget;\n setSelection({\n start: selectionStart || 0,\n end: selectionEnd || 0,\n });\n onSelect(e);\n }}\n disabled={disabled}\n {...rest}\n ref={mergedInputRef}\n />\n {showStrengthMeter && (\n <ThemeOverrider\n overrides={{\n progressColorStroke: strength.color,\n get progressColorStrokeSuccess() {\n // eslint-disable-next-line react/no-this-in-sfc\n return this.progressColorStroke;\n },\n }}\n >\n <StrengthMeterProgress\n size='small'\n height='0.25em'\n percent={score}\n text={strengthNames ? strengthNames[strength.name] : undefined}\n />\n </ThemeOverrider>\n )}\n </>\n );\n }\n);\n\nInputPassword.displayName = 'InputPassword';\n\nexport default InputPassword;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","useEffect","useMemo","useState","Eye","EyeInvisible","ThemeOverrider","useTheme","useForwardedRef","useForwardedState","getPasswordScore","styled","Input","Button","Progress","defaultLocale","StrengthMeterProgress","InputPassword","showStrengthMeter","strengthNames","strengthThresholds","locale","value","defaultValue","onChange","onSelect","disabled","right","rest","ref","inputRef","mergedInputRef","forwardedValue","setForwardedValue","selection","setSelection","start","end","invisible","setInvisible","theme","current","setSelectionRange","score","strength","name","color","inputPasswordColorPowerful","inputPasswordColorStrong","inputPasswordColorGood","inputPasswordColorWeak","focus","showLabel","hideLabel","e","selectionStart","selectionEnd","currentTarget","progressColorStroke","progressColorStrokeSuccess","undefined","displayName"],"sources":["../../../src/InputPassword/index.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { Eye, EyeInvisible } from '@os-design/icons';\nimport { ThemeOverrider, useTheme } from '@os-design/theming';\nimport { useForwardedRef, useForwardedState } from '@os-design/utils';\nimport getPasswordScore from '@os-team/password-score';\nimport styled from '@emotion/styled';\nimport Input, { InputProps } from '../Input';\nimport Button from '../Button';\nimport Progress from '../Progress';\nimport defaultLocale, { InputPasswordLocale } from './utils/defaultLocale';\n\nexport interface InputPasswordProps extends Omit<InputProps, 'type'> {\n /**\n * Whether the password strength meter is visible.\n * @default false\n */\n showStrengthMeter?: boolean;\n /**\n * The name of a weak, good, strong, and powerful password.\n * Located to the right of the password strength meter.\n * @default undefined\n */\n strengthNames?: Record<'weak' | 'good' | 'strong' | 'powerful', string>;\n /**\n * From what number of score the password is considered\n * good, strong, and powerful.\n * @default [30, 60, 80]\n */\n strengthThresholds?: [number, number, number];\n /**\n * The locale.\n * @default undefined\n */\n locale?: InputPasswordLocale;\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string) => void;\n}\n\ninterface Selection {\n start: number;\n end: number;\n}\n\nconst StrengthMeterProgress = styled(Progress)`\n margin-top: 0.4em;\n`;\n\n/**\n * The input for entering a password.\n */\nconst InputPassword = forwardRef<HTMLInputElement, InputPasswordProps>(\n (\n {\n showStrengthMeter = false,\n strengthNames,\n strengthThresholds = [30, 60, 80],\n locale = defaultLocale,\n value,\n defaultValue,\n onChange = () => {},\n onSelect = () => {},\n disabled,\n right,\n ...rest\n },\n ref\n ) => {\n const [inputRef, mergedInputRef] = useForwardedRef(ref);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n const [selection, setSelection] = useState<Selection>({ start: 0, end: 0 });\n const [invisible, setInvisible] = useState(true);\n const { theme } = useTheme();\n\n // Update the selection of the input when changing the invisible flag\n useEffect(() => {\n if (!inputRef.current) return;\n inputRef.current.setSelectionRange(selection.start, selection.end);\n }, [inputRef, selection, invisible]);\n\n const score = useMemo(\n () => getPasswordScore(forwardedValue || ''),\n [forwardedValue]\n );\n\n const strength = useMemo(() => {\n if (score >= strengthThresholds[2]) {\n return {\n name: 'powerful',\n color: theme.inputPasswordColorPowerful,\n };\n }\n if (score >= strengthThresholds[1]) {\n return {\n name: 'strong',\n color: theme.inputPasswordColorStrong,\n };\n }\n if (score >= strengthThresholds[0]) {\n return {\n name: 'good',\n color: theme.inputPasswordColorGood,\n };\n }\n return {\n name: 'weak',\n color: theme.inputPasswordColorWeak,\n };\n }, [\n score,\n strengthThresholds,\n theme.inputPasswordColorPowerful,\n theme.inputPasswordColorStrong,\n theme.inputPasswordColorGood,\n theme.inputPasswordColorWeak,\n ]);\n\n return (\n <>\n <Input\n type={invisible ? 'password' : 'text'}\n right={\n <>\n <Button\n key='invisible-button'\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={() => {\n setInvisible(!invisible);\n if (!inputRef.current) return;\n inputRef.current.focus();\n }}\n aria-label={invisible ? locale.showLabel : locale.hideLabel}\n >\n {invisible ? <EyeInvisible /> : <Eye />}\n </Button>\n {right}\n </>\n }\n value={forwardedValue}\n onChange={setForwardedValue}\n onSelect={(e) => {\n // Update the selection state\n const { selectionStart, selectionEnd } = e.currentTarget;\n setSelection({\n start: selectionStart || 0,\n end: selectionEnd || 0,\n });\n onSelect(e);\n }}\n disabled={disabled}\n {...rest}\n ref={mergedInputRef}\n />\n {showStrengthMeter && (\n <ThemeOverrider\n overrides={{\n progressColorStroke: strength.color,\n get progressColorStrokeSuccess() {\n // eslint-disable-next-line react/no-this-in-sfc\n return this.progressColorStroke;\n },\n }}\n >\n <StrengthMeterProgress\n size='small'\n height='0.25em'\n percent={score}\n text={strengthNames ? strengthNames[strength.name] : undefined}\n />\n </ThemeOverrider>\n )}\n </>\n );\n }\n);\n\nInputPassword.displayName = 'InputPassword';\n\nexport default InputPassword;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/InputPassword/utils/defaultLocale.ts"],"names":["defaultLocale","showLabel","hideLabel"],"mappings":"AAKA,MAAMA,aAAkC,GAAG;AACzCC,EAAAA,SAAS,EAAE,eAD8B;AAEzCC,EAAAA,SAAS,EAAE;AAF8B,CAA3C;AAKA,eAAeF,aAAf","sourcesContent":["export interface InputPasswordLocale {\n showLabel: string;\n hideLabel: string;\n}\n\nconst defaultLocale: InputPasswordLocale = {\n showLabel: 'Show password',\n hideLabel: 'Hide password',\n};\n\nexport default defaultLocale;\n"],"file":"defaultLocale.js"}
1
+ {"version":3,"file":"defaultLocale.js","names":["defaultLocale","showLabel","hideLabel"],"sources":["../../../../src/InputPassword/utils/defaultLocale.ts"],"sourcesContent":["export interface InputPasswordLocale {\n showLabel: string;\n hideLabel: string;\n}\n\nconst defaultLocale: InputPasswordLocale = {\n showLabel: 'Show password',\n hideLabel: 'Hide password',\n};\n\nexport default defaultLocale;\n"],"mappings":"AAKA,MAAMA,aAAkC,GAAG;EACzCC,SAAS,EAAE,eAD8B;EAEzCC,SAAS,EAAE;AAF8B,CAA3C;AAKA,eAAeF,aAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/InputSearch/index.tsx"],"names":["React","forwardRef","Search","CloseCircle","styled","keyframes","useForwardedRef","useForwardedState","ThemeOverrider","Input","Button","defaultLocale","fadeIn","ClearButton","p","theme","transitionDelay","InputSearch","locale","value","defaultValue","onChange","disabled","left","leftHasPadding","right","rest","ref","inputRef","mergedInputRef","forwardedValue","setForwardedValue","buttonIconScaleFactor","current","focus","clearLabel","displayName"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,MAAT,EAAiBC,WAAjB,QAAoC,kBAApC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,SAAT,QAA0B,gBAA1B;AACA,SAASC,eAAT,EAA0BC,iBAA1B,QAAmD,kBAAnD;AACA,SAASC,cAAT,QAA+B,oBAA/B;AACA,OAAOC,KAAP,MAAkC,UAAlC;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,OAAOC,aAAP,MAAiD,uBAAjD;AA0BA,MAAMC,MAAM,GAAGP,SAAU;AACzB;AACA;AACA,CAHA;AAKA,MAAMQ,WAAW,GAAGT,MAAM,CAACM,MAAD,CAAS;AACnC,eAAeE,MAAO,IAAIE,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQC,eAAgB;AACxD,CAFA;AAIA;AACA;AACA;;AACA,MAAMC,WAAW,gBAAGhB,UAAU,CAC5B,CACE;AACEiB,EAAAA,MAAM,GAAGP,aADX;AAEEQ,EAAAA,KAFF;AAGEC,EAAAA,YAHF;AAIEC,EAAAA,QAAQ,GAAG,MAAM,CAAE,CAJrB;AAKEC,EAAAA,QALF;AAMEC,EAAAA,IANF;AAOEC,EAAAA,cAAc,GAAG,IAPnB;AAQEC,EAAAA,KARF;AASE,KAAGC;AATL,CADF,EAYEC,GAZF,KAaK;AACH,QAAM,CAACC,QAAD,EAAWC,cAAX,IAA6BvB,eAAe,CAACqB,GAAD,CAAlD;AACA,QAAM,CAACG,cAAD,EAAiBC,iBAAjB,IAAsCxB,iBAAiB,CAAC;AAC5DY,IAAAA,KAD4D;AAE5DC,IAAAA,YAF4D;AAG5DC,IAAAA;AAH4D,GAAD,CAA7D;AAMA,sBACE,oBAAC,KAAD;AACE,IAAA,IAAI,EAAC,MADP;AAEE,IAAA,IAAI,eACF,uDACE,oBAAC,MAAD;AAAQ,MAAA,GAAG,EAAC;AAAZ,MADF,EAEGE,IAFH,CAHJ;AAQE,IAAA,cAAc,EAAEC,cARlB;AASE,IAAA,KAAK,eACH,0CACG,CAAC,CAACM,cAAF,iBACC,oBAAC,cAAD;AAAgB,MAAA,SAAS,EAAE;AAAEE,QAAAA,qBAAqB,EAAE;AAAzB;AAA3B,oBACE,oBAAC,WAAD;AACE,MAAA,GAAG,EAAC,cADN;AAEE,MAAA,IAAI,EAAC,OAFP;AAGE,MAAA,IAAI,EAAC,OAHP;AAIE,MAAA,IAAI,EAAC,OAJP;AAKE,MAAA,QAAQ,EAAEV,QALZ;AAME,MAAA,OAAO,EAAE,MAAM;AACbS,QAAAA,iBAAiB,CAAC,EAAD,CAAjB;AACA,YAAI,CAACH,QAAQ,CAACK,OAAd,EAAuB;AACvBL,QAAAA,QAAQ,CAACK,OAAT,CAAiBC,KAAjB;AACD,OAVH;AAWE,oBAAYhB,MAAM,CAACiB;AAXrB,oBAaE,oBAAC,WAAD,OAbF,CADF,CAFJ,EAoBGV,KApBH,CAVJ;AAiCE,IAAA,KAAK,EAAEK,cAjCT;AAkCE,IAAA,QAAQ,EAAEC,iBAlCZ;AAmCE,IAAA,IAAI,EAAC,WAnCP;AAoCE,IAAA,QAAQ,EAAET;AApCZ,KAqCMI,IArCN;AAsCE,IAAA,GAAG,EAAEG;AAtCP,KADF;AA0CD,CAhE2B,CAA9B;AAmEAZ,WAAW,CAACmB,WAAZ,GAA0B,aAA1B;AAEA,eAAenB,WAAf","sourcesContent":["import React, { forwardRef } from 'react';\nimport { Search, CloseCircle } from '@os-design/icons';\nimport styled from '@emotion/styled';\nimport { keyframes } from '@emotion/react';\nimport { useForwardedRef, useForwardedState } from '@os-design/utils';\nimport { ThemeOverrider } from '@os-design/theming';\nimport Input, { InputProps } from '../Input';\nimport Button from '../Button';\nimport defaultLocale, { InputSearchLocale } from './utils/defaultLocale';\n\nexport interface InputSearchProps\n extends Omit<InputProps, 'type' | 'onChange'> {\n /**\n * The locale.\n * @default undefined\n */\n locale?: InputSearchLocale;\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string) => void;\n}\n\nconst fadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`;\n\nconst ClearButton = styled(Button)`\n animation: ${fadeIn} ${(p) => p.theme.transitionDelay}ms;\n`;\n\n/**\n * The search input.\n */\nconst InputSearch = forwardRef<HTMLInputElement, InputSearchProps>(\n (\n {\n locale = defaultLocale,\n value,\n defaultValue,\n onChange = () => {},\n disabled,\n left,\n leftHasPadding = true,\n right,\n ...rest\n },\n ref\n ) => {\n const [inputRef, mergedInputRef] = useForwardedRef(ref);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n return (\n <Input\n type='text'\n left={\n <>\n <Search key='search-icon' />\n {left}\n </>\n }\n leftHasPadding={leftHasPadding}\n right={\n <>\n {!!forwardedValue && (\n <ThemeOverrider overrides={{ buttonIconScaleFactor: 1.2 }}>\n <ClearButton\n key='clear-button'\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={() => {\n setForwardedValue('');\n if (!inputRef.current) return;\n inputRef.current.focus();\n }}\n aria-label={locale.clearLabel}\n >\n <CloseCircle />\n </ClearButton>\n </ThemeOverrider>\n )}\n {right}\n </>\n }\n value={forwardedValue}\n onChange={setForwardedValue}\n role='searchbox'\n disabled={disabled}\n {...rest}\n ref={mergedInputRef}\n />\n );\n }\n);\n\nInputSearch.displayName = 'InputSearch';\n\nexport default InputSearch;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","forwardRef","Search","CloseCircle","styled","keyframes","useForwardedRef","useForwardedState","ThemeOverrider","Input","Button","defaultLocale","fadeIn","ClearButton","p","theme","transitionDelay","InputSearch","locale","value","defaultValue","onChange","disabled","left","leftHasPadding","right","rest","ref","inputRef","mergedInputRef","forwardedValue","setForwardedValue","buttonIconScaleFactor","current","focus","clearLabel","displayName"],"sources":["../../../src/InputSearch/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { Search, CloseCircle } from '@os-design/icons';\nimport styled from '@emotion/styled';\nimport { keyframes } from '@emotion/react';\nimport { useForwardedRef, useForwardedState } from '@os-design/utils';\nimport { ThemeOverrider } from '@os-design/theming';\nimport Input, { InputProps } from '../Input';\nimport Button from '../Button';\nimport defaultLocale, { InputSearchLocale } from './utils/defaultLocale';\n\nexport interface InputSearchProps\n extends Omit<InputProps, 'type' | 'onChange'> {\n /**\n * The locale.\n * @default undefined\n */\n locale?: InputSearchLocale;\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string) => void;\n}\n\nconst fadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`;\n\nconst ClearButton = styled(Button)`\n animation: ${fadeIn} ${(p) => p.theme.transitionDelay}ms;\n`;\n\n/**\n * The search input.\n */\nconst InputSearch = forwardRef<HTMLInputElement, InputSearchProps>(\n (\n {\n locale = defaultLocale,\n value,\n defaultValue,\n onChange = () => {},\n disabled,\n left,\n leftHasPadding = true,\n right,\n ...rest\n },\n ref\n ) => {\n const [inputRef, mergedInputRef] = useForwardedRef(ref);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n return (\n <Input\n type='text'\n left={\n <>\n <Search key='search-icon' />\n {left}\n </>\n }\n leftHasPadding={leftHasPadding}\n right={\n <>\n {!!forwardedValue && (\n <ThemeOverrider overrides={{ buttonIconScaleFactor: 1.2 }}>\n <ClearButton\n key='clear-button'\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={() => {\n setForwardedValue('');\n if (!inputRef.current) return;\n inputRef.current.focus();\n }}\n aria-label={locale.clearLabel}\n >\n <CloseCircle />\n </ClearButton>\n </ThemeOverrider>\n )}\n {right}\n </>\n }\n value={forwardedValue}\n onChange={setForwardedValue}\n role='searchbox'\n disabled={disabled}\n {...rest}\n ref={mergedInputRef}\n />\n );\n }\n);\n\nInputSearch.displayName = 'InputSearch';\n\nexport default InputSearch;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,MAAT,EAAiBC,WAAjB,QAAoC,kBAApC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,SAAT,QAA0B,gBAA1B;AACA,SAASC,eAAT,EAA0BC,iBAA1B,QAAmD,kBAAnD;AACA,SAASC,cAAT,QAA+B,oBAA/B;AACA,OAAOC,KAAP,MAAkC,UAAlC;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,OAAOC,aAAP,MAAiD,uBAAjD;AA0BA,MAAMC,MAAM,GAAGP,SAAU;AACzB;AACA;AACA,CAHA;AAKA,MAAMQ,WAAW,GAAGT,MAAM,CAACM,MAAD,CAAS;AACnC,eAAeE,MAAO,IAAIE,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQC,eAAgB;AACxD,CAFA;AAIA;AACA;AACA;;AACA,MAAMC,WAAW,gBAAGhB,UAAU,CAC5B,CACE;EACEiB,MAAM,GAAGP,aADX;EAEEQ,KAFF;EAGEC,YAHF;EAIEC,QAAQ,GAAG,MAAM,CAAE,CAJrB;EAKEC,QALF;EAMEC,IANF;EAOEC,cAAc,GAAG,IAPnB;EAQEC,KARF;EASE,GAAGC;AATL,CADF,EAYEC,GAZF,KAaK;EACH,MAAM,CAACC,QAAD,EAAWC,cAAX,IAA6BvB,eAAe,CAACqB,GAAD,CAAlD;EACA,MAAM,CAACG,cAAD,EAAiBC,iBAAjB,IAAsCxB,iBAAiB,CAAC;IAC5DY,KAD4D;IAE5DC,YAF4D;IAG5DC;EAH4D,CAAD,CAA7D;EAMA,oBACE,oBAAC,KAAD;IACE,IAAI,EAAC,MADP;IAEE,IAAI,eACF,uDACE,oBAAC,MAAD;MAAQ,GAAG,EAAC;IAAZ,EADF,EAEGE,IAFH,CAHJ;IAQE,cAAc,EAAEC,cARlB;IASE,KAAK,eACH,0CACG,CAAC,CAACM,cAAF,iBACC,oBAAC,cAAD;MAAgB,SAAS,EAAE;QAAEE,qBAAqB,EAAE;MAAzB;IAA3B,gBACE,oBAAC,WAAD;MACE,GAAG,EAAC,cADN;MAEE,IAAI,EAAC,OAFP;MAGE,IAAI,EAAC,OAHP;MAIE,IAAI,EAAC,OAJP;MAKE,QAAQ,EAAEV,QALZ;MAME,OAAO,EAAE,MAAM;QACbS,iBAAiB,CAAC,EAAD,CAAjB;QACA,IAAI,CAACH,QAAQ,CAACK,OAAd,EAAuB;QACvBL,QAAQ,CAACK,OAAT,CAAiBC,KAAjB;MACD,CAVH;MAWE,cAAYhB,MAAM,CAACiB;IAXrB,gBAaE,oBAAC,WAAD,OAbF,CADF,CAFJ,EAoBGV,KApBH,CAVJ;IAiCE,KAAK,EAAEK,cAjCT;IAkCE,QAAQ,EAAEC,iBAlCZ;IAmCE,IAAI,EAAC,WAnCP;IAoCE,QAAQ,EAAET;EApCZ,GAqCMI,IArCN;IAsCE,GAAG,EAAEG;EAtCP,GADF;AA0CD,CAhE2B,CAA9B;AAmEAZ,WAAW,CAACmB,WAAZ,GAA0B,aAA1B;AAEA,eAAenB,WAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/InputSearch/utils/defaultLocale.ts"],"names":["defaultLocale","clearLabel"],"mappings":"AAIA,MAAMA,aAAgC,GAAG;AACvCC,EAAAA,UAAU,EAAE;AAD2B,CAAzC;AAIA,eAAeD,aAAf","sourcesContent":["export interface InputSearchLocale {\n clearLabel: string;\n}\n\nconst defaultLocale: InputSearchLocale = {\n clearLabel: 'Clear',\n};\n\nexport default defaultLocale;\n"],"file":"defaultLocale.js"}
1
+ {"version":3,"file":"defaultLocale.js","names":["defaultLocale","clearLabel"],"sources":["../../../../src/InputSearch/utils/defaultLocale.ts"],"sourcesContent":["export interface InputSearchLocale {\n clearLabel: string;\n}\n\nconst defaultLocale: InputSearchLocale = {\n clearLabel: 'Clear',\n};\n\nexport default defaultLocale;\n"],"mappings":"AAIA,MAAMA,aAAgC,GAAG;EACvCC,UAAU,EAAE;AAD2B,CAAzC;AAIA,eAAeD,aAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/InputSkeleton/index.tsx"],"names":["styled","React","forwardRef","sizeStyles","omitEmotionProps","Skeleton","StyledInputSkeleton","p","theme","baseHeight","InputSkeleton","props","ref","displayName"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,UAAT,QAAqC,mBAArC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,OAAOC,QAAP,MAAwC,aAAxC;AAIA,MAAMC,mBAAmB,GAAGN,MAAM,CAChCK,QADgC,EAEhCD,gBAAgB,CAAC,MAAD,CAFgB,CAGtB;AACZ,YAAaG,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQC,UAAW;AACtC,IAAIN,UAAW;AACf,CANA;AAQA;AACA;AACA;;AACA,MAAMO,aAAa,gBAAGR,UAAU,CAC9B,CAACS,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,mBAAD;AAAqB,EAAA,KAAK,EAAC;AAA3B,GAAsCD,KAAtC;AAA6C,EAAA,GAAG,EAAEC;AAAlD,GADc,CAAhC;AAIAF,aAAa,CAACG,WAAd,GAA4B,eAA5B;AAEA,eAAeH,aAAf","sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type InputSkeletonProps = Omit<SkeletonProps, 'width'> & WithSize;\n\nconst StyledInputSkeleton = styled(\n Skeleton,\n omitEmotionProps('size')\n)<WithSize>`\n height: ${(p) => p.theme.baseHeight}em;\n ${sizeStyles};\n`;\n\n/**\n * Provides an input placeholder while a user waits for the content to load.\n */\nconst InputSkeleton = forwardRef<HTMLDivElement, InputSkeletonProps>(\n (props, ref) => <StyledInputSkeleton width='100%' {...props} ref={ref} />\n);\n\nInputSkeleton.displayName = 'InputSkeleton';\n\nexport default InputSkeleton;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["styled","React","forwardRef","sizeStyles","omitEmotionProps","Skeleton","StyledInputSkeleton","p","theme","baseHeight","InputSkeleton","props","ref","displayName"],"sources":["../../../src/InputSkeleton/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type InputSkeletonProps = Omit<SkeletonProps, 'width'> & WithSize;\n\nconst StyledInputSkeleton = styled(\n Skeleton,\n omitEmotionProps('size')\n)<WithSize>`\n height: ${(p) => p.theme.baseHeight}em;\n ${sizeStyles};\n`;\n\n/**\n * Provides an input placeholder while a user waits for the content to load.\n */\nconst InputSkeleton = forwardRef<HTMLDivElement, InputSkeletonProps>(\n (props, ref) => <StyledInputSkeleton width='100%' {...props} ref={ref} />\n);\n\nInputSkeleton.displayName = 'InputSkeleton';\n\nexport default InputSkeleton;\n"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,UAAT,QAAqC,mBAArC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,OAAOC,QAAP,MAAwC,aAAxC;AAIA,MAAMC,mBAAmB,GAAGN,MAAM,CAChCK,QADgC,EAEhCD,gBAAgB,CAAC,MAAD,CAFgB,CAGtB;AACZ,YAAaG,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQC,UAAW;AACtC,IAAIN,UAAW;AACf,CANA;AAQA;AACA;AACA;;AACA,MAAMO,aAAa,gBAAGR,UAAU,CAC9B,CAACS,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,mBAAD;EAAqB,KAAK,EAAC;AAA3B,GAAsCD,KAAtC;EAA6C,GAAG,EAAEC;AAAlD,GADc,CAAhC;AAIAF,aAAa,CAACG,WAAd,GAA4B,eAA5B;AAEA,eAAeH,aAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Layout/LayoutContext.ts"],"names":["React","LayoutContext","createContext","hasNavigation","hasPageHeader","displayName"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAaA,MAAMC,aAAa,gBAAGD,KAAK,CAACE,aAAN,CAAwC;AAC5DC,EAAAA,aAAa,EAAE,KAD6C;AAE5DC,EAAAA,aAAa,EAAE;AAF6C,CAAxC,CAAtB;AAKAH,aAAa,CAACI,WAAd,GAA4B,eAA5B;AAEA,eAAeJ,aAAf","sourcesContent":["import React from 'react';\n\nexport interface LayoutContextProps {\n /**\n * Whether there is the navigation in the layout.\n */\n hasNavigation: boolean;\n /**\n * Whether there is the page header in the layout.\n */\n hasPageHeader: boolean;\n}\n\nconst LayoutContext = React.createContext<LayoutContextProps>({\n hasNavigation: false,\n hasPageHeader: false,\n});\n\nLayoutContext.displayName = 'LayoutContext';\n\nexport default LayoutContext;\n"],"file":"LayoutContext.js"}
1
+ {"version":3,"file":"LayoutContext.js","names":["React","LayoutContext","createContext","hasNavigation","hasPageHeader","displayName"],"sources":["../../../src/Layout/LayoutContext.ts"],"sourcesContent":["import React from 'react';\n\nexport interface LayoutContextProps {\n /**\n * Whether there is the navigation in the layout.\n */\n hasNavigation: boolean;\n /**\n * Whether there is the page header in the layout.\n */\n hasPageHeader: boolean;\n}\n\nconst LayoutContext = React.createContext<LayoutContextProps>({\n hasNavigation: false,\n hasPageHeader: false,\n});\n\nLayoutContext.displayName = 'LayoutContext';\n\nexport default LayoutContext;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAaA,MAAMC,aAAa,gBAAGD,KAAK,CAACE,aAAN,CAAwC;EAC5DC,aAAa,EAAE,KAD6C;EAE5DC,aAAa,EAAE;AAF6C,CAAxC,CAAtB;AAKAH,aAAa,CAACI,WAAd,GAA4B,eAA5B;AAEA,eAAeJ,aAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Layout/index.tsx"],"names":["React","useMemo","LayoutContext","Layout","hasNavigation","hasPageHeader","children","contextValue","displayName"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AACA,OAAOC,aAAP,MAA0B,iBAA1B;;AAoBA;AACA;AACA;AACA,MAAMC,MAA6B,GAAG,CAAC;AACrCC,EAAAA,aAAa,GAAG,KADqB;AAErCC,EAAAA,aAAa,GAAG,KAFqB;AAGrCC,EAAAA;AAHqC,CAAD,KAIhC;AACJ,QAAMC,YAAY,GAAGN,OAAO,CAC1B,OAAO;AAAEG,IAAAA,aAAF;AAAiBC,IAAAA;AAAjB,GAAP,CAD0B,EAE1B,CAACD,aAAD,EAAgBC,aAAhB,CAF0B,CAA5B;AAKA,sBACE,oBAAC,aAAD,CAAe,QAAf;AAAwB,IAAA,KAAK,EAAEE;AAA/B,KACGD,QADH,CADF;AAKD,CAfD;;AAiBAH,MAAM,CAACK,WAAP,GAAqB,QAArB;AAEA,eAAeL,MAAf","sourcesContent":["import React, { useMemo } from 'react';\nimport LayoutContext from './LayoutContext';\n\nexport interface LayoutProps {\n /**\n * Whether there is the navigation in the layout.\n * @default false\n */\n hasNavigation?: boolean;\n /**\n * Whether there is the page header in the layout.\n * @default false\n */\n hasPageHeader?: boolean;\n /**\n * The children.\n * @default undefined\n */\n children?: React.ReactNode;\n}\n\n/**\n * The layout of the page.\n */\nconst Layout: React.FC<LayoutProps> = ({\n hasNavigation = false,\n hasPageHeader = false,\n children,\n}) => {\n const contextValue = useMemo(\n () => ({ hasNavigation, hasPageHeader }),\n [hasNavigation, hasPageHeader]\n );\n\n return (\n <LayoutContext.Provider value={contextValue}>\n {children}\n </LayoutContext.Provider>\n );\n};\n\nLayout.displayName = 'Layout';\n\nexport default Layout;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["React","useMemo","LayoutContext","Layout","hasNavigation","hasPageHeader","children","contextValue","displayName"],"sources":["../../../src/Layout/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport LayoutContext from './LayoutContext';\n\nexport interface LayoutProps {\n /**\n * Whether there is the navigation in the layout.\n * @default false\n */\n hasNavigation?: boolean;\n /**\n * Whether there is the page header in the layout.\n * @default false\n */\n hasPageHeader?: boolean;\n /**\n * The children.\n * @default undefined\n */\n children?: React.ReactNode;\n}\n\n/**\n * The layout of the page.\n */\nconst Layout: React.FC<LayoutProps> = ({\n hasNavigation = false,\n hasPageHeader = false,\n children,\n}) => {\n const contextValue = useMemo(\n () => ({ hasNavigation, hasPageHeader }),\n [hasNavigation, hasPageHeader]\n );\n\n return (\n <LayoutContext.Provider value={contextValue}>\n {children}\n </LayoutContext.Provider>\n );\n};\n\nLayout.displayName = 'Layout';\n\nexport default Layout;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AACA,OAAOC,aAAP,MAA0B,iBAA1B;;AAoBA;AACA;AACA;AACA,MAAMC,MAA6B,GAAG,CAAC;EACrCC,aAAa,GAAG,KADqB;EAErCC,aAAa,GAAG,KAFqB;EAGrCC;AAHqC,CAAD,KAIhC;EACJ,MAAMC,YAAY,GAAGN,OAAO,CAC1B,OAAO;IAAEG,aAAF;IAAiBC;EAAjB,CAAP,CAD0B,EAE1B,CAACD,aAAD,EAAgBC,aAAhB,CAF0B,CAA5B;EAKA,oBACE,oBAAC,aAAD,CAAe,QAAf;IAAwB,KAAK,EAAEE;EAA/B,GACGD,QADH,CADF;AAKD,CAfD;;AAiBAH,MAAM,CAACK,WAAP,GAAqB,QAArB;AAEA,eAAeL,MAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Link/index.tsx"],"names":["styled","React","forwardRef","css","resetFocusStyles","sizeStyles","transitionStyles","omitEmotionProps","clr","underlineBaseStyles","p","theme","linkColor","underlineHoverStyles","underline","underlineAlwaysStyles","StyledLink","Link","as","onMouseDown","rest","ref","e","preventDefault","displayName"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,SACEC,gBADF,EAEEC,UAFF,EAGEC,gBAHF,QAKO,mBALP;AAMA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,oBAApB;;AAsBA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAIC,CAAD,IAAOP,GAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwBK,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQC,SAAT,CAAoB;AAC/C;AACA,CAbA;AAeA;AACA;AACA;;;AACA,MAAMC,oBAAoB,GAAIH,CAAD,IAC3BA,CAAC,CAACI,SAAF,KAAgB,OAAhB,IACAX,GAAI;AACN;AACA,QAAQM,mBAAmB,CAACC,CAAD,CAAI;AAC/B;AACA;AACA;AACA;AACA,UAAUJ,gBAAgB,CAAC,OAAD,EAAU,SAAV,CAAhB,CAAqCI,CAArC,CAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAlBA;AAoBA;AACA;AACA;;;AACA,MAAMK,qBAAqB,GAAIL,CAAD,IAC5BA,CAAC,CAACI,SAAF,KAAgB,QAAhB,IACAX,GAAI;AACN,MAAMM,mBAAmB,CAACC,CAAD,CAAI;AAC7B;AACA;AACA;AACA;AACA;AACA,GATA;;AAWA,MAAMM,UAAU,GAAGhB,MAAM,CACvB,GADuB,EAEvBO,gBAAgB,CAAC,MAAD,EAAS,WAAT,EAAsB,IAAtB,CAFO,CAGZ;AACb,IAAIH,gBAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAcM,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQC,SAAT,CAAoB;AAC3C;AACA;AACA,IAAIC,oBAAqB;AACzB,IAAIE,qBAAsB;AAC1B,IAAIV,UAAW;AACf,CAnBA;AAqBA;AACA;AACA;;AACA,MAAMY,IAAI,gBAAGf,UAAU,CACrB,CAAC;AAAEY,EAAAA,SAAS,GAAG,OAAd;AAAuBI,EAAAA,EAAvB;AAA2BC,EAAAA,WAAW,GAAG,MAAM,CAAE,CAAjD;AAAmD,KAAGC;AAAtD,CAAD,EAA+DC,GAA/D,kBACE,oBAAC,UAAD;AACE,EAAA,SAAS,EAAEP,SADb;AAEE,EAAA,EAAE,EAAEI,EAFN;AAGE,EAAA,WAAW,EAAGI,CAAD,IAAO;AAClBH,IAAAA,WAAW,CAACG,CAAD,CAAX;AACAA,IAAAA,CAAC,CAACC,cAAF;AACD;AANH,GAOMH,IAPN;AAQE,EAAA,GAAG,EAAEC;AARP,GAFmB,CAAvB;AAeAJ,IAAI,CAACO,WAAL,GAAmB,MAAnB;AAEA,eAAeP,IAAf","sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { css } from '@emotion/react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\n\nexport interface ReactRouterLinkProps {\n to?: string;\n replace?: boolean;\n}\n\ntype JsxAProps = Omit<JSX.IntrinsicElements['a'], 'ref'>;\nexport interface LinkProps extends JsxAProps, ReactRouterLinkProps, WithSize {\n /**\n * Type of the underline styles.\n * @default hover\n */\n underline?: 'hover' | 'always' | 'never';\n /**\n * The custom link component.\n * For example, the Link from react-router-dom.\n * @default undefined\n */\n as?: React.ElementType;\n}\n\n/**\n * Sets base underline styles.\n */\nconst underlineBaseStyles = (p) => css`\n position: relative;\n display: inline-block;\n padding-bottom: 0.1em;\n\n &::after {\n position: absolute;\n bottom: 0;\n left: 0;\n content: '';\n height: 0.125em;\n background-color: ${clr(p.theme.linkColor)};\n }\n`;\n\n/**\n * Sets underline styles on hover.\n */\nconst underlineHoverStyles = (p) =>\n p.underline === 'hover' &&\n css`\n @media (hover: hover) {\n ${underlineBaseStyles(p)};\n\n &::after {\n width: 0;\n opacity: 0;\n ${transitionStyles('width', 'opacity')(p)};\n }\n\n &:hover::after,\n &:focus::after {\n width: 100%;\n opacity: 1;\n }\n }\n `;\n\n/**\n * Sets underline styles always.\n */\nconst underlineAlwaysStyles = (p) =>\n p.underline === 'always' &&\n css`\n ${underlineBaseStyles(p)};\n\n &::after {\n width: 100%;\n opacity: 1;\n }\n `;\n\nconst StyledLink = styled(\n 'a',\n omitEmotionProps('size', 'underline', 'as')\n)<LinkProps>`\n ${resetFocusStyles};\n\n cursor: pointer;\n text-decoration: none;\n line-height: 1.2;\n\n &,\n &:active,\n &:focus {\n color: ${(p) => clr(p.theme.linkColor)};\n }\n\n ${underlineHoverStyles};\n ${underlineAlwaysStyles};\n ${sizeStyles};\n`;\n\n/**\n * The link component to navigate between pages.\n */\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ underline = 'hover', as, onMouseDown = () => {}, ...rest }, ref) => (\n <StyledLink\n underline={underline}\n as={as}\n onMouseDown={(e) => {\n onMouseDown(e);\n e.preventDefault();\n }}\n {...rest}\n ref={ref}\n />\n )\n);\n\nLink.displayName = 'Link';\n\nexport default Link;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["styled","React","forwardRef","css","resetFocusStyles","sizeStyles","transitionStyles","omitEmotionProps","clr","underlineBaseStyles","p","theme","linkColor","underlineHoverStyles","underline","underlineAlwaysStyles","StyledLink","Link","as","onMouseDown","rest","ref","e","preventDefault","displayName"],"sources":["../../../src/Link/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { css } from '@emotion/react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\n\nexport interface ReactRouterLinkProps {\n to?: string;\n replace?: boolean;\n}\n\ntype JsxAProps = Omit<JSX.IntrinsicElements['a'], 'ref'>;\nexport interface LinkProps extends JsxAProps, ReactRouterLinkProps, WithSize {\n /**\n * Type of the underline styles.\n * @default hover\n */\n underline?: 'hover' | 'always' | 'never';\n /**\n * The custom link component.\n * For example, the Link from react-router-dom.\n * @default undefined\n */\n as?: React.ElementType;\n}\n\n/**\n * Sets base underline styles.\n */\nconst underlineBaseStyles = (p) => css`\n position: relative;\n display: inline-block;\n padding-bottom: 0.1em;\n\n &::after {\n position: absolute;\n bottom: 0;\n left: 0;\n content: '';\n height: 0.125em;\n background-color: ${clr(p.theme.linkColor)};\n }\n`;\n\n/**\n * Sets underline styles on hover.\n */\nconst underlineHoverStyles = (p) =>\n p.underline === 'hover' &&\n css`\n @media (hover: hover) {\n ${underlineBaseStyles(p)};\n\n &::after {\n width: 0;\n opacity: 0;\n ${transitionStyles('width', 'opacity')(p)};\n }\n\n &:hover::after,\n &:focus::after {\n width: 100%;\n opacity: 1;\n }\n }\n `;\n\n/**\n * Sets underline styles always.\n */\nconst underlineAlwaysStyles = (p) =>\n p.underline === 'always' &&\n css`\n ${underlineBaseStyles(p)};\n\n &::after {\n width: 100%;\n opacity: 1;\n }\n `;\n\nconst StyledLink = styled(\n 'a',\n omitEmotionProps('size', 'underline', 'as')\n)<LinkProps>`\n ${resetFocusStyles};\n\n cursor: pointer;\n text-decoration: none;\n line-height: 1.2;\n\n &,\n &:active,\n &:focus {\n color: ${(p) => clr(p.theme.linkColor)};\n }\n\n ${underlineHoverStyles};\n ${underlineAlwaysStyles};\n ${sizeStyles};\n`;\n\n/**\n * The link component to navigate between pages.\n */\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ underline = 'hover', as, onMouseDown = () => {}, ...rest }, ref) => (\n <StyledLink\n underline={underline}\n as={as}\n onMouseDown={(e) => {\n onMouseDown(e);\n e.preventDefault();\n }}\n {...rest}\n ref={ref}\n />\n )\n);\n\nLink.displayName = 'Link';\n\nexport default Link;\n"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,SACEC,gBADF,EAEEC,UAFF,EAGEC,gBAHF,QAKO,mBALP;AAMA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,oBAApB;;AAsBA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAIC,CAAD,IAAOP,GAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwBK,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQC,SAAT,CAAoB;AAC/C;AACA,CAbA;AAeA;AACA;AACA;;;AACA,MAAMC,oBAAoB,GAAIH,CAAD,IAC3BA,CAAC,CAACI,SAAF,KAAgB,OAAhB,IACAX,GAAI;AACN;AACA,QAAQM,mBAAmB,CAACC,CAAD,CAAI;AAC/B;AACA;AACA;AACA;AACA,UAAUJ,gBAAgB,CAAC,OAAD,EAAU,SAAV,CAAhB,CAAqCI,CAArC,CAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAlBA;AAoBA;AACA;AACA;;;AACA,MAAMK,qBAAqB,GAAIL,CAAD,IAC5BA,CAAC,CAACI,SAAF,KAAgB,QAAhB,IACAX,GAAI;AACN,MAAMM,mBAAmB,CAACC,CAAD,CAAI;AAC7B;AACA;AACA;AACA;AACA;AACA,GATA;;AAWA,MAAMM,UAAU,GAAGhB,MAAM,CACvB,GADuB,EAEvBO,gBAAgB,CAAC,MAAD,EAAS,WAAT,EAAsB,IAAtB,CAFO,CAGZ;AACb,IAAIH,gBAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAcM,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQC,SAAT,CAAoB;AAC3C;AACA;AACA,IAAIC,oBAAqB;AACzB,IAAIE,qBAAsB;AAC1B,IAAIV,UAAW;AACf,CAnBA;AAqBA;AACA;AACA;;AACA,MAAMY,IAAI,gBAAGf,UAAU,CACrB,CAAC;EAAEY,SAAS,GAAG,OAAd;EAAuBI,EAAvB;EAA2BC,WAAW,GAAG,MAAM,CAAE,CAAjD;EAAmD,GAAGC;AAAtD,CAAD,EAA+DC,GAA/D,kBACE,oBAAC,UAAD;EACE,SAAS,EAAEP,SADb;EAEE,EAAE,EAAEI,EAFN;EAGE,WAAW,EAAGI,CAAD,IAAO;IAClBH,WAAW,CAACG,CAAD,CAAX;IACAA,CAAC,CAACC,cAAF;EACD;AANH,GAOMH,IAPN;EAQE,GAAG,EAAEC;AARP,GAFmB,CAAvB;AAeAJ,IAAI,CAACO,WAAL,GAAmB,MAAnB;AAEA,eAAeP,IAAf"}