smarthr-ui 96.1.0 → 96.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/AppHeader/components/common/CommonButton.cjs +3 -2
- package/lib/components/AppHeader/components/common/CommonButton.cjs.map +1 -1
- package/lib/components/AppHeader/components/common/CommonButton.js +3 -2
- package/lib/components/AppHeader/components/common/CommonButton.js.map +1 -1
- package/lib/components/Base/Base.cjs +7 -1
- package/lib/components/Base/Base.cjs.map +1 -1
- package/lib/components/Base/Base.js +7 -1
- package/lib/components/Base/Base.js.map +1 -1
- package/lib/components/Base/BaseColumn/BaseColumn.cjs +7 -1
- package/lib/components/Base/BaseColumn/BaseColumn.cjs.map +1 -1
- package/lib/components/Base/BaseColumn/BaseColumn.js +7 -1
- package/lib/components/Base/BaseColumn/BaseColumn.js.map +1 -1
- package/lib/components/BottomFixedArea/BottomFixedArea.cjs +1 -3
- package/lib/components/BottomFixedArea/BottomFixedArea.cjs.map +1 -1
- package/lib/components/BottomFixedArea/BottomFixedArea.js +2 -4
- package/lib/components/BottomFixedArea/BottomFixedArea.js.map +1 -1
- package/lib/components/Button/AnchorButton.cjs +2 -7
- package/lib/components/Button/AnchorButton.cjs.map +1 -1
- package/lib/components/Button/AnchorButton.js +2 -7
- package/lib/components/Button/AnchorButton.js.map +1 -1
- package/lib/components/Button/useButtonWrapper.cjs +24 -6
- package/lib/components/Button/useButtonWrapper.cjs.map +1 -1
- package/lib/components/Button/useButtonWrapper.js +24 -6
- package/lib/components/Button/useButtonWrapper.js.map +1 -1
- package/lib/components/Combobox/MultiCombobox/MultiSelectedItem.cjs +8 -4
- package/lib/components/Combobox/MultiCombobox/MultiSelectedItem.cjs.map +1 -1
- package/lib/components/Combobox/MultiCombobox/MultiSelectedItem.js +8 -4
- package/lib/components/Combobox/MultiCombobox/MultiSelectedItem.js.map +1 -1
- package/lib/components/Dialog/DialogBody.cjs +7 -1
- package/lib/components/Dialog/DialogBody.cjs.map +1 -1
- package/lib/components/Dialog/DialogBody.js +7 -1
- package/lib/components/Dialog/DialogBody.js.map +1 -1
- package/lib/components/Dialog/DialogContentInner.cjs +7 -1
- package/lib/components/Dialog/DialogContentInner.cjs.map +1 -1
- package/lib/components/Dialog/DialogContentInner.js +7 -1
- package/lib/components/Dialog/DialogContentInner.js.map +1 -1
- package/lib/components/Dialog/DialogOverlap.cjs +22 -5
- package/lib/components/Dialog/DialogOverlap.cjs.map +1 -1
- package/lib/components/Dialog/DialogOverlap.js +23 -6
- package/lib/components/Dialog/DialogOverlap.js.map +1 -1
- package/lib/components/Dialog/ModelessDialog/ModelessDialog.cjs +7 -1
- package/lib/components/Dialog/ModelessDialog/ModelessDialog.cjs.map +1 -1
- package/lib/components/Dialog/ModelessDialog/ModelessDialog.js +7 -1
- package/lib/components/Dialog/ModelessDialog/ModelessDialog.js.map +1 -1
- package/lib/components/Dialog/RemoteDialogTrigger/RemoteDialogTrigger.cjs +51 -11
- package/lib/components/Dialog/RemoteDialogTrigger/RemoteDialogTrigger.cjs.map +1 -1
- package/lib/components/Dialog/RemoteDialogTrigger/RemoteDialogTrigger.d.ts +3 -4
- package/lib/components/Dialog/RemoteDialogTrigger/RemoteDialogTrigger.js +52 -12
- package/lib/components/Dialog/RemoteDialogTrigger/RemoteDialogTrigger.js.map +1 -1
- package/lib/components/Dropdown/Dropdown.cjs +3 -3
- package/lib/components/Dropdown/Dropdown.cjs.map +1 -1
- package/lib/components/Dropdown/Dropdown.d.ts +1 -1
- package/lib/components/Dropdown/Dropdown.js +3 -3
- package/lib/components/Dropdown/Dropdown.js.map +1 -1
- package/lib/components/Dropdown/DropdownMenuButton/DropdownMenuButton.cjs +20 -10
- package/lib/components/Dropdown/DropdownMenuButton/DropdownMenuButton.cjs.map +1 -1
- package/lib/components/Dropdown/DropdownMenuButton/DropdownMenuButton.js +21 -11
- package/lib/components/Dropdown/DropdownMenuButton/DropdownMenuButton.js.map +1 -1
- package/lib/components/Dropdown/DropdownTrigger.cjs +33 -16
- package/lib/components/Dropdown/DropdownTrigger.cjs.map +1 -1
- package/lib/components/Dropdown/DropdownTrigger.js +33 -16
- package/lib/components/Dropdown/DropdownTrigger.js.map +1 -1
- package/lib/components/Header/Header.cjs +3 -3
- package/lib/components/Header/Header.cjs.map +1 -1
- package/lib/components/Header/Header.js +3 -3
- package/lib/components/Header/Header.js.map +1 -1
- package/lib/components/Icon/generateIcon.cjs +9 -1
- package/lib/components/Icon/generateIcon.cjs.map +1 -1
- package/lib/components/Icon/generateIcon.js +9 -1
- package/lib/components/Icon/generateIcon.js.map +1 -1
- package/lib/components/Layout/Cluster/Cluster.cjs +4 -0
- package/lib/components/Layout/Cluster/Cluster.cjs.map +1 -1
- package/lib/components/Layout/Cluster/Cluster.d.ts +1 -1
- package/lib/components/Layout/Cluster/Cluster.js +4 -0
- package/lib/components/Layout/Cluster/Cluster.js.map +1 -1
- package/lib/components/Layout/Container/Container.cjs +2 -2
- package/lib/components/Layout/Container/Container.js +2 -2
- package/lib/components/Scroller/Scroller.cjs +12 -19
- package/lib/components/Scroller/Scroller.cjs.map +1 -1
- package/lib/components/Scroller/Scroller.js +13 -20
- package/lib/components/Scroller/Scroller.js.map +1 -1
- package/lib/components/Table/TableReel.cjs +1 -1
- package/lib/components/Table/TableReel.cjs.map +1 -1
- package/lib/components/Table/TableReel.js +1 -1
- package/lib/components/Table/TableReel.js.map +1 -1
- package/lib/components/Table/TableScrollContext.cjs +4 -4
- package/lib/components/Table/TableScrollContext.js +4 -4
- package/lib/components/Table/useReelCells.cjs +13 -7
- package/lib/components/Table/useReelCells.cjs.map +1 -1
- package/lib/components/Table/useReelCells.d.ts +1 -3
- package/lib/components/Table/useReelCells.js +13 -7
- package/lib/components/Table/useReelCells.js.map +1 -1
- package/lib/components/Text/Text.cjs +3 -1
- package/lib/components/Text/Text.cjs.map +1 -1
- package/lib/components/Text/Text.js +3 -1
- package/lib/components/Text/Text.js.map +1 -1
- package/lib/components/TextLink/TextLink.cjs +14 -28
- package/lib/components/TextLink/TextLink.cjs.map +1 -1
- package/lib/components/TextLink/TextLink.js +15 -29
- package/lib/components/TextLink/TextLink.js.map +1 -1
- package/lib/components/TextLink/UpwardLink/UpwardLink.cjs +2 -2
- package/lib/components/TextLink/UpwardLink/UpwardLink.js +2 -2
- package/lib/components/Textarea/Textarea.cjs +7 -6
- package/lib/components/Textarea/Textarea.cjs.map +1 -1
- package/lib/components/Textarea/Textarea.js +7 -6
- package/lib/components/Textarea/Textarea.js.map +1 -1
- package/lib/components/Tooltip/Tooltip.cjs +12 -21
- package/lib/components/Tooltip/Tooltip.cjs.map +1 -1
- package/lib/components/Tooltip/Tooltip.js +14 -23
- package/lib/components/Tooltip/Tooltip.js.map +1 -1
- package/lib/components/Tooltip/TooltipPortal.cjs +2 -2
- package/lib/components/Tooltip/TooltipPortal.cjs.map +1 -1
- package/lib/components/Tooltip/TooltipPortal.d.ts +1 -0
- package/lib/components/Tooltip/TooltipPortal.js +2 -2
- package/lib/components/Tooltip/TooltipPortal.js.map +1 -1
- package/lib/components/Tooltip/tooltipHelper.cjs +2 -2
- package/lib/components/Tooltip/tooltipHelper.cjs.map +1 -1
- package/lib/components/Tooltip/tooltipHelper.js +2 -2
- package/lib/components/Tooltip/tooltipHelper.js.map +1 -1
- package/lib/components/WarekiPicker/WarekiPicker.cjs +2 -3
- package/lib/components/WarekiPicker/WarekiPicker.cjs.map +1 -1
- package/lib/components/WarekiPicker/WarekiPicker.js +2 -3
- package/lib/components/WarekiPicker/WarekiPicker.js.map +1 -1
- package/lib/configureTwMerge.cjs +2 -2
- package/lib/configureTwMerge.js +2 -2
- package/lib/hooks/useDevice/DeviceProvider.cjs +2 -2
- package/lib/hooks/useDevice/DeviceProvider.js +2 -2
- package/lib/hooks/useEnvironment/EnvironmentProvider.cjs +2 -2
- package/lib/hooks/useEnvironment/EnvironmentProvider.js +2 -2
- package/lib/hooks/useOuterClick.cjs +5 -2
- package/lib/hooks/useOuterClick.cjs.map +1 -1
- package/lib/hooks/useOuterClick.js +6 -3
- package/lib/hooks/useOuterClick.js.map +1 -1
- package/lib/hooks/usePortal.cjs +1 -1
- package/lib/hooks/usePortal.cjs.map +1 -1
- package/lib/hooks/usePortal.js +1 -1
- package/lib/hooks/usePortal.js.map +1 -1
- package/lib/hooks/useSV/useSV.cjs +2 -2
- package/lib/hooks/useSV/useSV.js +2 -2
- package/lib/hooks/useTheme.cjs +3 -0
- package/lib/hooks/useTheme.cjs.map +1 -1
- package/lib/hooks/useTheme.js +3 -0
- package/lib/hooks/useTheme.js.map +1 -1
- package/lib/index.cjs +14 -8
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +1 -10
- package/lib/index.js +10 -4
- package/lib/index.js.map +1 -1
- package/lib/intl/locales/index.cjs +1 -0
- package/lib/intl/locales/index.cjs.map +1 -1
- package/lib/intl/locales/index.js +1 -0
- package/lib/intl/locales/index.js.map +1 -1
- package/lib/libs/ua.cjs +1 -2
- package/lib/libs/ua.cjs.map +1 -1
- package/lib/libs/ua.js +1 -2
- package/lib/libs/ua.js.map +1 -1
- package/lib/smarthr-ui-preset.cjs +4 -4
- package/lib/smarthr-ui-preset.js +4 -4
- package/lib/tailwind/color.cjs +9 -0
- package/lib/tailwind/color.cjs.map +1 -1
- package/lib/tailwind/color.d.ts +1 -1
- package/lib/tailwind/color.js +9 -0
- package/lib/tailwind/color.js.map +1 -1
- package/lib/tailwind/fontSize.cjs +10 -0
- package/lib/tailwind/fontSize.cjs.map +1 -1
- package/lib/tailwind/fontSize.d.ts +1 -1
- package/lib/tailwind/fontSize.js +10 -0
- package/lib/tailwind/fontSize.js.map +1 -1
- package/lib/tailwind/index.cjs +10 -2
- package/lib/tailwind/index.cjs.map +1 -1
- package/lib/tailwind/index.js +9 -1
- package/lib/tailwind/index.js.map +1 -1
- package/lib/tailwind/textColor.cjs +9 -0
- package/lib/tailwind/textColor.cjs.map +1 -1
- package/lib/tailwind/textColor.d.ts +1 -1
- package/lib/tailwind/textColor.js +9 -0
- package/lib/tailwind/textColor.js.map +1 -1
- package/lib/themes/createWidth.cjs +1 -3
- package/lib/themes/createWidth.cjs.map +1 -1
- package/lib/themes/createWidth.d.ts +3 -1
- package/lib/themes/createWidth.js +1 -3
- package/lib/themes/createWidth.js.map +1 -1
- package/lib/themes/index.cjs +14 -0
- package/lib/themes/index.cjs.map +1 -1
- package/lib/themes/index.d.ts +7 -1
- package/lib/themes/index.js +9 -1
- package/lib/themes/index.js.map +1 -1
- package/metadata.json +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateIcon.js","sources":["../../../src/components/Icon/generateIcon.tsx"],"sourcesContent":["import { type ComponentProps, type ReactNode, memo, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { color as defaultColorPalette, fontSize, textColor } from '../../tailwind'\nimport { VisuallyHiddenText } from '../VisuallyHiddenText'\n\nimport type { FontSizes } from '../../themes'\nimport type { IconType } from 'react-icons'\n\n/**\n * literal union type に補完を効かせるためのハック\n * https://github.com/microsoft/TypeScript/issues/29729\n */\ntype LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>)\n\nexport const colorSet = {\n TEXT_BLACK: 'black',\n TEXT_WHITE: 'white',\n TEXT_GREY: 'grey',\n TEXT_DISABLED: 'disabled',\n TEXT_LINK: 'link',\n MAIN: 'main',\n DANGER: 'danger',\n WARNING: 'warning-yellow',\n BRAND: 'brand',\n} as const\n\nconst existsColor = (color: string): color is keyof typeof colorSet => color in colorSet\n\ntype IconProps = {\n /**\n * アイコンの色\n * @type string | 'TEXT_BLACK' | 'TEXT_GREY' | 'TEXT_DISABLED' | 'TEXT_LINK' | 'MAIN' | 'DANGER' | 'WARNING' | 'BRAND'\n */\n color?: LiteralUnion<keyof typeof colorSet>\n /**\n * アイコンの大きさ(フォントサイズの抽象値)\n * @deprecated 親要素やデフォルトフォントサイズが継承されるため固定値の指定は非推奨\n */\n size?: FontSizes\n}\n\ntype AbstractProps = {\n /**アイコンの説明テキスト*/\n alt?: ReactNode\n}\nexport type Props = AbstractProps &\n Omit<IconProps & Omit<ComponentProps<'svg'>, keyof IconProps>, keyof AbstractProps>\n\n// HINT: smarthr-ui-Icon-extendedはアイコン+α(例えば複数のアイコンをまとめて一つにしているなど)を表すclass\n// altなどもVisuallyHiddenTextで表現している関係上、squareの計算などの際に複数要素として判断されると認知と違う結果になるため使用しています\n\nconst classNameGenerator = tv({\n slots: {\n icon: 'smarthr-ui-Icon group-[]/iconWrapper:shr-shrink-0 group-[]/iconWrapper:shr-translate-y-[0.125em] forced-colors:shr-fill-[CanvasText]',\n wrapperWithAlt: 'smarthr-ui-Icon-extended smarthr-ui-Icon-withAlt shr-relative shr-leading-[0]',\n },\n})\n\nexport const generateIcon = (SvgIcon: IconType) => {\n const Icon = memo<Props>(\n ({\n color,\n className,\n role = 'img',\n alt,\n 'aria-hidden': ariaHidden,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n focusable = false,\n size,\n ...rest\n }) => {\n const actualAriaHidden = useMemo(() => {\n if (ariaHidden !== undefined) {\n return ariaHidden\n }\n\n if (alt !== undefined || (ariaLabel === undefined && ariaLabelledby === undefined)) {\n return true\n }\n\n return undefined\n }, [ariaHidden, alt, ariaLabel, ariaLabelledby])\n\n const classNames = useMemo(() => {\n const { icon, wrapperWithAlt } = classNameGenerator()\n\n return {\n icon: icon({ className }),\n wrapperWithAlt: wrapperWithAlt(),\n }\n }, [className])\n\n const replacedColor = useMemo(() => {\n if (color && existsColor(color)) {\n const colorName = colorSet[color]\n\n if (colorName in textColor) {\n return textColor[colorName as keyof typeof textColor]\n }\n\n return defaultColorPalette[colorName as keyof typeof defaultColorPalette] as string\n }\n\n return color\n }, [color])\n\n const iconSize = size ? fontSize[size] : '1em' // 指定がない場合は親要素のフォントサイズを継承する\n const svgIcon = (\n <SvgIcon\n {...rest}\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n // size は react-icons のアイコンの大きさ、width / height は自前で SVG からアイコンを作る場合の大きさ指定\n size={iconSize}\n width={iconSize}\n height={iconSize}\n color={replacedColor}\n className={classNames.icon}\n role={role}\n aria-hidden={actualAriaHidden}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n focusable={focusable}\n />\n )\n\n if (alt) {\n return (\n // HINT: VisuallyHiddenTextが存在すると、アイコンなのに2つの要素がある状態になってしまい\n // styleなどを記述する際、意図しない状態になる場合がある\n // 回避するため、spanでラップし、開発者のメンタルモデルに合わせる\n <span className={classNames.wrapperWithAlt}>\n <VisuallyHiddenText>{alt}</VisuallyHiddenText>\n {svgIcon}\n </span>\n )\n }\n\n return svgIcon\n },\n )\n\n Icon.displayName = SvgIcon.name\n\n return Icon\n}\n"],"names":["tv","textColor","defaultColorPalette","fontSize","_jsx","_jsxs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"generateIcon.js","sources":["../../../src/components/Icon/generateIcon.tsx"],"sourcesContent":["import { type ComponentProps, type ReactNode, memo, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { color as defaultColorPalette, fontSize, textColor } from '../../tailwind'\nimport { VisuallyHiddenText } from '../VisuallyHiddenText'\n\nimport type { FontSizes } from '../../themes'\nimport type { IconType } from 'react-icons'\n\n/**\n * literal union type に補完を効かせるためのハック\n * https://github.com/microsoft/TypeScript/issues/29729\n */\ntype LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>)\n\nexport const colorSet = {\n TEXT_BLACK: 'black',\n TEXT_WHITE: 'white',\n TEXT_GREY: 'grey',\n TEXT_DISABLED: 'disabled',\n TEXT_LINK: 'link',\n MAIN: 'main',\n DANGER: 'danger',\n WARNING: 'warning-yellow',\n BRAND: 'brand',\n} as const\n\nconst existsColor = (color: string): color is keyof typeof colorSet => color in colorSet\n\ntype IconProps = {\n /**\n * アイコンの色\n * @type string | 'TEXT_BLACK' | 'TEXT_GREY' | 'TEXT_DISABLED' | 'TEXT_LINK' | 'MAIN' | 'DANGER' | 'WARNING' | 'BRAND'\n */\n color?: LiteralUnion<keyof typeof colorSet>\n /**\n * アイコンの大きさ(フォントサイズの抽象値)\n * @deprecated 親要素やデフォルトフォントサイズが継承されるため固定値の指定は非推奨\n */\n size?: FontSizes\n}\n\ntype AbstractProps = {\n /**アイコンの説明テキスト*/\n alt?: ReactNode\n}\nexport type Props = AbstractProps &\n Omit<IconProps & Omit<ComponentProps<'svg'>, keyof IconProps>, keyof AbstractProps>\n\n// HINT: smarthr-ui-Icon-extendedはアイコン+α(例えば複数のアイコンをまとめて一つにしているなど)を表すclass\n// altなどもVisuallyHiddenTextで表現している関係上、squareの計算などの際に複数要素として判断されると認知と違う結果になるため使用しています\n\nconst classNameGenerator = tv({\n slots: {\n icon: 'smarthr-ui-Icon group-[]/iconWrapper:shr-shrink-0 group-[]/iconWrapper:shr-translate-y-[0.125em] forced-colors:shr-fill-[CanvasText]',\n wrapperWithAlt: 'smarthr-ui-Icon-extended smarthr-ui-Icon-withAlt shr-relative shr-leading-[0]',\n },\n})\n\nexport const generateIcon = (SvgIcon: IconType) => {\n const Icon = memo<Props>(\n ({\n color,\n className,\n role = 'img',\n alt,\n 'aria-hidden': ariaHidden,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n focusable = false,\n size,\n ...rest\n }) => {\n const actualAriaHidden = useMemo(() => {\n if (ariaHidden !== undefined) {\n return ariaHidden\n }\n\n if (alt !== undefined || (ariaLabel === undefined && ariaLabelledby === undefined)) {\n return true\n }\n\n return undefined\n }, [ariaHidden, alt, ariaLabel, ariaLabelledby])\n\n const classNames = useMemo(() => {\n const { icon, wrapperWithAlt } = classNameGenerator()\n\n return {\n icon: icon({ className }),\n wrapperWithAlt: wrapperWithAlt(),\n }\n }, [className])\n\n const replacedColor = useMemo(() => {\n if (color && existsColor(color)) {\n const colorName = colorSet[color]\n\n if (colorName in textColor) {\n return textColor[colorName as keyof typeof textColor]\n }\n\n return defaultColorPalette[colorName as keyof typeof defaultColorPalette] as string\n }\n\n return color\n }, [color])\n\n const iconSize = size ? fontSize[size] : '1em' // 指定がない場合は親要素のフォントサイズを継承する\n const svgIcon = (\n <SvgIcon\n {...rest}\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n // size は react-icons のアイコンの大きさ、width / height は自前で SVG からアイコンを作る場合の大きさ指定\n size={iconSize}\n width={iconSize}\n height={iconSize}\n color={replacedColor}\n className={classNames.icon}\n role={role}\n aria-hidden={actualAriaHidden}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n focusable={focusable}\n />\n )\n\n if (alt) {\n return (\n // HINT: VisuallyHiddenTextが存在すると、アイコンなのに2つの要素がある状態になってしまい\n // styleなどを記述する際、意図しない状態になる場合がある\n // 回避するため、spanでラップし、開発者のメンタルモデルに合わせる\n <span className={classNames.wrapperWithAlt}>\n <VisuallyHiddenText>{alt}</VisuallyHiddenText>\n {svgIcon}\n </span>\n )\n }\n\n return svgIcon\n },\n )\n\n Icon.displayName = SvgIcon.name\n\n return Icon\n}\n"],"names":["tv","textColor","defaultColorPalette","fontSize","_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -106,8 +106,12 @@ const ActualCluster = ({ as, gap = 0.5, inline = false, align, justify, classNam
|
|
|
106
106
|
justify,
|
|
107
107
|
className,
|
|
108
108
|
}), [inline, gaps.row, gaps.column, align, justify, className]);
|
|
109
|
+
// eslint-disable-next-line smarthr/best-practice-for-no-unnecessary-variable -- Componentは useSectionWrapper と JSX の2箇所で使用されているため誤検知
|
|
109
110
|
const Component = as || 'div';
|
|
110
111
|
const Wrapper = components_SectioningContent_useSectioningWrapper.useSectionWrapper(Component);
|
|
112
|
+
// ポリモーフィックコンポーネント: asプロパティで要素型を動的に変更可能なため、
|
|
113
|
+
// refの型を静的に決定できません。HTMLElementを基底型として使用し、
|
|
114
|
+
// 実際の要素型との整合性はas anyで型アサーションします。
|
|
111
115
|
const body = jsxRuntime.jsx(Component, { ...rest, ref: ref, className: actualClassName });
|
|
112
116
|
if (Wrapper) {
|
|
113
117
|
return jsxRuntime.jsx(Wrapper, { children: body });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cluster.cjs","sources":["../../../../src/components/Layout/Cluster/Cluster.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type ForwardedRef,\n type PropsWithChildren,\n useMemo,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { genericsForwardRef } from '../../../libs/util'\nimport { useSectionWrapper } from '../../SectioningContent'\n\nimport type { Gap, SeparateGap } from '../../../types'\n\nexport const clusterClassNameGenerator = tv({\n base: 'shr-flex-wrap [&:empty]:shr-gap-0',\n variants: {\n inline: {\n true: 'shr-inline-flex',\n false: 'shr-flex',\n },\n rowGap: {\n // 動的生成も考えたが、tailwindcss が検知できないためベタ書きしている\n 0: 'shr-gap-y-0',\n 0.25: 'shr-gap-y-0.25',\n 0.5: 'shr-gap-y-0.5',\n 0.75: 'shr-gap-y-0.75',\n 1: 'shr-gap-y-1',\n 1.25: 'shr-gap-y-1.25',\n 1.5: 'shr-gap-y-1.5',\n 2: 'shr-gap-y-2',\n 2.5: 'shr-gap-y-2.5',\n 3: 'shr-gap-y-3',\n 3.5: 'shr-gap-y-3.5',\n 4: 'shr-gap-y-4',\n 8: 'shr-gap-y-8',\n X3S: 'shr-gap-y-0.25',\n XXS: 'shr-gap-y-0.5',\n XS: 'shr-gap-y-1',\n S: 'shr-gap-y-1.5',\n M: 'shr-gap-y-2',\n L: 'shr-gap-y-2.5',\n XL: 'shr-gap-y-3',\n XXL: 'shr-gap-y-3.5',\n X3L: 'shr-gap-y-4',\n } as { [key in Gap]: string },\n columnGap: {\n 0: 'shr-gap-x-0',\n 0.25: 'shr-gap-x-0.25',\n 0.5: 'shr-gap-x-0.5',\n 0.75: 'shr-gap-x-0.75',\n 1: 'shr-gap-x-1',\n 1.25: 'shr-gap-x-1.25',\n 1.5: 'shr-gap-x-1.5',\n 2: 'shr-gap-x-2',\n 2.5: 'shr-gap-x-2.5',\n 3: 'shr-gap-x-3',\n 3.5: 'shr-gap-x-3.5',\n 4: 'shr-gap-x-4',\n 8: 'shr-gap-x-8',\n X3S: 'shr-gap-x-0.25',\n XXS: 'shr-gap-x-0.5',\n XS: 'shr-gap-x-1',\n S: 'shr-gap-x-1.5',\n M: 'shr-gap-x-2',\n L: 'shr-gap-x-2.5',\n XL: 'shr-gap-x-3',\n XXL: 'shr-gap-x-3.5',\n X3L: 'shr-gap-x-4',\n } as { [key in Gap]: string },\n align: {\n start: 'shr-items-start',\n 'flex-start': 'shr-items-start',\n end: 'shr-items-end',\n 'flex-end': 'shr-items-end',\n center: 'shr-items-center',\n baseline: 'shr-items-baseline',\n stretch: 'shr-items-stretch',\n },\n justify: {\n normal: 'shr-justify-normal',\n start: 'shr-justify-start',\n 'flex-start': 'shr-justify-start',\n end: 'shr-justify-end',\n 'flex-end': 'shr-justify-end',\n center: 'shr-justify-center',\n 'space-between': 'shr-justify-between',\n 'space-around': 'shr-justify-around',\n 'space-evenly': 'shr-justify-evenly',\n stretch: 'shr-justify-stretch',\n },\n },\n})\n\ntype Props<T extends ElementType> = PropsWithChildren<\n Omit<VariantProps<typeof clusterClassNameGenerator>, 'rowGap' | 'columnGap'> & {\n as?: T\n gap?: Gap | SeparateGap\n }\n> &\n ComponentPropsWithoutRef<T>\n\nconst ActualCluster = <T extends ElementType = 'div'>(\n { as, gap = 0.5, inline = false, align, justify, className, ...rest }: Props<T>,\n ref: ForwardedRef<
|
|
1
|
+
{"version":3,"file":"Cluster.cjs","sources":["../../../../src/components/Layout/Cluster/Cluster.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type ForwardedRef,\n type PropsWithChildren,\n useMemo,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { genericsForwardRef } from '../../../libs/util'\nimport { useSectionWrapper } from '../../SectioningContent'\n\nimport type { Gap, SeparateGap } from '../../../types'\n\nexport const clusterClassNameGenerator = tv({\n base: 'shr-flex-wrap [&:empty]:shr-gap-0',\n variants: {\n inline: {\n true: 'shr-inline-flex',\n false: 'shr-flex',\n },\n rowGap: {\n // 動的生成も考えたが、tailwindcss が検知できないためベタ書きしている\n 0: 'shr-gap-y-0',\n 0.25: 'shr-gap-y-0.25',\n 0.5: 'shr-gap-y-0.5',\n 0.75: 'shr-gap-y-0.75',\n 1: 'shr-gap-y-1',\n 1.25: 'shr-gap-y-1.25',\n 1.5: 'shr-gap-y-1.5',\n 2: 'shr-gap-y-2',\n 2.5: 'shr-gap-y-2.5',\n 3: 'shr-gap-y-3',\n 3.5: 'shr-gap-y-3.5',\n 4: 'shr-gap-y-4',\n 8: 'shr-gap-y-8',\n X3S: 'shr-gap-y-0.25',\n XXS: 'shr-gap-y-0.5',\n XS: 'shr-gap-y-1',\n S: 'shr-gap-y-1.5',\n M: 'shr-gap-y-2',\n L: 'shr-gap-y-2.5',\n XL: 'shr-gap-y-3',\n XXL: 'shr-gap-y-3.5',\n X3L: 'shr-gap-y-4',\n } as { [key in Gap]: string },\n columnGap: {\n 0: 'shr-gap-x-0',\n 0.25: 'shr-gap-x-0.25',\n 0.5: 'shr-gap-x-0.5',\n 0.75: 'shr-gap-x-0.75',\n 1: 'shr-gap-x-1',\n 1.25: 'shr-gap-x-1.25',\n 1.5: 'shr-gap-x-1.5',\n 2: 'shr-gap-x-2',\n 2.5: 'shr-gap-x-2.5',\n 3: 'shr-gap-x-3',\n 3.5: 'shr-gap-x-3.5',\n 4: 'shr-gap-x-4',\n 8: 'shr-gap-x-8',\n X3S: 'shr-gap-x-0.25',\n XXS: 'shr-gap-x-0.5',\n XS: 'shr-gap-x-1',\n S: 'shr-gap-x-1.5',\n M: 'shr-gap-x-2',\n L: 'shr-gap-x-2.5',\n XL: 'shr-gap-x-3',\n XXL: 'shr-gap-x-3.5',\n X3L: 'shr-gap-x-4',\n } as { [key in Gap]: string },\n align: {\n start: 'shr-items-start',\n 'flex-start': 'shr-items-start',\n end: 'shr-items-end',\n 'flex-end': 'shr-items-end',\n center: 'shr-items-center',\n baseline: 'shr-items-baseline',\n stretch: 'shr-items-stretch',\n },\n justify: {\n normal: 'shr-justify-normal',\n start: 'shr-justify-start',\n 'flex-start': 'shr-justify-start',\n end: 'shr-justify-end',\n 'flex-end': 'shr-justify-end',\n center: 'shr-justify-center',\n 'space-between': 'shr-justify-between',\n 'space-around': 'shr-justify-around',\n 'space-evenly': 'shr-justify-evenly',\n stretch: 'shr-justify-stretch',\n },\n },\n})\n\ntype Props<T extends ElementType> = PropsWithChildren<\n Omit<VariantProps<typeof clusterClassNameGenerator>, 'rowGap' | 'columnGap'> & {\n as?: T\n gap?: Gap | SeparateGap\n }\n> &\n ComponentPropsWithoutRef<T>\n\nconst ActualCluster = <T extends ElementType = 'div'>(\n { as, gap = 0.5, inline = false, align, justify, className, ...rest }: Props<T>,\n ref: ForwardedRef<HTMLElement>,\n) => {\n const gaps = useMemo(() => {\n if (gap instanceof Object) {\n return gap\n }\n\n return {\n row: gap,\n column: gap,\n }\n }, [gap])\n\n const actualClassName = useMemo(\n () =>\n clusterClassNameGenerator({\n inline,\n rowGap: gaps.row,\n columnGap: gaps.column,\n align,\n justify,\n className,\n }),\n [inline, gaps.row, gaps.column, align, justify, className],\n )\n\n // eslint-disable-next-line smarthr/best-practice-for-no-unnecessary-variable -- Componentは useSectionWrapper と JSX の2箇所で使用されているため誤検知\n const Component = as || 'div'\n const Wrapper = useSectionWrapper(Component)\n // ポリモーフィックコンポーネント: asプロパティで要素型を動的に変更可能なため、\n // refの型を静的に決定できません。HTMLElementを基底型として使用し、\n // 実際の要素型との整合性はas anyで型アサーションします。\n const body = <Component {...rest} ref={ref as any} className={actualClassName} />\n\n if (Wrapper) {\n return <Wrapper>{body}</Wrapper>\n }\n\n return body\n}\n\nexport const Cluster = genericsForwardRef(ActualCluster)\n"],"names":[],"mappings":";;;;;;;;;;;AAgBO;AACL;AACA;AACE;AACE;AACA;AACD;AACD;;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC2B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC2B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACF;AACF;AAUD;AAIE;AACE;AACE;;;AAIA;AACA;;AAEJ;;;;;;;;AAWK;;AAKL;AACA;;;;AAIA;;AAGE;;AAGF;AACF;;;;"}
|
|
@@ -399,4 +399,4 @@ export declare const Cluster: <T extends ElementType = "div">(props: Omit<Varian
|
|
|
399
399
|
gap?: Gap | SeparateGap;
|
|
400
400
|
} & {
|
|
401
401
|
children?: import("react").ReactNode | undefined;
|
|
402
|
-
} & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & import("react").RefAttributes<
|
|
402
|
+
} & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & import("react").RefAttributes<HTMLElement>) => import("react").ReactNode;
|
|
@@ -104,8 +104,12 @@ const ActualCluster = ({ as, gap = 0.5, inline = false, align, justify, classNam
|
|
|
104
104
|
justify,
|
|
105
105
|
className,
|
|
106
106
|
}), [inline, gaps.row, gaps.column, align, justify, className]);
|
|
107
|
+
// eslint-disable-next-line smarthr/best-practice-for-no-unnecessary-variable -- Componentは useSectionWrapper と JSX の2箇所で使用されているため誤検知
|
|
107
108
|
const Component = as || 'div';
|
|
108
109
|
const Wrapper = useSectionWrapper(Component);
|
|
110
|
+
// ポリモーフィックコンポーネント: asプロパティで要素型を動的に変更可能なため、
|
|
111
|
+
// refの型を静的に決定できません。HTMLElementを基底型として使用し、
|
|
112
|
+
// 実際の要素型との整合性はas anyで型アサーションします。
|
|
109
113
|
const body = jsx(Component, { ...rest, ref: ref, className: actualClassName });
|
|
110
114
|
if (Wrapper) {
|
|
111
115
|
return jsx(Wrapper, { children: body });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cluster.js","sources":["../../../../src/components/Layout/Cluster/Cluster.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type ForwardedRef,\n type PropsWithChildren,\n useMemo,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { genericsForwardRef } from '../../../libs/util'\nimport { useSectionWrapper } from '../../SectioningContent'\n\nimport type { Gap, SeparateGap } from '../../../types'\n\nexport const clusterClassNameGenerator = tv({\n base: 'shr-flex-wrap [&:empty]:shr-gap-0',\n variants: {\n inline: {\n true: 'shr-inline-flex',\n false: 'shr-flex',\n },\n rowGap: {\n // 動的生成も考えたが、tailwindcss が検知できないためベタ書きしている\n 0: 'shr-gap-y-0',\n 0.25: 'shr-gap-y-0.25',\n 0.5: 'shr-gap-y-0.5',\n 0.75: 'shr-gap-y-0.75',\n 1: 'shr-gap-y-1',\n 1.25: 'shr-gap-y-1.25',\n 1.5: 'shr-gap-y-1.5',\n 2: 'shr-gap-y-2',\n 2.5: 'shr-gap-y-2.5',\n 3: 'shr-gap-y-3',\n 3.5: 'shr-gap-y-3.5',\n 4: 'shr-gap-y-4',\n 8: 'shr-gap-y-8',\n X3S: 'shr-gap-y-0.25',\n XXS: 'shr-gap-y-0.5',\n XS: 'shr-gap-y-1',\n S: 'shr-gap-y-1.5',\n M: 'shr-gap-y-2',\n L: 'shr-gap-y-2.5',\n XL: 'shr-gap-y-3',\n XXL: 'shr-gap-y-3.5',\n X3L: 'shr-gap-y-4',\n } as { [key in Gap]: string },\n columnGap: {\n 0: 'shr-gap-x-0',\n 0.25: 'shr-gap-x-0.25',\n 0.5: 'shr-gap-x-0.5',\n 0.75: 'shr-gap-x-0.75',\n 1: 'shr-gap-x-1',\n 1.25: 'shr-gap-x-1.25',\n 1.5: 'shr-gap-x-1.5',\n 2: 'shr-gap-x-2',\n 2.5: 'shr-gap-x-2.5',\n 3: 'shr-gap-x-3',\n 3.5: 'shr-gap-x-3.5',\n 4: 'shr-gap-x-4',\n 8: 'shr-gap-x-8',\n X3S: 'shr-gap-x-0.25',\n XXS: 'shr-gap-x-0.5',\n XS: 'shr-gap-x-1',\n S: 'shr-gap-x-1.5',\n M: 'shr-gap-x-2',\n L: 'shr-gap-x-2.5',\n XL: 'shr-gap-x-3',\n XXL: 'shr-gap-x-3.5',\n X3L: 'shr-gap-x-4',\n } as { [key in Gap]: string },\n align: {\n start: 'shr-items-start',\n 'flex-start': 'shr-items-start',\n end: 'shr-items-end',\n 'flex-end': 'shr-items-end',\n center: 'shr-items-center',\n baseline: 'shr-items-baseline',\n stretch: 'shr-items-stretch',\n },\n justify: {\n normal: 'shr-justify-normal',\n start: 'shr-justify-start',\n 'flex-start': 'shr-justify-start',\n end: 'shr-justify-end',\n 'flex-end': 'shr-justify-end',\n center: 'shr-justify-center',\n 'space-between': 'shr-justify-between',\n 'space-around': 'shr-justify-around',\n 'space-evenly': 'shr-justify-evenly',\n stretch: 'shr-justify-stretch',\n },\n },\n})\n\ntype Props<T extends ElementType> = PropsWithChildren<\n Omit<VariantProps<typeof clusterClassNameGenerator>, 'rowGap' | 'columnGap'> & {\n as?: T\n gap?: Gap | SeparateGap\n }\n> &\n ComponentPropsWithoutRef<T>\n\nconst ActualCluster = <T extends ElementType = 'div'>(\n { as, gap = 0.5, inline = false, align, justify, className, ...rest }: Props<T>,\n ref: ForwardedRef<
|
|
1
|
+
{"version":3,"file":"Cluster.js","sources":["../../../../src/components/Layout/Cluster/Cluster.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type ForwardedRef,\n type PropsWithChildren,\n useMemo,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { genericsForwardRef } from '../../../libs/util'\nimport { useSectionWrapper } from '../../SectioningContent'\n\nimport type { Gap, SeparateGap } from '../../../types'\n\nexport const clusterClassNameGenerator = tv({\n base: 'shr-flex-wrap [&:empty]:shr-gap-0',\n variants: {\n inline: {\n true: 'shr-inline-flex',\n false: 'shr-flex',\n },\n rowGap: {\n // 動的生成も考えたが、tailwindcss が検知できないためベタ書きしている\n 0: 'shr-gap-y-0',\n 0.25: 'shr-gap-y-0.25',\n 0.5: 'shr-gap-y-0.5',\n 0.75: 'shr-gap-y-0.75',\n 1: 'shr-gap-y-1',\n 1.25: 'shr-gap-y-1.25',\n 1.5: 'shr-gap-y-1.5',\n 2: 'shr-gap-y-2',\n 2.5: 'shr-gap-y-2.5',\n 3: 'shr-gap-y-3',\n 3.5: 'shr-gap-y-3.5',\n 4: 'shr-gap-y-4',\n 8: 'shr-gap-y-8',\n X3S: 'shr-gap-y-0.25',\n XXS: 'shr-gap-y-0.5',\n XS: 'shr-gap-y-1',\n S: 'shr-gap-y-1.5',\n M: 'shr-gap-y-2',\n L: 'shr-gap-y-2.5',\n XL: 'shr-gap-y-3',\n XXL: 'shr-gap-y-3.5',\n X3L: 'shr-gap-y-4',\n } as { [key in Gap]: string },\n columnGap: {\n 0: 'shr-gap-x-0',\n 0.25: 'shr-gap-x-0.25',\n 0.5: 'shr-gap-x-0.5',\n 0.75: 'shr-gap-x-0.75',\n 1: 'shr-gap-x-1',\n 1.25: 'shr-gap-x-1.25',\n 1.5: 'shr-gap-x-1.5',\n 2: 'shr-gap-x-2',\n 2.5: 'shr-gap-x-2.5',\n 3: 'shr-gap-x-3',\n 3.5: 'shr-gap-x-3.5',\n 4: 'shr-gap-x-4',\n 8: 'shr-gap-x-8',\n X3S: 'shr-gap-x-0.25',\n XXS: 'shr-gap-x-0.5',\n XS: 'shr-gap-x-1',\n S: 'shr-gap-x-1.5',\n M: 'shr-gap-x-2',\n L: 'shr-gap-x-2.5',\n XL: 'shr-gap-x-3',\n XXL: 'shr-gap-x-3.5',\n X3L: 'shr-gap-x-4',\n } as { [key in Gap]: string },\n align: {\n start: 'shr-items-start',\n 'flex-start': 'shr-items-start',\n end: 'shr-items-end',\n 'flex-end': 'shr-items-end',\n center: 'shr-items-center',\n baseline: 'shr-items-baseline',\n stretch: 'shr-items-stretch',\n },\n justify: {\n normal: 'shr-justify-normal',\n start: 'shr-justify-start',\n 'flex-start': 'shr-justify-start',\n end: 'shr-justify-end',\n 'flex-end': 'shr-justify-end',\n center: 'shr-justify-center',\n 'space-between': 'shr-justify-between',\n 'space-around': 'shr-justify-around',\n 'space-evenly': 'shr-justify-evenly',\n stretch: 'shr-justify-stretch',\n },\n },\n})\n\ntype Props<T extends ElementType> = PropsWithChildren<\n Omit<VariantProps<typeof clusterClassNameGenerator>, 'rowGap' | 'columnGap'> & {\n as?: T\n gap?: Gap | SeparateGap\n }\n> &\n ComponentPropsWithoutRef<T>\n\nconst ActualCluster = <T extends ElementType = 'div'>(\n { as, gap = 0.5, inline = false, align, justify, className, ...rest }: Props<T>,\n ref: ForwardedRef<HTMLElement>,\n) => {\n const gaps = useMemo(() => {\n if (gap instanceof Object) {\n return gap\n }\n\n return {\n row: gap,\n column: gap,\n }\n }, [gap])\n\n const actualClassName = useMemo(\n () =>\n clusterClassNameGenerator({\n inline,\n rowGap: gaps.row,\n columnGap: gaps.column,\n align,\n justify,\n className,\n }),\n [inline, gaps.row, gaps.column, align, justify, className],\n )\n\n // eslint-disable-next-line smarthr/best-practice-for-no-unnecessary-variable -- Componentは useSectionWrapper と JSX の2箇所で使用されているため誤検知\n const Component = as || 'div'\n const Wrapper = useSectionWrapper(Component)\n // ポリモーフィックコンポーネント: asプロパティで要素型を動的に変更可能なため、\n // refの型を静的に決定できません。HTMLElementを基底型として使用し、\n // 実際の要素型との整合性はas anyで型アサーションします。\n const body = <Component {...rest} ref={ref as any} className={actualClassName} />\n\n if (Wrapper) {\n return <Wrapper>{body}</Wrapper>\n }\n\n return body\n}\n\nexport const Cluster = genericsForwardRef(ActualCluster)\n"],"names":[],"mappings":";;;;;;;;;AAgBO;AACL;AACA;AACE;AACE;AACA;AACD;AACD;;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC2B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC2B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACF;AACF;AAUD;AAIE;AACE;AACE;;;AAIA;AACA;;AAEJ;;;;;;;;AAWK;;AAKL;AACA;;;;AAIA;;AAGE;;AAGF;AACF;;;"}
|
|
@@ -11,12 +11,12 @@ require('../../../themes/createSpacing.cjs');
|
|
|
11
11
|
require('../../../_virtual/index.cjs');
|
|
12
12
|
require('../../../_virtual/index2.cjs');
|
|
13
13
|
require('../../../themes/createColor.cjs');
|
|
14
|
+
require('../../../themes/createTextColor.cjs');
|
|
15
|
+
require('styled-components');
|
|
14
16
|
require('../../../themes/createShadow/defaultShadow.cjs');
|
|
15
17
|
require('../../../themes/createWidth.cjs');
|
|
16
18
|
require('../../../themes/createBackgroundColor.cjs');
|
|
17
19
|
require('../../../themes/createBorder.cjs');
|
|
18
|
-
require('styled-components');
|
|
19
|
-
require('../../../themes/createTextColor.cjs');
|
|
20
20
|
require('../../../hooks/useTheme.cjs');
|
|
21
21
|
var tailwind_padding = require('../../../tailwind/padding.cjs');
|
|
22
22
|
|
|
@@ -9,12 +9,12 @@ import '../../../themes/createSpacing.js';
|
|
|
9
9
|
import '../../../_virtual/index.js';
|
|
10
10
|
import '../../../_virtual/index2.js';
|
|
11
11
|
import '../../../themes/createColor.js';
|
|
12
|
+
import '../../../themes/createTextColor.js';
|
|
13
|
+
import 'styled-components';
|
|
12
14
|
import '../../../themes/createShadow/defaultShadow.js';
|
|
13
15
|
import '../../../themes/createWidth.js';
|
|
14
16
|
import '../../../themes/createBackgroundColor.js';
|
|
15
17
|
import '../../../themes/createBorder.js';
|
|
16
|
-
import 'styled-components';
|
|
17
|
-
import '../../../themes/createTextColor.js';
|
|
18
18
|
import '../../../hooks/useTheme.js';
|
|
19
19
|
import { paddingInline, paddingBlock } from '../../../tailwind/padding.js';
|
|
20
20
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var index = require('./../../vendor/.pnpm/tailwind-variants@0.3.1_tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.17_@types_node@20.19.35_typescript@5.9.3__/vendor/tailwind-variants/dist/index.cjs');
|
|
7
|
-
var libs_debounce = require('../../libs/debounce.cjs');
|
|
8
7
|
require('../SectioningContent/SectioningContent.cjs');
|
|
9
8
|
require('../SectioningContent/levelContext.cjs');
|
|
10
9
|
var components_SectioningContent_useSectioningWrapper = require('../SectioningContent/useSectioningWrapper.cjs');
|
|
@@ -54,12 +53,8 @@ const classNameGenerator = index.tv({
|
|
|
54
53
|
className: 'shr-overflow-scroll',
|
|
55
54
|
},
|
|
56
55
|
],
|
|
57
|
-
defaultVariants: {
|
|
58
|
-
direction: 'vertical',
|
|
59
|
-
styleType: 'auto',
|
|
60
|
-
},
|
|
61
56
|
});
|
|
62
|
-
const Scroller = React.forwardRef(({ as: Component = 'div', direction, styleType, className, children, ...rest }, ref) => {
|
|
57
|
+
const Scroller = React.forwardRef(({ as: Component = 'div', direction = 'vertical', styleType = 'auto', className, children, ...rest }, ref) => {
|
|
63
58
|
const wrapperRef = React.useRef(null);
|
|
64
59
|
React.useImperativeHandle(ref, () => wrapperRef.current);
|
|
65
60
|
const [tabIndex, setTabIndex] = React.useState(undefined);
|
|
@@ -68,10 +63,12 @@ const Scroller = React.forwardRef(({ as: Component = 'div', direction, styleType
|
|
|
68
63
|
styleType,
|
|
69
64
|
className,
|
|
70
65
|
}), [direction, styleType, className]);
|
|
71
|
-
|
|
72
|
-
let nextTabIndex = undefined;
|
|
66
|
+
React.useEffect(() => {
|
|
73
67
|
const refCurrent = wrapperRef.current;
|
|
74
|
-
if (refCurrent)
|
|
68
|
+
if (!refCurrent)
|
|
69
|
+
return;
|
|
70
|
+
const autoTabIndex = () => {
|
|
71
|
+
let nextTabIndex = undefined;
|
|
75
72
|
switch (direction) {
|
|
76
73
|
case 'vertical':
|
|
77
74
|
nextTabIndex = refCurrent.scrollHeight > refCurrent.clientHeight ? 0 : undefined;
|
|
@@ -87,19 +84,15 @@ const Scroller = React.forwardRef(({ as: Component = 'div', direction, styleType
|
|
|
87
84
|
: undefined;
|
|
88
85
|
break;
|
|
89
86
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}, [direction]);
|
|
93
|
-
React.useEffect(() => {
|
|
87
|
+
setTabIndex(nextTabIndex);
|
|
88
|
+
};
|
|
94
89
|
autoTabIndex();
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const debouncedAction = libs_debounce.debounce(autoTabIndex, 100);
|
|
98
|
-
window.addEventListener('resize', debouncedAction);
|
|
90
|
+
const resizeObserver = new ResizeObserver(autoTabIndex);
|
|
91
|
+
resizeObserver.observe(refCurrent);
|
|
99
92
|
return () => {
|
|
100
|
-
|
|
93
|
+
resizeObserver.unobserve(refCurrent);
|
|
101
94
|
};
|
|
102
|
-
}, [
|
|
95
|
+
}, [direction]);
|
|
103
96
|
const Wrapper = components_SectioningContent_useSectioningWrapper.useSectionWrapper(Component);
|
|
104
97
|
const body = (jsxRuntime.jsx(Component, { ...rest, ref: wrapperRef, className: actualClassName, tabIndex: tabIndex, children: children }));
|
|
105
98
|
if (Wrapper) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scroller.cjs","sources":["../../../src/components/Scroller/Scroller.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type PropsWithChildren,\n forwardRef,\n
|
|
1
|
+
{"version":3,"file":"Scroller.cjs","sources":["../../../src/components/Scroller/Scroller.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type PropsWithChildren,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { useSectionWrapper } from '../SectioningContent'\n\ntype AbstractProps = PropsWithChildren<\n VariantProps<typeof classNameGenerator> & {\n as?: string | ComponentType<any>\n }\n>\ntype Props = AbstractProps & Omit<ComponentPropsWithoutRef<'div'>, keyof AbstractProps | 'tabIndex'>\n\nconst classNameGenerator = tv({\n base: 'smarthr-ui-Scroller',\n variants: {\n direction: {\n horizontal: '',\n vertical: '',\n both: '',\n },\n styleType: {\n auto: '',\n scroll: '',\n },\n },\n compoundVariants: [\n {\n direction: 'vertical',\n styleType: 'auto',\n className: 'shr-overflow-y-auto shr-overflow-x-hidden',\n },\n {\n direction: 'horizontal',\n styleType: 'auto',\n className: 'shr-overflow-x-auto shr-overflow-y-hidden',\n },\n {\n direction: 'both',\n styleType: 'auto',\n className: 'shr-overflow-auto',\n },\n {\n direction: 'vertical',\n styleType: 'scroll',\n className: 'shr-overflow-x-hidden shr-overflow-y-scroll',\n },\n {\n direction: 'horizontal',\n styleType: 'scroll',\n className: 'shr-overflow-y-hidden shr-overflow-x-scroll',\n },\n {\n direction: 'both',\n styleType: 'scroll',\n className: 'shr-overflow-scroll',\n },\n ],\n})\n\nexport const Scroller = forwardRef<HTMLDivElement, Props>(\n (\n {\n as: Component = 'div',\n direction = 'vertical',\n styleType = 'auto',\n className,\n children,\n ...rest\n },\n ref,\n ) => {\n const wrapperRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => wrapperRef.current!)\n\n const [tabIndex, setTabIndex] = useState<0 | undefined>(undefined)\n\n const actualClassName = useMemo(\n () =>\n classNameGenerator({\n direction,\n styleType,\n className,\n }),\n [direction, styleType, className],\n )\n\n useEffect(() => {\n const refCurrent = wrapperRef.current\n if (!refCurrent) return\n\n const autoTabIndex = () => {\n let nextTabIndex: 0 | undefined = undefined\n\n switch (direction) {\n case 'vertical':\n nextTabIndex = refCurrent.scrollHeight > refCurrent.clientHeight ? 0 : undefined\n break\n case 'horizontal':\n nextTabIndex = refCurrent.scrollWidth > refCurrent.clientWidth ? 0 : undefined\n break\n case 'both':\n nextTabIndex =\n refCurrent.scrollHeight > refCurrent.clientHeight ||\n refCurrent.scrollWidth > refCurrent.clientWidth\n ? 0\n : undefined\n break\n }\n\n setTabIndex(nextTabIndex)\n }\n\n autoTabIndex()\n\n const resizeObserver = new ResizeObserver(autoTabIndex)\n resizeObserver.observe(refCurrent)\n\n return () => {\n resizeObserver.unobserve(refCurrent)\n }\n }, [direction])\n\n const Wrapper = useSectionWrapper(Component)\n const body = (\n <Component {...rest} ref={wrapperRef} className={actualClassName} tabIndex={tabIndex}>\n {children}\n </Component>\n )\n\n if (Wrapper) {\n return <Wrapper>{body}</Wrapper>\n }\n\n return body\n },\n)\n"],"names":[],"mappings":";;;;;;;;;;AAwBA;AACE;AACA;AACE;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACD;AACF;AACD;AACE;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACF;AACF;AAEM;AAYH;;;;;;;;;AAiBE;AACA;;;;;AAMI;AACE;;AAEF;AACE;;AAEF;;AAEI;AACA;AACE;;;;;AAMV;AAEA;AAEA;AACA;AAEA;AACE;AACF;AACF;AAEA;;;AAQE;;AAGF;AACF;;"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef, useRef, useImperativeHandle, useState, useMemo,
|
|
3
|
+
import { forwardRef, useRef, useImperativeHandle, useState, useMemo, useEffect } from 'react';
|
|
4
4
|
import { tv as ce } from './../../vendor/.pnpm/tailwind-variants@0.3.1_tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.17_@types_node@20.19.35_typescript@5.9.3__/vendor/tailwind-variants/dist/index.js';
|
|
5
|
-
import { debounce } from '../../libs/debounce.js';
|
|
6
5
|
import '../SectioningContent/SectioningContent.js';
|
|
7
6
|
import '../SectioningContent/levelContext.js';
|
|
8
7
|
import { useSectionWrapper } from '../SectioningContent/useSectioningWrapper.js';
|
|
@@ -52,12 +51,8 @@ const classNameGenerator = ce({
|
|
|
52
51
|
className: 'shr-overflow-scroll',
|
|
53
52
|
},
|
|
54
53
|
],
|
|
55
|
-
defaultVariants: {
|
|
56
|
-
direction: 'vertical',
|
|
57
|
-
styleType: 'auto',
|
|
58
|
-
},
|
|
59
54
|
});
|
|
60
|
-
const Scroller = forwardRef(({ as: Component = 'div', direction, styleType, className, children, ...rest }, ref) => {
|
|
55
|
+
const Scroller = forwardRef(({ as: Component = 'div', direction = 'vertical', styleType = 'auto', className, children, ...rest }, ref) => {
|
|
61
56
|
const wrapperRef = useRef(null);
|
|
62
57
|
useImperativeHandle(ref, () => wrapperRef.current);
|
|
63
58
|
const [tabIndex, setTabIndex] = useState(undefined);
|
|
@@ -66,10 +61,12 @@ const Scroller = forwardRef(({ as: Component = 'div', direction, styleType, clas
|
|
|
66
61
|
styleType,
|
|
67
62
|
className,
|
|
68
63
|
}), [direction, styleType, className]);
|
|
69
|
-
|
|
70
|
-
let nextTabIndex = undefined;
|
|
64
|
+
useEffect(() => {
|
|
71
65
|
const refCurrent = wrapperRef.current;
|
|
72
|
-
if (refCurrent)
|
|
66
|
+
if (!refCurrent)
|
|
67
|
+
return;
|
|
68
|
+
const autoTabIndex = () => {
|
|
69
|
+
let nextTabIndex = undefined;
|
|
73
70
|
switch (direction) {
|
|
74
71
|
case 'vertical':
|
|
75
72
|
nextTabIndex = refCurrent.scrollHeight > refCurrent.clientHeight ? 0 : undefined;
|
|
@@ -85,19 +82,15 @@ const Scroller = forwardRef(({ as: Component = 'div', direction, styleType, clas
|
|
|
85
82
|
: undefined;
|
|
86
83
|
break;
|
|
87
84
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}, [direction]);
|
|
91
|
-
useEffect(() => {
|
|
85
|
+
setTabIndex(nextTabIndex);
|
|
86
|
+
};
|
|
92
87
|
autoTabIndex();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const debouncedAction = debounce(autoTabIndex, 100);
|
|
96
|
-
window.addEventListener('resize', debouncedAction);
|
|
88
|
+
const resizeObserver = new ResizeObserver(autoTabIndex);
|
|
89
|
+
resizeObserver.observe(refCurrent);
|
|
97
90
|
return () => {
|
|
98
|
-
|
|
91
|
+
resizeObserver.unobserve(refCurrent);
|
|
99
92
|
};
|
|
100
|
-
}, [
|
|
93
|
+
}, [direction]);
|
|
101
94
|
const Wrapper = useSectionWrapper(Component);
|
|
102
95
|
const body = (jsx(Component, { ...rest, ref: wrapperRef, className: actualClassName, tabIndex: tabIndex, children: children }));
|
|
103
96
|
if (Wrapper) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scroller.js","sources":["../../../src/components/Scroller/Scroller.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type PropsWithChildren,\n forwardRef,\n
|
|
1
|
+
{"version":3,"file":"Scroller.js","sources":["../../../src/components/Scroller/Scroller.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type PropsWithChildren,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { useSectionWrapper } from '../SectioningContent'\n\ntype AbstractProps = PropsWithChildren<\n VariantProps<typeof classNameGenerator> & {\n as?: string | ComponentType<any>\n }\n>\ntype Props = AbstractProps & Omit<ComponentPropsWithoutRef<'div'>, keyof AbstractProps | 'tabIndex'>\n\nconst classNameGenerator = tv({\n base: 'smarthr-ui-Scroller',\n variants: {\n direction: {\n horizontal: '',\n vertical: '',\n both: '',\n },\n styleType: {\n auto: '',\n scroll: '',\n },\n },\n compoundVariants: [\n {\n direction: 'vertical',\n styleType: 'auto',\n className: 'shr-overflow-y-auto shr-overflow-x-hidden',\n },\n {\n direction: 'horizontal',\n styleType: 'auto',\n className: 'shr-overflow-x-auto shr-overflow-y-hidden',\n },\n {\n direction: 'both',\n styleType: 'auto',\n className: 'shr-overflow-auto',\n },\n {\n direction: 'vertical',\n styleType: 'scroll',\n className: 'shr-overflow-x-hidden shr-overflow-y-scroll',\n },\n {\n direction: 'horizontal',\n styleType: 'scroll',\n className: 'shr-overflow-y-hidden shr-overflow-x-scroll',\n },\n {\n direction: 'both',\n styleType: 'scroll',\n className: 'shr-overflow-scroll',\n },\n ],\n})\n\nexport const Scroller = forwardRef<HTMLDivElement, Props>(\n (\n {\n as: Component = 'div',\n direction = 'vertical',\n styleType = 'auto',\n className,\n children,\n ...rest\n },\n ref,\n ) => {\n const wrapperRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => wrapperRef.current!)\n\n const [tabIndex, setTabIndex] = useState<0 | undefined>(undefined)\n\n const actualClassName = useMemo(\n () =>\n classNameGenerator({\n direction,\n styleType,\n className,\n }),\n [direction, styleType, className],\n )\n\n useEffect(() => {\n const refCurrent = wrapperRef.current\n if (!refCurrent) return\n\n const autoTabIndex = () => {\n let nextTabIndex: 0 | undefined = undefined\n\n switch (direction) {\n case 'vertical':\n nextTabIndex = refCurrent.scrollHeight > refCurrent.clientHeight ? 0 : undefined\n break\n case 'horizontal':\n nextTabIndex = refCurrent.scrollWidth > refCurrent.clientWidth ? 0 : undefined\n break\n case 'both':\n nextTabIndex =\n refCurrent.scrollHeight > refCurrent.clientHeight ||\n refCurrent.scrollWidth > refCurrent.clientWidth\n ? 0\n : undefined\n break\n }\n\n setTabIndex(nextTabIndex)\n }\n\n autoTabIndex()\n\n const resizeObserver = new ResizeObserver(autoTabIndex)\n resizeObserver.observe(refCurrent)\n\n return () => {\n resizeObserver.unobserve(refCurrent)\n }\n }, [direction])\n\n const Wrapper = useSectionWrapper(Component)\n const body = (\n <Component {...rest} ref={wrapperRef} className={actualClassName} tabIndex={tabIndex}>\n {children}\n </Component>\n )\n\n if (Wrapper) {\n return <Wrapper>{body}</Wrapper>\n }\n\n return body\n },\n)\n"],"names":[],"mappings":";;;;;;;;AAwBA;AACE;AACA;AACE;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACD;AACF;AACD;AACE;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACF;AACF;AAEM;AAYH;;;;;;;;;AAiBE;AACA;;;;;AAMI;AACE;;AAEF;AACE;;AAEF;;AAEI;AACA;AACE;;;;;AAMV;AAEA;AAEA;AACA;AAEA;AACE;AACF;AACF;AAEA;;;AAQE;;AAGF;AACF;;"}
|
|
@@ -14,7 +14,7 @@ const classNameGenerator = index.tv({
|
|
|
14
14
|
},
|
|
15
15
|
});
|
|
16
16
|
const TableReel = ({ className, children, tableWrapperRef, ...rest }) => {
|
|
17
|
-
const { showShadow } = components_Table_useReelCells.useReelCells(
|
|
17
|
+
const { showShadow } = components_Table_useReelCells.useReelCells(tableWrapperRef);
|
|
18
18
|
const classNames = React.useMemo(() => {
|
|
19
19
|
const { wrapper, inner } = classNameGenerator();
|
|
20
20
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableReel.cjs","sources":["../../../src/components/Table/TableReel.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentPropsWithRef, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { reelShadowClassNameGenerator } from './reelShadowStyle'\nimport { useReelCells } from './useReelCells'\n\ntype Props = PropsWithChildren &\n Omit<ComponentPropsWithRef<'div'>, keyof PropsWithChildren> & {\n tableWrapperRef: React.RefObject<HTMLDivElement>\n }\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-TableReel', 'shr-relative'],\n inner: ['smarthr-ui-TableReel-inner', 'shr-relative'],\n },\n})\n\nexport const TableReel: FC<Props> = ({ className, children, tableWrapperRef, ...rest }) => {\n const { showShadow } = useReelCells(
|
|
1
|
+
{"version":3,"file":"TableReel.cjs","sources":["../../../src/components/Table/TableReel.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentPropsWithRef, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { reelShadowClassNameGenerator } from './reelShadowStyle'\nimport { useReelCells } from './useReelCells'\n\ntype Props = PropsWithChildren &\n Omit<ComponentPropsWithRef<'div'>, keyof PropsWithChildren> & {\n tableWrapperRef: React.RefObject<HTMLDivElement>\n }\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-TableReel', 'shr-relative'],\n inner: ['smarthr-ui-TableReel-inner', 'shr-relative'],\n },\n})\n\nexport const TableReel: FC<Props> = ({ className, children, tableWrapperRef, ...rest }) => {\n const { showShadow } = useReelCells(tableWrapperRef)\n\n const classNames = useMemo(() => {\n const { wrapper, inner } = classNameGenerator()\n\n return {\n wrapper: reelShadowClassNameGenerator({ showShadow, className: wrapper({ className }) }),\n inner: inner(),\n }\n }, [className, showShadow])\n\n return (\n <div className={classNames.wrapper}>\n <div {...rest} className={classNames.inner}>\n {children}\n </div>\n </div>\n )\n}\n"],"names":[],"mappings":";;;;;;;;;AAaA;AACE;AACE;AACA;AACD;AACF;AAEM;;AAGL;;;AAII;;;AAGJ;;AASF;;"}
|
|
@@ -12,7 +12,7 @@ const classNameGenerator = ce({
|
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
14
|
const TableReel = ({ className, children, tableWrapperRef, ...rest }) => {
|
|
15
|
-
const { showShadow } = useReelCells(
|
|
15
|
+
const { showShadow } = useReelCells(tableWrapperRef);
|
|
16
16
|
const classNames = useMemo(() => {
|
|
17
17
|
const { wrapper, inner } = classNameGenerator();
|
|
18
18
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableReel.js","sources":["../../../src/components/Table/TableReel.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentPropsWithRef, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { reelShadowClassNameGenerator } from './reelShadowStyle'\nimport { useReelCells } from './useReelCells'\n\ntype Props = PropsWithChildren &\n Omit<ComponentPropsWithRef<'div'>, keyof PropsWithChildren> & {\n tableWrapperRef: React.RefObject<HTMLDivElement>\n }\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-TableReel', 'shr-relative'],\n inner: ['smarthr-ui-TableReel-inner', 'shr-relative'],\n },\n})\n\nexport const TableReel: FC<Props> = ({ className, children, tableWrapperRef, ...rest }) => {\n const { showShadow } = useReelCells(
|
|
1
|
+
{"version":3,"file":"TableReel.js","sources":["../../../src/components/Table/TableReel.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentPropsWithRef, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { reelShadowClassNameGenerator } from './reelShadowStyle'\nimport { useReelCells } from './useReelCells'\n\ntype Props = PropsWithChildren &\n Omit<ComponentPropsWithRef<'div'>, keyof PropsWithChildren> & {\n tableWrapperRef: React.RefObject<HTMLDivElement>\n }\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-TableReel', 'shr-relative'],\n inner: ['smarthr-ui-TableReel-inner', 'shr-relative'],\n },\n})\n\nexport const TableReel: FC<Props> = ({ className, children, tableWrapperRef, ...rest }) => {\n const { showShadow } = useReelCells(tableWrapperRef)\n\n const classNames = useMemo(() => {\n const { wrapper, inner } = classNameGenerator()\n\n return {\n wrapper: reelShadowClassNameGenerator({ showShadow, className: wrapper({ className }) }),\n inner: inner(),\n }\n }, [className, showShadow])\n\n return (\n <div className={classNames.wrapper}>\n <div {...rest} className={classNames.inner}>\n {children}\n </div>\n </div>\n )\n}\n"],"names":[],"mappings":";;;;;;;AAaA;AACE;AACE;AACA;AACD;AACF;AAEM;;AAGL;;;AAII;;;AAGJ;;AASF;;"}
|
|
@@ -7,14 +7,14 @@ var index = require('./../../vendor/.pnpm/tailwind-variants@0.3.1_tailwindcss@3.
|
|
|
7
7
|
require('../../themes/createSpacing.cjs');
|
|
8
8
|
var themes_createFontSize = require('../../themes/createFontSize.cjs');
|
|
9
9
|
require('../../themes/createColor.cjs');
|
|
10
|
-
require('../../themes/
|
|
11
|
-
require('
|
|
10
|
+
require('../../themes/createTextColor.cjs');
|
|
11
|
+
require('styled-components');
|
|
12
12
|
require('../../_virtual/index.cjs');
|
|
13
13
|
require('../../_virtual/index2.cjs');
|
|
14
|
+
require('../../themes/createShadow/defaultShadow.cjs');
|
|
15
|
+
require('../../themes/createWidth.cjs');
|
|
14
16
|
require('../../themes/createBackgroundColor.cjs');
|
|
15
17
|
require('../../themes/createBorder.cjs');
|
|
16
|
-
require('styled-components');
|
|
17
|
-
require('../../themes/createTextColor.cjs');
|
|
18
18
|
var components_Scroller_Scroller = require('../Scroller/Scroller.cjs');
|
|
19
19
|
|
|
20
20
|
const classNameGenerator = index.tv({
|
|
@@ -5,14 +5,14 @@ import { tv as ce } from './../../vendor/.pnpm/tailwind-variants@0.3.1_tailwindc
|
|
|
5
5
|
import '../../themes/createSpacing.js';
|
|
6
6
|
import { defaultHtmlFontSize } from '../../themes/createFontSize.js';
|
|
7
7
|
import '../../themes/createColor.js';
|
|
8
|
-
import '../../themes/
|
|
9
|
-
import '
|
|
8
|
+
import '../../themes/createTextColor.js';
|
|
9
|
+
import 'styled-components';
|
|
10
10
|
import '../../_virtual/index.js';
|
|
11
11
|
import '../../_virtual/index2.js';
|
|
12
|
+
import '../../themes/createShadow/defaultShadow.js';
|
|
13
|
+
import '../../themes/createWidth.js';
|
|
12
14
|
import '../../themes/createBackgroundColor.js';
|
|
13
15
|
import '../../themes/createBorder.js';
|
|
14
|
-
import 'styled-components';
|
|
15
|
-
import '../../themes/createTextColor.js';
|
|
16
16
|
import { Scroller } from '../Scroller/Scroller.js';
|
|
17
17
|
|
|
18
18
|
const classNameGenerator = ce({
|
|
@@ -6,7 +6,7 @@ const TR_SELECTOR = 'table tr';
|
|
|
6
6
|
const FIXED_LEFT_SELECTOR = '[data-fixed="left"]';
|
|
7
7
|
const FIXED_RIGHT_SELECTOR = '[data-fixed="right"]';
|
|
8
8
|
const HAS_FIXED_SELECTOR = `${TR_SELECTOR} ${FIXED_LEFT_SELECTOR},${TR_SELECTOR} ${FIXED_RIGHT_SELECTOR}`;
|
|
9
|
-
const useReelCells = (
|
|
9
|
+
const useReelCells = (tableWrapperRef) => {
|
|
10
10
|
const [showShadow, setShowShadow] = React.useState(false);
|
|
11
11
|
React.useEffect(() => {
|
|
12
12
|
const wrapper = tableWrapperRef.current;
|
|
@@ -61,16 +61,22 @@ const useReelCells = (children, tableWrapperRef) => {
|
|
|
61
61
|
};
|
|
62
62
|
handleScroll();
|
|
63
63
|
wrapper.addEventListener('scroll', handleScroll);
|
|
64
|
-
const
|
|
65
|
-
|
|
64
|
+
const resizeObserver = new ResizeObserver(handleScroll);
|
|
65
|
+
resizeObserver.observe(wrapper);
|
|
66
|
+
// HINT: Paginationと組み合わせた際などにテーブル構造の変更を検知して再生成
|
|
67
|
+
const mutationObserver = new MutationObserver(handleScroll);
|
|
68
|
+
mutationObserver.observe(wrapper, {
|
|
69
|
+
childList: true,
|
|
70
|
+
subtree: true,
|
|
71
|
+
});
|
|
66
72
|
return () => {
|
|
67
73
|
wrapper.removeEventListener('scroll', handleScroll);
|
|
68
|
-
|
|
74
|
+
resizeObserver.unobserve(wrapper);
|
|
75
|
+
mutationObserver.disconnect();
|
|
69
76
|
allClean();
|
|
70
77
|
};
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return { tableWrapperRef, showShadow };
|
|
78
|
+
}, [tableWrapperRef]);
|
|
79
|
+
return { showShadow };
|
|
74
80
|
};
|
|
75
81
|
|
|
76
82
|
exports.useReelCells = useReelCells;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReelCells.cjs","sources":["../../../src/components/Table/useReelCells.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useReelCells.cjs","sources":["../../../src/components/Table/useReelCells.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nconst TR_SELECTOR = 'table tr'\nconst FIXED_LEFT_SELECTOR = '[data-fixed=\"left\"]'\nconst FIXED_RIGHT_SELECTOR = '[data-fixed=\"right\"]'\n\nconst HAS_FIXED_SELECTOR = `${TR_SELECTOR} ${FIXED_LEFT_SELECTOR},${TR_SELECTOR} ${FIXED_RIGHT_SELECTOR}`\n\nexport const useReelCells = (tableWrapperRef: React.RefObject<HTMLDivElement>) => {\n const [showShadow, setShowShadow] = useState(false)\n\n useEffect(() => {\n const wrapper = tableWrapperRef.current\n\n if (!wrapper) {\n return\n }\n\n let cellCleans: Array<() => void> = []\n const allClean = () => {\n cellCleans.forEach((clean) => clean())\n cellCleans = []\n }\n\n const handleScroll = () => {\n if (!wrapper.querySelector(HAS_FIXED_SELECTOR)) {\n return\n }\n\n let isVisible = false\n const commonAction = (\n cells: HTMLElement[] | NodeListOf<HTMLElement>,\n direction: 'left' | 'right',\n visible: boolean,\n ) => {\n allClean()\n\n const action = () => {\n let position = 0\n\n cells.forEach((cell, index) => {\n if (cell.classList.toggle('fixed', visible)) {\n isVisible = true\n cell.style[direction] = `${position}px`\n cell.style.zIndex = (index + 1).toString()\n\n position += cell.offsetWidth\n }\n })\n }\n\n action()\n const observer = new ResizeObserver(action)\n\n cells.forEach((cell) => {\n observer.observe(cell)\n })\n\n cellCleans.push(() => {\n cells.forEach((cell) => {\n observer.unobserve(cell)\n })\n })\n }\n\n wrapper.querySelectorAll<HTMLElement>(TR_SELECTOR).forEach((tr) => {\n const leftCells = tr.querySelectorAll<HTMLElement>(FIXED_LEFT_SELECTOR)\n const rightCells = Array.from(\n tr.querySelectorAll<HTMLElement>(FIXED_RIGHT_SELECTOR),\n ).reverse()\n\n if (leftCells.length > 0) {\n commonAction(leftCells, 'left' as const, wrapper.scrollLeft > 0)\n }\n\n if (rightCells.length > 0) {\n commonAction(\n rightCells,\n 'right' as const,\n wrapper.scrollLeft < wrapper.scrollWidth - wrapper.clientWidth - 1,\n )\n }\n })\n\n setShowShadow(isVisible)\n }\n\n handleScroll()\n wrapper.addEventListener('scroll', handleScroll)\n\n const resizeObserver = new ResizeObserver(handleScroll)\n resizeObserver.observe(wrapper)\n\n // HINT: Paginationと組み合わせた際などにテーブル構造の変更を検知して再生成\n const mutationObserver = new MutationObserver(handleScroll)\n mutationObserver.observe(wrapper, {\n childList: true,\n subtree: true,\n })\n\n return () => {\n wrapper.removeEventListener('scroll', handleScroll)\n resizeObserver.unobserve(wrapper)\n mutationObserver.disconnect()\n allClean()\n }\n }, [tableWrapperRef])\n\n return { showShadow }\n}\n"],"names":["useState","useEffect"],"mappings":"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"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const useReelCells: (children: ReactNode, tableWrapperRef: React.RefObject<HTMLDivElement>) => {
|
|
3
|
-
tableWrapperRef: import("react").RefObject<HTMLDivElement>;
|
|
1
|
+
export declare const useReelCells: (tableWrapperRef: React.RefObject<HTMLDivElement>) => {
|
|
4
2
|
showShadow: boolean;
|
|
5
3
|
};
|
|
@@ -4,7 +4,7 @@ const TR_SELECTOR = 'table tr';
|
|
|
4
4
|
const FIXED_LEFT_SELECTOR = '[data-fixed="left"]';
|
|
5
5
|
const FIXED_RIGHT_SELECTOR = '[data-fixed="right"]';
|
|
6
6
|
const HAS_FIXED_SELECTOR = `${TR_SELECTOR} ${FIXED_LEFT_SELECTOR},${TR_SELECTOR} ${FIXED_RIGHT_SELECTOR}`;
|
|
7
|
-
const useReelCells = (
|
|
7
|
+
const useReelCells = (tableWrapperRef) => {
|
|
8
8
|
const [showShadow, setShowShadow] = useState(false);
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
const wrapper = tableWrapperRef.current;
|
|
@@ -59,16 +59,22 @@ const useReelCells = (children, tableWrapperRef) => {
|
|
|
59
59
|
};
|
|
60
60
|
handleScroll();
|
|
61
61
|
wrapper.addEventListener('scroll', handleScroll);
|
|
62
|
-
const
|
|
63
|
-
|
|
62
|
+
const resizeObserver = new ResizeObserver(handleScroll);
|
|
63
|
+
resizeObserver.observe(wrapper);
|
|
64
|
+
// HINT: Paginationと組み合わせた際などにテーブル構造の変更を検知して再生成
|
|
65
|
+
const mutationObserver = new MutationObserver(handleScroll);
|
|
66
|
+
mutationObserver.observe(wrapper, {
|
|
67
|
+
childList: true,
|
|
68
|
+
subtree: true,
|
|
69
|
+
});
|
|
64
70
|
return () => {
|
|
65
71
|
wrapper.removeEventListener('scroll', handleScroll);
|
|
66
|
-
|
|
72
|
+
resizeObserver.unobserve(wrapper);
|
|
73
|
+
mutationObserver.disconnect();
|
|
67
74
|
allClean();
|
|
68
75
|
};
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return { tableWrapperRef, showShadow };
|
|
76
|
+
}, [tableWrapperRef]);
|
|
77
|
+
return { showShadow };
|
|
72
78
|
};
|
|
73
79
|
|
|
74
80
|
export { useReelCells };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReelCells.js","sources":["../../../src/components/Table/useReelCells.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useReelCells.js","sources":["../../../src/components/Table/useReelCells.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nconst TR_SELECTOR = 'table tr'\nconst FIXED_LEFT_SELECTOR = '[data-fixed=\"left\"]'\nconst FIXED_RIGHT_SELECTOR = '[data-fixed=\"right\"]'\n\nconst HAS_FIXED_SELECTOR = `${TR_SELECTOR} ${FIXED_LEFT_SELECTOR},${TR_SELECTOR} ${FIXED_RIGHT_SELECTOR}`\n\nexport const useReelCells = (tableWrapperRef: React.RefObject<HTMLDivElement>) => {\n const [showShadow, setShowShadow] = useState(false)\n\n useEffect(() => {\n const wrapper = tableWrapperRef.current\n\n if (!wrapper) {\n return\n }\n\n let cellCleans: Array<() => void> = []\n const allClean = () => {\n cellCleans.forEach((clean) => clean())\n cellCleans = []\n }\n\n const handleScroll = () => {\n if (!wrapper.querySelector(HAS_FIXED_SELECTOR)) {\n return\n }\n\n let isVisible = false\n const commonAction = (\n cells: HTMLElement[] | NodeListOf<HTMLElement>,\n direction: 'left' | 'right',\n visible: boolean,\n ) => {\n allClean()\n\n const action = () => {\n let position = 0\n\n cells.forEach((cell, index) => {\n if (cell.classList.toggle('fixed', visible)) {\n isVisible = true\n cell.style[direction] = `${position}px`\n cell.style.zIndex = (index + 1).toString()\n\n position += cell.offsetWidth\n }\n })\n }\n\n action()\n const observer = new ResizeObserver(action)\n\n cells.forEach((cell) => {\n observer.observe(cell)\n })\n\n cellCleans.push(() => {\n cells.forEach((cell) => {\n observer.unobserve(cell)\n })\n })\n }\n\n wrapper.querySelectorAll<HTMLElement>(TR_SELECTOR).forEach((tr) => {\n const leftCells = tr.querySelectorAll<HTMLElement>(FIXED_LEFT_SELECTOR)\n const rightCells = Array.from(\n tr.querySelectorAll<HTMLElement>(FIXED_RIGHT_SELECTOR),\n ).reverse()\n\n if (leftCells.length > 0) {\n commonAction(leftCells, 'left' as const, wrapper.scrollLeft > 0)\n }\n\n if (rightCells.length > 0) {\n commonAction(\n rightCells,\n 'right' as const,\n wrapper.scrollLeft < wrapper.scrollWidth - wrapper.clientWidth - 1,\n )\n }\n })\n\n setShowShadow(isVisible)\n }\n\n handleScroll()\n wrapper.addEventListener('scroll', handleScroll)\n\n const resizeObserver = new ResizeObserver(handleScroll)\n resizeObserver.observe(wrapper)\n\n // HINT: Paginationと組み合わせた際などにテーブル構造の変更を検知して再生成\n const mutationObserver = new MutationObserver(handleScroll)\n mutationObserver.observe(wrapper, {\n childList: true,\n subtree: true,\n })\n\n return () => {\n wrapper.removeEventListener('scroll', handleScroll)\n resizeObserver.unobserve(wrapper)\n mutationObserver.disconnect()\n allClean()\n }\n }, [tableWrapperRef])\n\n return { showShadow }\n}\n"],"names":[],"mappings":";;AAEA,MAAM,WAAW,GAAG,UAAU;AAC9B,MAAM,mBAAmB,GAAG,qBAAqB;AACjD,MAAM,oBAAoB,GAAG,sBAAsB;AAEnD,MAAM,kBAAkB,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,mBAAmB,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,oBAAoB,CAAA,CAAE;AAElG,MAAM,YAAY,GAAG,CAAC,eAAgD,KAAI;IAC/E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAEnD,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO;QAEvC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;QAEA,IAAI,UAAU,GAAsB,EAAE;QACtC,MAAM,QAAQ,GAAG,MAAK;YACpB,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACtC,UAAU,GAAG,EAAE;AACjB,QAAA,CAAC;QAED,MAAM,YAAY,GAAG,MAAK;YACxB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;gBAC9C;YACF;YAEA,IAAI,SAAS,GAAG,KAAK;YACrB,MAAM,YAAY,GAAG,CACnB,KAA8C,EAC9C,SAA2B,EAC3B,OAAgB,KACd;AACF,gBAAA,QAAQ,EAAE;gBAEV,MAAM,MAAM,GAAG,MAAK;oBAClB,IAAI,QAAQ,GAAG,CAAC;oBAEhB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;wBAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;4BAC3C,SAAS,GAAG,IAAI;4BAChB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI;AACvC,4BAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE;AAE1C,4BAAA,QAAQ,IAAI,IAAI,CAAC,WAAW;wBAC9B;AACF,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC;AAED,gBAAA,MAAM,EAAE;AACR,gBAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC;AAE3C,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,oBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACxB,gBAAA,CAAC,CAAC;AAEF,gBAAA,UAAU,CAAC,IAAI,CAAC,MAAK;AACnB,oBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,wBAAA,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC;YAED,OAAO,CAAC,gBAAgB,CAAc,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;gBAChE,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAc,mBAAmB,CAAC;AACvE,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B,EAAE,CAAC,gBAAgB,CAAc,oBAAoB,CAAC,CACvD,CAAC,OAAO,EAAE;AAEX,gBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxB,YAAY,CAAC,SAAS,EAAE,MAAe,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;gBAClE;AAEA,gBAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,oBAAA,YAAY,CACV,UAAU,EACV,OAAgB,EAChB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CACnE;gBACH;AACF,YAAA,CAAC,CAAC;YAEF,aAAa,CAAC,SAAS,CAAC;AAC1B,QAAA,CAAC;AAED,QAAA,YAAY,EAAE;AACd,QAAA,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;AAEhD,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC;AACvD,QAAA,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;;AAG/B,QAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC;AAC3D,QAAA,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE;AAChC,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC;AAEF,QAAA,OAAO,MAAK;AACV,YAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC;AACnD,YAAA,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;YACjC,gBAAgB,CAAC,UAAU,EAAE;AAC7B,YAAA,QAAQ,EAAE;AACZ,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAErB,OAAO,EAAE,UAAU,EAAE;AACvB;;;;"}
|
|
@@ -153,7 +153,9 @@ const ActualText = ({ emphasis, styleType, icon: orgIcon, weight = emphasis ? 'b
|
|
|
153
153
|
className,
|
|
154
154
|
});
|
|
155
155
|
}, [size, weight, italic, color, leading, whiteSpace, maxLines, className, styleType]);
|
|
156
|
-
const
|
|
156
|
+
const hasIcon = !!icon;
|
|
157
|
+
const iconGap = icon?.gap;
|
|
158
|
+
const wrapperClassName = React.useMemo(() => (hasIcon ? wrapperClassNameGenerator({ gap: iconGap || 0.25 }) : ''), [hasIcon, iconGap]);
|
|
157
159
|
return (jsxRuntime.jsx(Component, { ...rest, className: actualClassName, children: icon ? (jsxRuntime.jsxs("span", { className: wrapperClassName, children: [icon.prefix, children, icon.suffix] })) : (children) }));
|
|
158
160
|
};
|
|
159
161
|
const Text = React.memo(ActualText);
|