@salt-ds/core 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cjs/packages/core/src/avatar/Avatar.js +11 -3
- package/dist-cjs/packages/core/src/avatar/Avatar.js.map +1 -1
- package/dist-cjs/packages/core/src/avatar/useAvatarImage.js +38 -0
- package/dist-cjs/packages/core/src/avatar/useAvatarImage.js.map +1 -0
- package/dist-cjs/packages/core/src/card/Card.css.js +1 -1
- package/dist-cjs/packages/core/src/card/Card.js +1 -1
- package/dist-cjs/packages/core/src/card/Card.js.map +1 -1
- package/dist-cjs/packages/core/src/card/InteractableCard.css.js +9 -0
- package/dist-cjs/packages/core/src/card/InteractableCard.css.js.map +1 -0
- package/dist-cjs/packages/core/src/card/InteractableCard.js +57 -0
- package/dist-cjs/packages/core/src/card/InteractableCard.js.map +1 -0
- package/dist-cjs/packages/core/src/card/useInteractableCard.js +63 -0
- package/dist-cjs/packages/core/src/card/useInteractableCard.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.css.js +9 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.css.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.js +95 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.css.js +9 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.css.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.js +62 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.css.js +9 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.css.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.js +48 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js +33 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js +32 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js +37 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js +26 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/internal/CheckboxGroupContext.js +13 -0
- package/dist-cjs/packages/core/src/checkbox/internal/CheckboxGroupContext.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/internal/useCheckboxGroup.js +13 -0
- package/dist-cjs/packages/core/src/checkbox/internal/useCheckboxGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/index.js +18 -0
- package/dist-cjs/packages/core/src/index.js.map +1 -1
- package/dist-cjs/packages/core/src/link/Link.css.js +1 -1
- package/dist-cjs/packages/core/src/link/Link.js +1 -1
- package/dist-cjs/packages/core/src/link/Link.js.map +1 -1
- package/dist-cjs/packages/core/src/panel/Panel.css.js +1 -1
- package/dist-cjs/packages/core/src/radio-button/RadioButton.css.js +9 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButton.css.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButton.js +86 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButton.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.css.js +9 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.css.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.js +61 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.css.js +9 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.css.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.js +48 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/internal/RadioGroupContext.js +18 -0
- package/dist-cjs/packages/core/src/radio-button/internal/RadioGroupContext.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/internal/useRadioGroup.js +13 -0
- package/dist-cjs/packages/core/src/radio-button/internal/useRadioGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/text/Text.css.js +1 -1
- package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js +1 -1
- package/dist-cjs/packages/core/src/tooltip/Tooltip.js +12 -6
- package/dist-cjs/packages/core/src/tooltip/Tooltip.js.map +1 -1
- package/dist-cjs/packages/core/src/tooltip/useTooltip.js +1 -0
- package/dist-cjs/packages/core/src/tooltip/useTooltip.js.map +1 -1
- package/dist-cjs/packages/core/src/utils/capitalize.js +10 -0
- package/dist-cjs/packages/core/src/utils/capitalize.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useFloatingUI.js.map +1 -1
- package/dist-es/packages/core/src/avatar/Avatar.js +11 -3
- package/dist-es/packages/core/src/avatar/Avatar.js.map +1 -1
- package/dist-es/packages/core/src/avatar/useAvatarImage.js +34 -0
- package/dist-es/packages/core/src/avatar/useAvatarImage.js.map +1 -0
- package/dist-es/packages/core/src/card/Card.css.js +1 -1
- package/dist-es/packages/core/src/card/Card.js +1 -1
- package/dist-es/packages/core/src/card/Card.js.map +1 -1
- package/dist-es/packages/core/src/card/InteractableCard.css.js +7 -0
- package/dist-es/packages/core/src/card/InteractableCard.css.js.map +1 -0
- package/dist-es/packages/core/src/card/InteractableCard.js +53 -0
- package/dist-es/packages/core/src/card/InteractableCard.js.map +1 -0
- package/dist-es/packages/core/src/card/useInteractableCard.js +59 -0
- package/dist-es/packages/core/src/card/useInteractableCard.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.css.js +7 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.css.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.js +91 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.css.js +7 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.css.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.js +58 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.css.js +7 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.css.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.js +44 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js +29 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js +28 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js +33 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js +22 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/internal/CheckboxGroupContext.js +9 -0
- package/dist-es/packages/core/src/checkbox/internal/CheckboxGroupContext.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/internal/useCheckboxGroup.js +9 -0
- package/dist-es/packages/core/src/checkbox/internal/useCheckboxGroup.js.map +1 -0
- package/dist-es/packages/core/src/index.js +9 -0
- package/dist-es/packages/core/src/index.js.map +1 -1
- package/dist-es/packages/core/src/link/Link.css.js +1 -1
- package/dist-es/packages/core/src/link/Link.js +1 -1
- package/dist-es/packages/core/src/link/Link.js.map +1 -1
- package/dist-es/packages/core/src/panel/Panel.css.js +1 -1
- package/dist-es/packages/core/src/radio-button/RadioButton.css.js +7 -0
- package/dist-es/packages/core/src/radio-button/RadioButton.css.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButton.js +82 -0
- package/dist-es/packages/core/src/radio-button/RadioButton.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.css.js +7 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.css.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.js +57 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.css.js +7 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.css.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.js +44 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/internal/RadioGroupContext.js +14 -0
- package/dist-es/packages/core/src/radio-button/internal/RadioGroupContext.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/internal/useRadioGroup.js +9 -0
- package/dist-es/packages/core/src/radio-button/internal/useRadioGroup.js.map +1 -0
- package/dist-es/packages/core/src/text/Text.css.js +1 -1
- package/dist-es/packages/core/src/tooltip/Tooltip.css.js +1 -1
- package/dist-es/packages/core/src/tooltip/Tooltip.js +12 -6
- package/dist-es/packages/core/src/tooltip/Tooltip.js.map +1 -1
- package/dist-es/packages/core/src/tooltip/useTooltip.js +1 -0
- package/dist-es/packages/core/src/tooltip/useTooltip.js.map +1 -1
- package/dist-es/packages/core/src/utils/capitalize.js +6 -0
- package/dist-es/packages/core/src/utils/capitalize.js.map +1 -0
- package/dist-es/packages/core/src/utils/useFloatingUI.js.map +1 -1
- package/dist-types/avatar/index.d.ts +1 -0
- package/dist-types/avatar/useAvatarImage.d.ts +2 -0
- package/dist-types/card/Card.d.ts +4 -4
- package/dist-types/card/InteractableCard.d.ts +14 -0
- package/dist-types/card/index.d.ts +1 -0
- package/dist-types/card/useInteractableCard.d.ts +21 -0
- package/dist-types/checkbox/Checkbox.d.ts +56 -0
- package/dist-types/checkbox/CheckboxGroup.d.ts +30 -0
- package/dist-types/checkbox/CheckboxIcon.d.ts +10 -0
- package/dist-types/checkbox/assets/CheckboxCheckedIcon.d.ts +4 -0
- package/dist-types/checkbox/assets/CheckboxCheckedIconHD.d.ts +4 -0
- package/dist-types/checkbox/assets/CheckboxIndeterminateIcon.d.ts +4 -0
- package/dist-types/checkbox/assets/CheckboxUncheckedIcon.d.ts +4 -0
- package/dist-types/checkbox/assets/index.d.ts +4 -0
- package/dist-types/checkbox/index.d.ts +3 -0
- package/dist-types/checkbox/internal/CheckboxGroupContext.d.ts +9 -0
- package/dist-types/checkbox/internal/useCheckboxGroup.d.ts +2 -0
- package/dist-types/index.d.ts +2 -0
- package/dist-types/link/Link.d.ts +1 -1
- package/dist-types/radio-button/RadioButton.d.ts +45 -0
- package/dist-types/radio-button/RadioButtonGroup.d.ts +29 -0
- package/dist-types/radio-button/RadioButtonIcon.d.ts +11 -0
- package/dist-types/radio-button/index.d.ts +3 -0
- package/dist-types/radio-button/internal/RadioGroupContext.d.ts +7 -0
- package/dist-types/radio-button/internal/useRadioGroup.d.ts +1 -0
- package/dist-types/tooltip/Tooltip.d.ts +10 -10
- package/dist-types/tooltip/useTooltip.d.ts +19 -1
- package/dist-types/utils/capitalize.d.ts +1 -0
- package/dist-types/utils/index.d.ts +1 -0
- package/dist-types/utils/useFloatingUI.d.ts +3 -3
- package/package.json +2 -2
- package/dist-cjs/packages/core/src/avatar/internal/useLoaded.js +0 -30
- package/dist-cjs/packages/core/src/avatar/internal/useLoaded.js.map +0 -1
- package/dist-es/packages/core/src/avatar/internal/useLoaded.js +0 -26
- package/dist-es/packages/core/src/avatar/internal/useLoaded.js.map +0 -1
- package/dist-types/avatar/internal/useLoaded.d.ts +0 -2
|
@@ -6,7 +6,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
var icons = require('@salt-ds/icons');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
8
|
var React = require('react');
|
|
9
|
-
var
|
|
9
|
+
var useAvatarImage = require('./useAvatarImage.js');
|
|
10
10
|
var makePrefixer = require('../utils/makePrefixer.js');
|
|
11
11
|
require('../utils/useFloatingUI.js');
|
|
12
12
|
require('../utils/useId.js');
|
|
@@ -25,7 +25,9 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
25
25
|
src,
|
|
26
26
|
size = DEFAULT_AVATAR_SIZE,
|
|
27
27
|
style: styleProp,
|
|
28
|
-
fallbackIcon = /* @__PURE__ */ jsxRuntime.jsx(icons.UserSolidIcon, {
|
|
28
|
+
fallbackIcon = /* @__PURE__ */ jsxRuntime.jsx(icons.UserSolidIcon, {
|
|
29
|
+
"aria-label": "User Avatar"
|
|
30
|
+
}),
|
|
29
31
|
...rest
|
|
30
32
|
}, ref) {
|
|
31
33
|
let children;
|
|
@@ -33,7 +35,8 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
33
35
|
...styleProp,
|
|
34
36
|
"--saltAvatar-size-multiplier": `${size}`
|
|
35
37
|
};
|
|
36
|
-
const
|
|
38
|
+
const status = useAvatarImage.useAvatarImage({ src });
|
|
39
|
+
const hasImgNotFailing = status === "loaded";
|
|
37
40
|
if (hasImgNotFailing) {
|
|
38
41
|
children = /* @__PURE__ */ jsxRuntime.jsx("img", {
|
|
39
42
|
alt: name,
|
|
@@ -43,6 +46,10 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
43
46
|
children = childrenProp;
|
|
44
47
|
}
|
|
45
48
|
const avatarInitials = nameToInitials(name);
|
|
49
|
+
const initialsProps = avatarInitials ? {
|
|
50
|
+
role: "img",
|
|
51
|
+
"aria-label": name
|
|
52
|
+
} : {};
|
|
46
53
|
return /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
47
54
|
ref,
|
|
48
55
|
style,
|
|
@@ -51,6 +58,7 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
51
58
|
{ [withBaseName("withImage")]: hasImgNotFailing },
|
|
52
59
|
className
|
|
53
60
|
),
|
|
61
|
+
...initialsProps,
|
|
54
62
|
...rest,
|
|
55
63
|
children: children || avatarInitials || fallbackIcon
|
|
56
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { UserSolidIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { UserSolidIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, ReactNode } from \"react\";\nimport { useAvatarImage } from \"./useAvatarImage\";\nimport { makePrefixer } from \"../utils\";\n\nimport \"./Avatar.css\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`\n */\n fallbackIcon?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon = <UserSolidIcon aria-label=\"User Avatar\" />,\n ...rest\n },\n ref\n) {\n let children;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt={name} src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const initialsProps = avatarInitials\n ? {\n role: \"img\",\n \"aria-label\": name,\n }\n : {};\n\n return (\n <div\n ref={ref}\n style={style}\n className={clsx(\n withBaseName(),\n { [withBaseName(\"withImage\")]: hasImgNotFailing },\n className\n )}\n {...initialsProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","Avatar","jsx","UserSolidIcon","useAvatarImage","clsx"],"mappings":";;;;;;;;;;;;;;;;AAkCA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA,CAAA;AAC9C,MAAM,mBAAsB,GAAA,CAAA,CAAA;AAE5B,MAAM,qBAAwB,GAAA,CAAC,IAC7B,KAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CACI,MAAM,GACP,CAAA,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAA,CACT,IAAI,CAAC,CAAA,KAAM,CAAE,CAAA,CAAA,CAAA,CAAA,CACb,KAAK,EACL,CAAA,CAAA,WAAA,EAAA,CAAA;AAEQ,MAAA,MAAA,GAASC,gBAAwC,CAAA,SAASC,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAU,EAAA,YAAA;AAAA,EACV,IAAA;AAAA,EACA,cAAiB,GAAA,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAO,GAAA,mBAAA;AAAA,EACP,KAAO,EAAA,SAAA;AAAA,EACP,+BAAgBC,cAAA,CAAAC,mBAAA,EAAA;AAAA,IAAc,YAAW,EAAA,aAAA;AAAA,GAAc,CAAA;AAAA,EACpD,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAI,IAAA,QAAA,CAAA;AAEJ,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,gCAAgC,CAAG,EAAA,IAAA,CAAA,CAAA;AAAA,GACrC,CAAA;AAEA,EAAA,MAAM,MAAS,GAAAC,6BAAA,CAAe,EAAE,GAAA,EAAK,CAAA,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAW,KAAA,QAAA,CAAA;AACpC,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,QAAA,mBAAYF,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,GAAK,EAAA,IAAA;AAAA,MAAM,GAAA;AAAA,KAAU,CAAA,CAAA;AAAA,GACvC,MAAA,IAAW,gBAAgB,IAAM,EAAA;AAC/B,IAAW,QAAA,GAAA,YAAA,CAAA;AAAA,GACb;AAEA,EAAM,MAAA,cAAA,GAAiB,eAAe,IAAI,CAAA,CAAA;AAE1C,EAAA,MAAM,gBAAgB,cAClB,GAAA;AAAA,IACE,IAAM,EAAA,KAAA;AAAA,IACN,YAAc,EAAA,IAAA;AAAA,MAEhB,EAAC,CAAA;AAEL,EAAA,uBACGA,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAW,EAAAG,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,EAAE,CAAC,YAAa,CAAA,WAAW,IAAI,gBAAiB,EAAA;AAAA,MAChD,SAAA;AAAA,KACF;AAAA,IACC,GAAG,aAAA;AAAA,IACH,GAAG,IAAA;AAAA,IAEH,sBAAY,cAAkB,IAAA,YAAA;AAAA,GACjC,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
require('../utils/useFloatingUI.js');
|
|
7
|
+
require('../utils/useId.js');
|
|
8
|
+
var useIsomorphicLayoutEffect = require('../utils/useIsomorphicLayoutEffect.js');
|
|
9
|
+
require('../salt-provider/SaltProvider.js');
|
|
10
|
+
require('../viewport/ViewportProvider.js');
|
|
11
|
+
|
|
12
|
+
function useAvatarImage({ src }) {
|
|
13
|
+
const [status, setStatus] = React.useState("loading");
|
|
14
|
+
React.useEffect(() => {
|
|
15
|
+
setStatus(src ? "loading" : "pending");
|
|
16
|
+
}, [src]);
|
|
17
|
+
useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
|
|
18
|
+
if (!src) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
let active = true;
|
|
22
|
+
const image = new Image();
|
|
23
|
+
image.src = src;
|
|
24
|
+
const onLoad = () => active && setStatus("loaded");
|
|
25
|
+
const onError = () => active && setStatus("error");
|
|
26
|
+
image.addEventListener("load", onLoad, { once: true });
|
|
27
|
+
image.addEventListener("error", onError, { once: true });
|
|
28
|
+
return () => {
|
|
29
|
+
image.removeEventListener("load", onLoad);
|
|
30
|
+
image.removeEventListener("load", onError);
|
|
31
|
+
active = false;
|
|
32
|
+
};
|
|
33
|
+
}, [src]);
|
|
34
|
+
return status;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
exports.useAvatarImage = useAvatarImage;
|
|
38
|
+
//# sourceMappingURL=useAvatarImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAvatarImage.js","sources":["../src/avatar/useAvatarImage.ts"],"sourcesContent":["import { ImgHTMLAttributes, useEffect, useState } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nexport function useAvatarImage({ src }: ImgHTMLAttributes<HTMLImageElement>) {\n const [status, setStatus] = useState<\n \"pending\" | \"loading\" | \"loaded\" | \"error\"\n >(\"loading\");\n\n useEffect(() => {\n setStatus(src ? \"loading\" : \"pending\");\n }, [src]);\n\n useIsomorphicLayoutEffect(() => {\n if (!src) {\n return;\n }\n\n let active = true;\n const image = new Image();\n image.src = src;\n const onLoad = () => active && setStatus(\"loaded\");\n const onError = () => active && setStatus(\"error\");\n\n image.addEventListener(\"load\", onLoad, { once: true });\n image.addEventListener(\"error\", onError, { once: true });\n\n return () => {\n image.removeEventListener(\"load\", onLoad);\n image.removeEventListener(\"load\", onError);\n active = false;\n };\n }, [src]);\n\n return status;\n}\n"],"names":["useState","useEffect","useIsomorphicLayoutEffect"],"mappings":";;;;;;;;;;;AAGgB,SAAA,cAAA,CAAe,EAAE,GAAA,EAA4C,EAAA;AAC3E,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAE1B,SAAS,CAAA,CAAA;AAEX,EAAAC,eAAA,CAAU,MAAM;AACd,IAAU,SAAA,CAAA,GAAA,GAAM,YAAY,SAAS,CAAA,CAAA;AAAA,GACvC,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AAER,EAAAC,mDAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AACb,IAAM,MAAA,KAAA,GAAQ,IAAI,KAAM,EAAA,CAAA;AACxB,IAAA,KAAA,CAAM,GAAM,GAAA,GAAA,CAAA;AACZ,IAAA,MAAM,MAAS,GAAA,MAAM,MAAU,IAAA,SAAA,CAAU,QAAQ,CAAA,CAAA;AACjD,IAAA,MAAM,OAAU,GAAA,MAAM,MAAU,IAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAEjD,IAAA,KAAA,CAAM,iBAAiB,MAAQ,EAAA,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AACrD,IAAA,KAAA,CAAM,iBAAiB,OAAS,EAAA,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AAEvD,IAAA,OAAO,MAAM;AACX,MAAM,KAAA,CAAA,mBAAA,CAAoB,QAAQ,MAAM,CAAA,CAAA;AACxC,MAAM,KAAA,CAAA,mBAAA,CAAoB,QAAQ,OAAO,CAAA,CAAA;AACzC,MAAS,MAAA,GAAA,KAAA,CAAA;AAAA,KACX,CAAA;AAAA,GACF,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AAER,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
|
|
4
4
|
|
|
5
|
-
var css_248z = "/* Styles applied to the root element */\n.saltCard {\n
|
|
5
|
+
var css_248z = "/* Styles applied to the root element */\n.saltCard {\n background: var(--saltCard-background, var(--salt-container-primary-background));\n box-shadow: var(--saltCard-boxShadow, var(--salt-overlayable-shadow));\n color: var(--saltCard-color, var(--salt-text-primary-foreground));\n height: var(--saltCard-height, auto);\n min-height: var(--saltCard-minHeight, 100%);\n overflow: hidden;\n}\n\n/* Styles applied to Card content */\n.saltCard-content {\n height: 100%;\n padding: var(--saltCard-padding, var(--salt-size-container-spacing));\n}\n\n/*\n * **Deprecated:** The following styles are deprecated\n * Use Interactable Card component instead \n * for interactable styling \n */\n\n/* **Deprecated:** Styles applied if `interactable={true}` */\n.saltCard-interactable {\n display: block;\n transition: none;\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` */\na:focus .saltCard-interactable,\n.saltCard-interactable:hover {\n box-shadow: var(--saltCard-boxShadow-hover, var(--salt-overlayable-shadow-hover));\n cursor: var(--saltCard-cursor-hover, var(--salt-selectable-cursor-hover));\n position: relative;\n}\n\n/* **Deprecated:** Styles applied on active state if `interactable={true}` */\n.saltCard-interactable:active {\n box-shadow: var(--saltCard-boxShadow-active, var(--salt-overlayable-shadow-hover));\n outline: var(--salt-focused-outline);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` and `disabled={true}` */\na:focus .saltCard-interactable.saltCard-disabled,\n.saltCard-interactable.saltCard-disabled:hover,\n.saltCard-interactable.saltCard-disabled:active {\n box-shadow: var(--saltCard-boxShadow-disabled, var(--salt-overlayable-shadow));\n}\n\n/* **Deprecated:** Styles applied if `disabled={true}` */\n.saltCard-disabled,\n.saltCard-disabled.saltCard-interactable,\na:focus .saltCard-interactable.saltCard-disabled {\n color: var(--saltCard-color-disabled, var(--salt-text-primary-foreground-disabled));\n cursor: var(--saltCard-cursor-disabled, var(--salt-selectable-cursor-disabled));\n outline: none;\n}\n\n/* **Deprecated:** Styles applied to nested divs if `disabled={true}` */\n.saltCard-disabled div {\n pointer-events: none;\n}\n";
|
|
6
6
|
styleInject_es(css_248z);
|
|
7
7
|
|
|
8
8
|
module.exports = css_248z;
|
|
@@ -14,7 +14,7 @@ require('./Card.css.js');
|
|
|
14
14
|
|
|
15
15
|
const withBaseName = makePrefixer.makePrefixer("saltCard");
|
|
16
16
|
const Card = React.forwardRef(function Card2(props, ref) {
|
|
17
|
-
const { className, disabled, interactable,
|
|
17
|
+
const { className, children, disabled, interactable, ...rest } = props;
|
|
18
18
|
return /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
19
19
|
className: clsx.clsx(
|
|
20
20
|
withBaseName(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sources":["../src/card/Card.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport \"./Card.css\";\n\nconst withBaseName = makePrefixer(\"saltCard\");\
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../src/card/Card.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport \"./Card.css\";\n\nconst withBaseName = makePrefixer(\"saltCard\");\nexport interface CardProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * **Deprecated:** Use the InteractableCard component instead\n *\n * If `true`, the card will be disabled.\n */\n disabled?: boolean;\n /**\n * **Deprecated:** Use the InteractableCard component instead\n *\n * If `true`, interactive styles will be applied to `Card`. These styles give prominence to certain content\n * on the page.\n */\n interactable?: boolean;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n props,\n ref\n) {\n const { className, children, disabled, interactable, ...rest } = props;\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n /* **Deprecated:** InteractableCard should be used instead for these features */\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"interactable\")]: interactable,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n <div className={withBaseName(\"content\")}>{children}</div>\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","Card","jsx","clsx"],"mappings":";;;;;;;;;;;;;;AAKA,MAAM,YAAA,GAAeA,0BAAa,UAAU,CAAA,CAAA;AAiBrC,MAAM,IAAO,GAAAC,gBAAA,CAAsC,SAASC,KAAAA,CACjE,OACA,GACA,EAAA;AACA,EAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,QAAU,EAAA,YAAA,EAAA,GAAiB,MAAS,GAAA,KAAA,CAAA;AACjE,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QAEE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,OAClC;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,GAAA;AAAA,IACC,GAAG,IAAA;AAAA,IAEJ,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MAAI,QAAA;AAAA,KAAS,CAAA;AAAA,GACrD,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
|
|
4
|
+
|
|
5
|
+
var css_248z = "/* Styles applied to InteractableCard */\n.saltInteractableCard {\n border-width: var(--saltCard-borderWidth, var(--card-borderWidth));\n border-style: var(--saltCard-borderStyle, var(--salt-container-borderStyle));\n border-color: var(--saltCard-borderColor, var(--salt-accent-borderColor));\n border-radius: var(--saltCard-borderRadius, 0);\n display: block;\n transition: box-shadow var(--salt-duration-instant) cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"bottom\"` (default) */\n.saltInteractableCard-accentBottom {\n --card-borderWidth: 0 0 var(--salt-size-accent) 0;\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"left\"` */\n.saltInteractableCard-accentLeft {\n --card-borderWidth: 0 0 0 var(--salt-size-accent);\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"top\"` */\n.saltInteractableCard-accentTop {\n --card-borderWidth: var(--salt-size-accent) 0 0 0;\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"right\"` */\n.saltInteractableCard-accentRight {\n --card-borderWidth: 0 var(--salt-size-accent) 0 0;\n}\n\n/* Styles applied to InteractableCard on focus */\na:focus-visible .saltInteractableCard,\n.saltInteractableCard:focus-visible {\n cursor: var(--saltCard-interactable-cursor-focus, var(--salt-selectable-cursor-hover));\n box-shadow: var(--saltCard-interactable-shadow-focus, var(--salt-overlayable-shadow-hover));\n color: var(--saltCard-color-focus, var(--salt-text-primary-foreground));\n outline-color: var(--salt-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* Styles applied on active state to InteractableCard */\n.saltInteractableCard:active {\n cursor: var(--saltCard-interactable-cursor-active, var(--salt-selectable-cursor-active));\n box-shadow: var(--saltCard-interactable-shadow-active, var(--salt-overlayable-shadow-hover));\n}\n\n/* Styles applied on hover state to InteractableCard */\n.saltInteractableCard:hover {\n cursor: var(--saltCard-interactable-cursor-hover, var(--salt-selectable-cursor-hover));\n box-shadow: var(--saltCard-interactable-shadow-hover, var(--salt-overlayable-shadow-hover));\n}\n\n/* Styles applied to InteractableCard if `disabled={true}` */\n.saltInteractableCard-disabled,\n.saltInteractableCard-disabled:focus,\n.saltInteractableCard-disabled:hover,\n.saltInteractableCard-disabled:active {\n border-color: var(--saltCard-borderColor-disabled, var(--salt-accent-borderColor-disabled));\n box-shadow: var(--saltCard-interactable-shadow, var(--salt-overlayable-shadow));\n background: var(--saltCard-background-disabled, var(--salt-container-primary-background-disabled));\n color: var(--saltCard-color-disabled, var(--salt-text-primary-foreground-disabled));\n cursor: var(--saltCard-interactable-cursor-disabled, var(--salt-selectable-cursor-disabled));\n outline: none;\n}\n\n/* Styles applied to nested divs in InteractableCard if `disabled={true}` */\n.saltInteractableCard-disabled div {\n pointer-events: none;\n}\n\n/* Class that can be used for anchor tags wrapping InteractableCard */\n.saltInteractableCard-link {\n color: var(--saltCard-link-color, var(--salt-text-primary-foreground));\n inset: var(--salt-focused-outlineInset);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n}\n";
|
|
6
|
+
styleInject_es(css_248z);
|
|
7
|
+
|
|
8
|
+
module.exports = css_248z;
|
|
9
|
+
//# sourceMappingURL=InteractableCard.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractableCard.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var Card = require('./Card.js');
|
|
9
|
+
var capitalize = require('../utils/capitalize.js');
|
|
10
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
11
|
+
require('../utils/useFloatingUI.js');
|
|
12
|
+
require('../utils/useId.js');
|
|
13
|
+
require('../salt-provider/SaltProvider.js');
|
|
14
|
+
require('../viewport/ViewportProvider.js');
|
|
15
|
+
var useInteractableCard = require('./useInteractableCard.js');
|
|
16
|
+
require('./InteractableCard.css.js');
|
|
17
|
+
|
|
18
|
+
const withBaseName = makePrefixer.makePrefixer("saltInteractableCard");
|
|
19
|
+
const InteractableCard = React.forwardRef(function InteractableCard2(props, ref) {
|
|
20
|
+
const {
|
|
21
|
+
accentPlacement = "bottom",
|
|
22
|
+
children,
|
|
23
|
+
className,
|
|
24
|
+
disabled,
|
|
25
|
+
onBlur,
|
|
26
|
+
onClick,
|
|
27
|
+
onKeyUp,
|
|
28
|
+
onKeyDown,
|
|
29
|
+
...rest
|
|
30
|
+
} = props;
|
|
31
|
+
const { active, cardProps } = useInteractableCard.useInteractableCard({
|
|
32
|
+
disabled,
|
|
33
|
+
onKeyUp,
|
|
34
|
+
onKeyDown,
|
|
35
|
+
onBlur,
|
|
36
|
+
onClick
|
|
37
|
+
});
|
|
38
|
+
const { tabIndex, ...restCardProps } = cardProps;
|
|
39
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Card.Card, {
|
|
40
|
+
...restCardProps,
|
|
41
|
+
className: clsx.clsx(
|
|
42
|
+
withBaseName(),
|
|
43
|
+
withBaseName(`accent${capitalize.capitalize(accentPlacement)}`),
|
|
44
|
+
{
|
|
45
|
+
[withBaseName("disabled")]: disabled,
|
|
46
|
+
[withBaseName("active")]: active
|
|
47
|
+
},
|
|
48
|
+
className
|
|
49
|
+
),
|
|
50
|
+
...rest,
|
|
51
|
+
ref,
|
|
52
|
+
children
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
exports.InteractableCard = InteractableCard;
|
|
57
|
+
//# sourceMappingURL=InteractableCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractableCard.js","sources":["../src/card/InteractableCard.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { Card, CardProps } from \"./Card\";\nimport { capitalize, makePrefixer } from \"../utils\";\nimport { useInteractableCard } from \"./useInteractableCard\";\n\nimport \"./InteractableCard.css\";\n\nconst withBaseName = makePrefixer(\"saltInteractableCard\");\n\n// TODO: Remove omissions when Card props deprecated\nexport interface InteractableCardProps\n extends Omit<CardProps, \"disabled\" | \"interactable\"> {\n /**\n * Accent border position: defaults to \"bottom\"\n */\n accentPlacement?: \"bottom\" | \"top\" | \"left\" | \"right\";\n /**\n * If `true`, the card will be disabled.\n */\n disabled?: boolean;\n}\n\nexport const InteractableCard = forwardRef<\n HTMLDivElement,\n InteractableCardProps\n>(function InteractableCard(props, ref) {\n const {\n accentPlacement = \"bottom\",\n children,\n className,\n disabled,\n onBlur,\n onClick,\n onKeyUp,\n onKeyDown,\n ...rest\n } = props;\n\n const { active, cardProps } = useInteractableCard({\n disabled,\n onKeyUp,\n onKeyDown,\n onBlur,\n onClick,\n });\n // for now, we do not want to spread tab index here as users may be wrapping in a link\n const { tabIndex, ...restCardProps } = cardProps;\n\n return (\n <Card\n {...restCardProps}\n className={clsx(\n withBaseName(),\n withBaseName(`accent${capitalize(accentPlacement)}`),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"active\")]: active,\n },\n className\n )}\n {...rest}\n ref={ref}\n >\n {children}\n </Card>\n );\n});\n"],"names":["makePrefixer","forwardRef","InteractableCard","useInteractableCard","jsx","Card","clsx","capitalize"],"mappings":";;;;;;;;;;;;;;;;;AAQA,MAAM,YAAA,GAAeA,0BAAa,sBAAsB,CAAA,CAAA;AAejD,MAAM,gBAAmB,GAAAC,gBAAA,CAG9B,SAASC,iBAAAA,CAAiB,OAAO,GAAK,EAAA;AACtC,EAAM,MAAA;AAAA,IACJ,eAAkB,GAAA,QAAA;AAAA,IAClB,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACG,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAU,EAAA,GAAIC,uCAAoB,CAAA;AAAA,IAChD,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,QAAa,EAAA,GAAA,aAAA,EAAkB,GAAA,SAAA,CAAA;AAEvC,EAAA,uBACGC,cAAA,CAAAC,SAAA,EAAA;AAAA,IACE,GAAG,aAAA;AAAA,IACJ,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,YAAa,CAAA,CAAA,MAAA,EAASC,qBAAW,CAAA,eAAe,CAAG,CAAA,CAAA,CAAA;AAAA,MACnD;AAAA,QACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,OAC5B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACC,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEC,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
const useInteractableCard = ({
|
|
8
|
+
disabled,
|
|
9
|
+
onKeyUp,
|
|
10
|
+
onKeyDown,
|
|
11
|
+
onClick,
|
|
12
|
+
onBlur
|
|
13
|
+
}) => {
|
|
14
|
+
const [keyIsDown, setkeyIsDown] = React.useState("");
|
|
15
|
+
const [active, setActive] = React.useState(false);
|
|
16
|
+
const enter = "Enter";
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
const t = setTimeout(() => {
|
|
19
|
+
if (keyIsDown !== enter) {
|
|
20
|
+
setActive(false);
|
|
21
|
+
}
|
|
22
|
+
}, 0);
|
|
23
|
+
return () => {
|
|
24
|
+
clearTimeout(t);
|
|
25
|
+
};
|
|
26
|
+
}, [active, keyIsDown]);
|
|
27
|
+
const handleKeyUp = (event) => {
|
|
28
|
+
setkeyIsDown("");
|
|
29
|
+
setActive(false);
|
|
30
|
+
onKeyUp == null ? void 0 : onKeyUp(event);
|
|
31
|
+
};
|
|
32
|
+
const handleClick = (event) => {
|
|
33
|
+
setActive(true);
|
|
34
|
+
onClick == null ? void 0 : onClick(event);
|
|
35
|
+
};
|
|
36
|
+
const handleBlur = (event) => {
|
|
37
|
+
setActive(false);
|
|
38
|
+
onBlur == null ? void 0 : onBlur(event);
|
|
39
|
+
};
|
|
40
|
+
const handleKeyDown = (event) => {
|
|
41
|
+
if (event.key === enter) {
|
|
42
|
+
setkeyIsDown(event.key);
|
|
43
|
+
setActive(true);
|
|
44
|
+
}
|
|
45
|
+
onKeyDown == null ? void 0 : onKeyDown(event);
|
|
46
|
+
};
|
|
47
|
+
const cardProps = {
|
|
48
|
+
"aria-disabled": disabled ? true : void 0,
|
|
49
|
+
disabled,
|
|
50
|
+
tabIndex: disabled ? -1 : 0,
|
|
51
|
+
onBlur: handleBlur,
|
|
52
|
+
onClick: !disabled ? handleClick : void 0,
|
|
53
|
+
onKeyDown: handleKeyDown,
|
|
54
|
+
onKeyUp: handleKeyUp
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
active,
|
|
58
|
+
cardProps
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
exports.useInteractableCard = useInteractableCard;
|
|
63
|
+
//# sourceMappingURL=useInteractableCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInteractableCard.js","sources":["../src/card/useInteractableCard.ts"],"sourcesContent":["import {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface CardHookProps<T extends Element> {\n disabled?: boolean;\n onKeyUp?: (event: KeyboardEvent<T>) => void;\n onKeyDown?: (event: KeyboardEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onBlur?: (event: FocusEvent<T>) => void;\n}\n\nexport interface CardHookResult<T extends Element> {\n active: boolean;\n cardProps: {\n \"aria-disabled\"?: boolean;\n disabled?: boolean;\n tabIndex: number;\n onBlur: (event: FocusEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onKeyDown: (event: KeyboardEvent<T>) => void;\n onKeyUp: (event: KeyboardEvent<T>) => void;\n };\n}\n\nexport const useInteractableCard = <T extends Element>({\n disabled,\n onKeyUp,\n onKeyDown,\n onClick,\n onBlur,\n}: CardHookProps<T>): CardHookResult<T> => {\n const [keyIsDown, setkeyIsDown] = useState(\"\");\n const [active, setActive] = useState(false);\n\n const enter = \"Enter\";\n\n useEffect(() => {\n const t = setTimeout(() => {\n // This key state check is to stop continual visual state change when using Enter Key, which the browser treats as both key and click events on a Button-like component\n // This key state check also fixes Firefox Button where Space key is pressed but button fails to be in active state\n if (keyIsDown !== enter) {\n setActive(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(t);\n };\n }, [active, keyIsDown]);\n\n const handleKeyUp = (event: KeyboardEvent<T>) => {\n setkeyIsDown(\"\");\n setActive(false);\n onKeyUp?.(event);\n };\n\n const handleClick = (event: MouseEvent<T>) => {\n setActive(true);\n onClick?.(event);\n };\n\n const handleBlur = (event: FocusEvent<T>) => {\n setActive(false);\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<T>) => {\n if (event.key === enter) {\n setkeyIsDown(event.key);\n setActive(true);\n }\n\n onKeyDown?.(event);\n };\n\n const cardProps = {\n \"aria-disabled\": disabled ? true : undefined,\n disabled: disabled,\n tabIndex: disabled ? -1 : 0,\n onBlur: handleBlur,\n onClick: !disabled ? handleClick : undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n };\n\n return {\n active,\n cardProps,\n };\n};\n"],"names":["useState","useEffect"],"mappings":";;;;;;AA6BO,MAAM,sBAAsB,CAAoB;AAAA,EACrD,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AACF,CAA2C,KAAA;AACzC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,EAAE,CAAA,CAAA;AAC7C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA,CAAA;AAE1C,EAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,EAAAC,eAAA,CAAU,MAAM;AACd,IAAM,MAAA,CAAA,GAAI,WAAW,MAAM;AAGzB,MAAA,IAAI,cAAc,KAAO,EAAA;AACvB,QAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AAAA,OACjB;AAAA,OACC,CAAC,CAAA,CAAA;AAEJ,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,CAAC,CAAA,CAAA;AAAA,KAChB,CAAA;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,SAAS,CAAC,CAAA,CAAA;AAEtB,EAAM,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAC/C,IAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACf,IAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACf,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyB,KAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA,CAAA;AACd,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,KAAyB,KAAA;AAC3C,IAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACf,IAAS,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACX,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,KAA4B,KAAA;AACjD,IAAI,IAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AACvB,MAAA,YAAA,CAAa,MAAM,GAAG,CAAA,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,CAAA,CAAA;AAAA,KAChB;AAEA,IAAY,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,eAAA,EAAiB,WAAW,IAAO,GAAA,KAAA,CAAA;AAAA,IACnC,QAAA;AAAA,IACA,QAAA,EAAU,WAAW,CAAK,CAAA,GAAA,CAAA;AAAA,IAC1B,MAAQ,EAAA,UAAA;AAAA,IACR,OAAA,EAAS,CAAC,QAAA,GAAW,WAAc,GAAA,KAAA,CAAA;AAAA,IACnC,SAAW,EAAA,aAAA;AAAA,IACX,OAAS,EAAA,WAAA;AAAA,GACX,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
|
|
4
|
+
|
|
5
|
+
var css_248z = "/* Styles applied to root component */\n\n.saltCheckbox {\n cursor: var(--salt-selectable-cursor-hover);\n background: var(--saltCheckbox-background, none);\n display: flex;\n gap: var(--saltCheckbox-gap, var(--salt-size-adornmentGap));\n position: relative;\n width: fit-content;\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltCheckbox-disabled {\n pointer-events: visible;\n color: var(--salt-text-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Styles applied to the icon component if focused */\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-offset: var(--salt-focused-outlineOffset);\n outline: var(--salt-focused-outline);\n}\n\n/* Styles applied to input element */\n.saltCheckbox-input {\n cursor: inherit;\n left: 0;\n margin: 0;\n opacity: 0;\n padding: 0;\n position: absolute;\n top: 0;\n z-index: var(--salt-zIndex-default);\n}\n";
|
|
6
|
+
styleInject_es(css_248z);
|
|
7
|
+
|
|
8
|
+
module.exports = css_248z;
|
|
9
|
+
//# sourceMappingURL=Checkbox.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
9
|
+
var useControlled = require('../utils/useControlled.js');
|
|
10
|
+
require('../utils/useFloatingUI.js');
|
|
11
|
+
require('../utils/useId.js');
|
|
12
|
+
require('../salt-provider/SaltProvider.js');
|
|
13
|
+
require('../viewport/ViewportProvider.js');
|
|
14
|
+
var CheckboxIcon = require('./CheckboxIcon.js');
|
|
15
|
+
require('./Checkbox.css.js');
|
|
16
|
+
var useCheckboxGroup = require('./internal/useCheckboxGroup.js');
|
|
17
|
+
|
|
18
|
+
const withBaseName = makePrefixer.makePrefixer("saltCheckbox");
|
|
19
|
+
const Checkbox = React.forwardRef(
|
|
20
|
+
function Checkbox2({
|
|
21
|
+
checked: checkedProp,
|
|
22
|
+
className,
|
|
23
|
+
defaultChecked,
|
|
24
|
+
disabled,
|
|
25
|
+
error,
|
|
26
|
+
indeterminate,
|
|
27
|
+
inputProps,
|
|
28
|
+
label,
|
|
29
|
+
name,
|
|
30
|
+
onBlur,
|
|
31
|
+
onChange,
|
|
32
|
+
onFocus,
|
|
33
|
+
value,
|
|
34
|
+
...rest
|
|
35
|
+
}, ref) {
|
|
36
|
+
var _a;
|
|
37
|
+
const checkboxGroup = useCheckboxGroup.useCheckboxGroup();
|
|
38
|
+
const handleChange = (event) => {
|
|
39
|
+
var _a2;
|
|
40
|
+
if (event.nativeEvent.defaultPrevented) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const value2 = event.target.checked;
|
|
44
|
+
setChecked(value2);
|
|
45
|
+
onChange == null ? void 0 : onChange(event);
|
|
46
|
+
(_a2 = checkboxGroup.onChange) == null ? void 0 : _a2.call(checkboxGroup, event);
|
|
47
|
+
};
|
|
48
|
+
const checkboxGroupChecked = checkedProp == null && value != null ? (_a = checkboxGroup.checkedValues) == null ? void 0 : _a.includes(value) : checkedProp;
|
|
49
|
+
const [checked, setChecked] = useControlled.useControlled({
|
|
50
|
+
controlled: checkboxGroupChecked,
|
|
51
|
+
default: Boolean(defaultChecked),
|
|
52
|
+
name: "Checkbox",
|
|
53
|
+
state: "checked"
|
|
54
|
+
});
|
|
55
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("label", {
|
|
56
|
+
className: clsx.clsx(
|
|
57
|
+
withBaseName(),
|
|
58
|
+
{
|
|
59
|
+
[withBaseName("disabled")]: disabled,
|
|
60
|
+
[withBaseName("error")]: error
|
|
61
|
+
},
|
|
62
|
+
className
|
|
63
|
+
),
|
|
64
|
+
ref,
|
|
65
|
+
...rest,
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx("input", {
|
|
68
|
+
"aria-checked": indeterminate ? "mixed" : void 0,
|
|
69
|
+
name,
|
|
70
|
+
value,
|
|
71
|
+
...inputProps,
|
|
72
|
+
checked,
|
|
73
|
+
className: withBaseName("input"),
|
|
74
|
+
"data-indeterminate": indeterminate,
|
|
75
|
+
defaultChecked,
|
|
76
|
+
disabled,
|
|
77
|
+
onBlur,
|
|
78
|
+
onChange: handleChange,
|
|
79
|
+
onFocus,
|
|
80
|
+
type: "checkbox"
|
|
81
|
+
}),
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx(CheckboxIcon.CheckboxIcon, {
|
|
83
|
+
checked,
|
|
84
|
+
disabled,
|
|
85
|
+
error,
|
|
86
|
+
indeterminate
|
|
87
|
+
}),
|
|
88
|
+
label
|
|
89
|
+
]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
exports.Checkbox = Checkbox;
|
|
95
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../src/checkbox/Checkbox.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n InputHTMLAttributes,\n ReactNode,\n} from \"react\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxIcon } from \"./CheckboxIcon\";\n\nimport \"./Checkbox.css\";\nimport { useCheckboxGroup } from \"./internal/useCheckboxGroup\";\n\nconst withBaseName = makePrefixer(\"saltCheckbox\");\n\nexport interface CheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLLabelElement>,\n \"onChange\" | \"onBlur\" | \"onFocus\"\n > {\n /**\n * If `true`, the checkbox will be checked.\n */\n checked?: boolean;\n /**\n * Whether the checkbox component is checked by default\n * This will be disregarded if checked is already set.\n */\n defaultChecked?: boolean;\n /**\n * If `true`, the checkbox will be disabled.\n */\n disabled?: boolean;\n /**\n * If `true`, the checkbox will be in the error state.\n */\n error?: boolean;\n /**\n * If true, the checkbox appears indeterminate. This does not set the native\n * input element to indeterminate due to the inconsistent behaviour across browsers\n * However, a data-indeterminate attribute is set on the input.\n */\n indeterminate?: boolean;\n /**\n * Properties applied to the input element.\n */\n inputProps?: Partial<InputHTMLAttributes<HTMLInputElement>>;\n /**\n * The label to be shown next to the checkbox.\n */\n label?: ReactNode;\n /**\n * The name applied to the input.\n */\n name?: string;\n /**\n * Callback when checkbox loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback when checked state is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Callback when checkbox gains focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * The value of the checkbox.\n */\n value?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n function Checkbox(\n {\n checked: checkedProp,\n className,\n defaultChecked,\n disabled,\n error,\n indeterminate,\n inputProps,\n label,\n name,\n onBlur,\n onChange,\n onFocus,\n value,\n ...rest\n },\n ref\n ) {\n const checkboxGroup = useCheckboxGroup();\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n\n const value = event.target.checked;\n setChecked(value);\n onChange?.(event);\n checkboxGroup.onChange?.(event);\n };\n\n const checkboxGroupChecked =\n checkedProp == null && value != null\n ? checkboxGroup.checkedValues?.includes(value)\n : checkedProp;\n\n const [checked, setChecked] = useControlled({\n controlled: checkboxGroupChecked,\n default: Boolean(defaultChecked),\n name: \"Checkbox\",\n state: \"checked\",\n });\n\n return (\n <label\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"error\")]: error,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n <input\n // aria-checked only needed when indeterminate since native indeterminate behaviour is not used\n aria-checked={indeterminate ? \"mixed\" : undefined}\n name={name}\n value={value}\n {...inputProps}\n checked={checked}\n className={withBaseName(\"input\")}\n data-indeterminate={indeterminate}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n type=\"checkbox\"\n />\n <CheckboxIcon\n checked={checked}\n disabled={disabled}\n error={error}\n indeterminate={indeterminate}\n />\n {label}\n </label>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","Checkbox","useCheckboxGroup","_a","value","useControlled","jsxs","clsx","jsx","CheckboxIcon"],"mappings":";;;;;;;;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,0BAAa,cAAc,CAAA,CAAA;AA4DzC,MAAM,QAAW,GAAAC,gBAAA;AAAA,EACtB,SAASC,SACP,CAAA;AAAA,IACE,OAAS,EAAA,WAAA;AAAA,IACT,SAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACG,GAAA,IAAA;AAAA,KAEL,GACA,EAAA;AA7FJ,IAAA,IAAA,EAAA,CAAA;AA8FI,IAAA,MAAM,gBAAgBC,iCAAiB,EAAA,CAAA;AAEvC,IAAM,MAAA,YAAA,GAAqD,CAAC,KAAU,KAAA;AAhG1E,MAAAC,IAAAA,GAAAA,CAAAA;AAkGM,MAAI,IAAA,KAAA,CAAM,YAAY,gBAAkB,EAAA;AACtC,QAAA,OAAA;AAAA,OACF;AAEA,MAAMC,MAAAA,MAAAA,GAAQ,MAAM,MAAO,CAAA,OAAA,CAAA;AAC3B,MAAA,UAAA,CAAWA,MAAK,CAAA,CAAA;AAChB,MAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AACX,MAAA,CAAAD,GAAA,GAAA,aAAA,CAAc,QAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,IAAyB,CAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAAA,KAC3B,CAAA;AAEA,IAAM,MAAA,oBAAA,GACJ,eAAe,IAAQ,IAAA,KAAA,IAAS,QAC5B,EAAc,GAAA,aAAA,CAAA,aAAA,KAAd,IAA6B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAS,KACtC,CAAA,GAAA,WAAA,CAAA;AAEN,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIE,2BAAc,CAAA;AAAA,MAC1C,UAAY,EAAA,oBAAA;AAAA,MACZ,OAAA,EAAS,QAAQ,cAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,UAAA;AAAA,MACN,KAAO,EAAA,SAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,uBACGC,eAAA,CAAA,OAAA,EAAA;AAAA,MACC,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,SAC3B;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAACC,cAAA,CAAA,OAAA,EAAA;AAAA,UAEC,cAAA,EAAc,gBAAgB,OAAU,GAAA,KAAA,CAAA;AAAA,UACxC,IAAA;AAAA,UACA,KAAA;AAAA,UACC,GAAG,UAAA;AAAA,UACJ,OAAA;AAAA,UACA,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,oBAAoB,EAAA,aAAA;AAAA,UACpB,cAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAU,EAAA,YAAA;AAAA,UACV,OAAA;AAAA,UACA,IAAK,EAAA,UAAA;AAAA,SACP,CAAA;AAAA,wBACCA,cAAA,CAAAC,yBAAA,EAAA;AAAA,UACC,OAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,SACF,CAAA;AAAA,QACC,KAAA;AAAA,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
|
|
4
|
+
|
|
5
|
+
var css_248z = "/* Styles applied to root component */\n.saltCheckboxGroup {\n border: none;\n margin: 0;\n padding: 0;\n}\n\n/* Styles applied to root component if `direction={\"horizontal\"}` */\n.saltCheckboxGroup-horizontal {\n display: flex;\n gap: var(--salt-size-adornmentGap);\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n/* Styles applied to root component if `direction={\"vertical\"}` */\n.saltCheckboxGroup-vertical {\n display: flex;\n gap: var(--salt-size-unit);\n flex-direction: column;\n}\n\n.saltCheckboxGroup-noWrap {\n flex-wrap: nowrap;\n}\n\n.saltCheckboxGroup-noWrap .saltCheckbox {\n white-space: break-spaces;\n}\n";
|
|
6
|
+
styleInject_es(css_248z);
|
|
7
|
+
|
|
8
|
+
module.exports = css_248z;
|
|
9
|
+
//# sourceMappingURL=CheckboxGroup.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
9
|
+
var useControlled = require('../utils/useControlled.js');
|
|
10
|
+
require('../utils/useFloatingUI.js');
|
|
11
|
+
require('../utils/useId.js');
|
|
12
|
+
require('../salt-provider/SaltProvider.js');
|
|
13
|
+
require('../viewport/ViewportProvider.js');
|
|
14
|
+
var CheckboxGroupContext = require('./internal/CheckboxGroupContext.js');
|
|
15
|
+
require('./CheckboxGroup.css.js');
|
|
16
|
+
|
|
17
|
+
const withBaseName = makePrefixer.makePrefixer("saltCheckboxGroup");
|
|
18
|
+
const CheckboxGroup = React.forwardRef(function CheckboxGroup2({
|
|
19
|
+
checkedValues: checkedValuesProp,
|
|
20
|
+
defaultCheckedValues = [],
|
|
21
|
+
children,
|
|
22
|
+
className,
|
|
23
|
+
direction = "vertical",
|
|
24
|
+
name,
|
|
25
|
+
onChange,
|
|
26
|
+
wrap,
|
|
27
|
+
...other
|
|
28
|
+
}, ref) {
|
|
29
|
+
const [checkedValues, setCheckedValues] = useControlled.useControlled({
|
|
30
|
+
controlled: checkedValuesProp,
|
|
31
|
+
default: defaultCheckedValues,
|
|
32
|
+
name: "CheckboxGroup",
|
|
33
|
+
state: "checkedValues"
|
|
34
|
+
});
|
|
35
|
+
const handleChange = (event) => {
|
|
36
|
+
setCheckedValues((oldValues = []) => {
|
|
37
|
+
const name2 = event.target.value;
|
|
38
|
+
const isSelected = oldValues.includes(name2);
|
|
39
|
+
return isSelected ? oldValues.filter((value) => value !== name2) : oldValues.concat(name2);
|
|
40
|
+
});
|
|
41
|
+
onChange == null ? void 0 : onChange(event);
|
|
42
|
+
};
|
|
43
|
+
return /* @__PURE__ */ jsxRuntime.jsx("fieldset", {
|
|
44
|
+
className: clsx.clsx(
|
|
45
|
+
withBaseName(),
|
|
46
|
+
withBaseName(direction),
|
|
47
|
+
{
|
|
48
|
+
[withBaseName("noWrap")]: !wrap
|
|
49
|
+
},
|
|
50
|
+
className
|
|
51
|
+
),
|
|
52
|
+
ref,
|
|
53
|
+
...other,
|
|
54
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CheckboxGroupContext.CheckboxGroupContext.Provider, {
|
|
55
|
+
value: { name, onChange: handleChange, checkedValues },
|
|
56
|
+
children
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
exports.CheckboxGroup = CheckboxGroup;
|
|
62
|
+
//# sourceMappingURL=CheckboxGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.js","sources":["../src/checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxGroupContext } from \"./internal/CheckboxGroupContext\";\n\nimport \"./CheckboxGroup.css\";\n\nexport interface CheckboxGroupProps\n extends Omit<ComponentPropsWithoutRef<\"fieldset\">, \"onChange\"> {\n /**\n * The current checked options.\n */\n checkedValues?: string[];\n /**\n * The default selected options for un-controlled component.\n */\n defaultCheckedValues?: string[];\n /**\n * Display group of elements in a compact row.\n */\n direction?: \"horizontal\" | \"vertical\";\n /**\n * The name used to reference the value of the control.\n */\n name?: string;\n /**\n * Callback fired when a checkbox is clicked.\n * `event.target.value` returns the value of the checkbox that was clicked.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Only for horizontal direction. When `true` the text in radio button label will wrap to fit within the container. Otherwise, the checkboxes will wrap onto the next line.\n */\n wrap?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltCheckboxGroup\");\n\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>(function CheckboxGroup(\n {\n checkedValues: checkedValuesProp,\n defaultCheckedValues = [],\n children,\n className,\n direction = \"vertical\",\n name,\n onChange,\n wrap,\n ...other\n },\n ref\n) {\n const [checkedValues, setCheckedValues] = useControlled({\n controlled: checkedValuesProp,\n default: defaultCheckedValues,\n name: \"CheckboxGroup\",\n state: \"checkedValues\",\n });\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setCheckedValues((oldValues: string[] = []) => {\n const name = event.target.value;\n const isSelected = oldValues.includes(name);\n\n return isSelected\n ? oldValues.filter((value) => value !== name)\n : oldValues.concat(name);\n });\n\n onChange?.(event);\n };\n\n return (\n <fieldset\n className={clsx(\n withBaseName(),\n withBaseName(direction),\n {\n [withBaseName(\"noWrap\")]: !wrap,\n },\n className\n )}\n ref={ref}\n {...other}\n >\n <CheckboxGroupContext.Provider\n value={{ name, onChange: handleChange, checkedValues }}\n >\n {children}\n </CheckboxGroupContext.Provider>\n </fieldset>\n );\n});\n"],"names":["makePrefixer","forwardRef","CheckboxGroup","useControlled","name","jsx","clsx","CheckboxGroupContext"],"mappings":";;;;;;;;;;;;;;;;AAyCA,MAAM,YAAA,GAAeA,0BAAa,mBAAmB,CAAA,CAAA;AAExC,MAAA,aAAA,GAAgBC,gBAG3B,CAAA,SAASC,cACT,CAAA;AAAA,EACE,aAAe,EAAA,iBAAA;AAAA,EACf,uBAAuB,EAAC;AAAA,EACxB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAY,GAAA,UAAA;AAAA,EACZ,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACG,GAAA,KAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,2BAAc,CAAA;AAAA,IACtD,UAAY,EAAA,iBAAA;AAAA,IACZ,OAAS,EAAA,oBAAA;AAAA,IACT,IAAM,EAAA,eAAA;AAAA,IACN,KAAO,EAAA,eAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,CAAC,KAAyC,KAAA;AAC7D,IAAiB,gBAAA,CAAA,CAAC,SAAsB,GAAA,EAAO,KAAA;AAC7C,MAAMC,MAAAA,KAAAA,GAAO,MAAM,MAAO,CAAA,KAAA,CAAA;AAC1B,MAAM,MAAA,UAAA,GAAa,SAAU,CAAA,QAAA,CAASA,KAAI,CAAA,CAAA;AAE1C,MAAO,OAAA,UAAA,GACH,SAAU,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,UAAUA,KAAI,CAAA,GAC1C,SAAU,CAAA,MAAA,CAAOA,KAAI,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACb,CAAA;AAEA,EAAA,uBACGC,cAAA,CAAA,UAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,aAAa,SAAS,CAAA;AAAA,MACtB;AAAA,QACE,CAAC,YAAA,CAAa,QAAQ,CAAA,GAAI,CAAC,IAAA;AAAA,OAC7B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,GAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAD,cAAA,CAACE,0CAAqB,QAArB,EAAA;AAAA,MACC,KAAO,EAAA,EAAE,IAAM,EAAA,QAAA,EAAU,cAAc,aAAc,EAAA;AAAA,MAEpD,QAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
|
|
4
|
+
|
|
5
|
+
var css_248z = "/* Styles applied to root component */\n\n.saltCheckboxIcon {\n --checkbox-density-bar-y: 6px;\n --checkbox-density-bar-height: 2px;\n\n --checkbox-borderWidth: var(--salt-size-border);\n --checkbox-size: var(--salt-size-selectable);\n --checkbox-box-offset: calc(var(--checkbox-borderWidth) / 2);\n /* 14px is used to match the svg's viewbox */\n --checkbox-box-size: calc(100% - var(--checkbox-borderWidth));\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-tick-color, var(--salt-selectable-primary-foreground-selected));\n\n fill: var(--saltCheckbox-icon-fill, var(--salt-selectable-background));\n height: var(--saltCheckbox-icon-size, var(--checkbox-size));\n min-height: var(--saltCheckbox-icon-size, var(--checkbox-size));\n stroke: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground));\n stroke-width: var(--saltCheckbox-icon-strokeWidth, var(--checkbox-borderWidth));\n width: var(--saltCheckbox-icon-size, var(--checkbox-size));\n min-width: var(--saltCheckbox-icon-size, var(--checkbox-size));\n background: var(--salt-container-primary-background);\n}\n\n/* Styles applied to root component on hover */\n.saltCheckbox:hover .saltCheckboxIcon {\n stroke: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground-hover));\n background: var(--salt-selectable-background-hover);\n}\n\n/* Styles applied if `disabled={true}` */\n.saltCheckbox-disabled:hover .saltCheckboxIcon,\n.saltCheckboxIcon-disabled {\n stroke: var(--saltCheckbox-icon-stroke-disabled, var(--salt-selectable-foreground-disabled));\n background: var(--salt-selectable-background);\n}\n\n/* Styles applied if `error={true}` */\n.saltCheckbox-error .saltCheckboxIcon,\n.saltCheckbox-error:hover .saltCheckboxIcon {\n stroke: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground));\n}\n\n/* Styles applied if `error={true}` on hover */\n.saltCheckbox-error:hover .saltCheckboxIcon {\n background: var(--salt-status-error-background-emphasize);\n}\n\n/* Styles applied if `error={true}` and `disabled={true}` */\n.saltCheckbox-error.saltCheckbox-disabled .saltCheckboxIcon,\n.saltCheckbox-error.saltCheckbox-disabled:hover .saltCheckboxIcon {\n stroke: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground-disabled));\n background: var(--salt-selectable-background);\n}\n\n/* Styles applied if `checked={true}` */\n.saltCheckboxIcon-checked {\n fill: var(--saltCheckbox-icon-fill-checked, var(--salt-selectable-foreground-selected));\n --checkbox-borderWidth: var(--saltCheckbox-icon-borderWidth-checked, 0px);\n}\n\n/* Styles applied if `checked={true}` and `disabled={true}` */\n.saltCheckboxIcon-checked.saltCheckboxIcon-disabled {\n fill: var(--saltCheckbox-icon-fill-disabled, var(--salt-selectable-foreground-selectedDisabled));\n}\n\n/* Styles applied if `checked={true}` and `error={true}` */\n.saltCheckboxIcon-checked.saltCheckboxIcon-error {\n fill: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground));\n}\n\n/* Styles applied if `checked={true}`,`error={true}` and `disabled={true}` */\n.saltCheckboxIcon-checked.saltCheckboxIcon-error.saltCheckboxIcon-disabled {\n fill: var(--saltCheckbox-icon-fill-disabled, var(--salt-status-error-foreground-disabled));\n}\n\n/* Styles applied to box */\n.saltCheckboxIcon-box {\n stroke-width: var(--checkbox-borderWidth);\n width: var(--checkbox-box-size);\n height: var(--checkbox-box-size);\n x: var(--checkbox-box-offset);\n y: var(--checkbox-box-offset);\n}\n\n/* Styles applied to icon if `indeterminate={true}` */\n.saltCheckboxIcon-indeterminate {\n stroke: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground-selected));\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-indeterminate-bar-color, var(--salt-selectable-foreground-selected));\n}\n\n/* Styles applied to icon if `indeterminate={true}` on hover */\n.saltCheckbox:hover .saltCheckboxIcon-indeterminate {\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground-hover));\n}\n\n/* Styles applied if `indeterminate={true}` and `disabled={true}` */\n.saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate {\n stroke: var(--saltCheckbox-icon-stroke-disabled, var(--salt-selectable-foreground-disabled));\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-indeterminate-bar-color-disabled, var(--salt-selectable-foreground-selectedDisabled));\n}\n\n/* Styles applied if `indeterminate={true}` and `error={true}` */\n.saltCheckboxIcon-error.saltCheckboxIcon-indeterminate,\n.saltCheckbox:hover .saltCheckboxIcon-error.saltCheckboxIcon-indeterminate {\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground));\n}\n\n/* Styles applied if `indeterminate={true}`,`disabled={true}` and `error={true}` */\n.saltCheckboxIcon-error.saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate {\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground-disabled));\n}\n\n/* Styles applied to tick */\n.saltCheckboxIcon-tick {\n fill: var(--saltCheckbox-icon-tick-fill, var(--checkbox-icon-tick-fill));\n stroke-width: 0;\n}\n\n/* Styles applied to tick if `indeterminate={true}` */\n.saltCheckboxIcon-indeterminate .saltCheckboxIcon-tick {\n height: var(--saltCheckbox-icon-indeterminate-bar-height, var(--checkbox-density-bar-height));\n y: var(--saltCheckbox-icon-indeterminate-bar-y, var(--checkbox-density-bar-y));\n}\n";
|
|
6
|
+
styleInject_es(css_248z);
|
|
7
|
+
|
|
8
|
+
module.exports = css_248z;
|
|
9
|
+
//# sourceMappingURL=CheckboxIcon.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxIcon.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
require('react');
|
|
8
|
+
var makePrefixer = require('../utils/makePrefixer.js');
|
|
9
|
+
require('../utils/useFloatingUI.js');
|
|
10
|
+
require('../utils/useId.js');
|
|
11
|
+
var SaltProvider = require('../salt-provider/SaltProvider.js');
|
|
12
|
+
require('../viewport/ViewportProvider.js');
|
|
13
|
+
var CheckboxUncheckedIcon = require('./assets/CheckboxUncheckedIcon.js');
|
|
14
|
+
var CheckboxCheckedIcon = require('./assets/CheckboxCheckedIcon.js');
|
|
15
|
+
var CheckboxCheckedIconHD = require('./assets/CheckboxCheckedIconHD.js');
|
|
16
|
+
var CheckboxIndeterminateIcon = require('./assets/CheckboxIndeterminateIcon.js');
|
|
17
|
+
require('./CheckboxIcon.css.js');
|
|
18
|
+
|
|
19
|
+
const withBaseName = makePrefixer.makePrefixer("saltCheckboxIcon");
|
|
20
|
+
const CheckboxIcon = ({
|
|
21
|
+
checked = false,
|
|
22
|
+
className: classNameProp,
|
|
23
|
+
disabled,
|
|
24
|
+
error,
|
|
25
|
+
indeterminate
|
|
26
|
+
}) => {
|
|
27
|
+
const className = clsx.clsx(
|
|
28
|
+
withBaseName(),
|
|
29
|
+
{
|
|
30
|
+
[withBaseName("disabled")]: disabled,
|
|
31
|
+
[withBaseName("error")]: error
|
|
32
|
+
},
|
|
33
|
+
classNameProp
|
|
34
|
+
);
|
|
35
|
+
const density = SaltProvider.useDensity();
|
|
36
|
+
return indeterminate ? /* @__PURE__ */ jsxRuntime.jsx(CheckboxIndeterminateIcon.CheckboxIndeterminateIcon, {
|
|
37
|
+
className: clsx.clsx(className, withBaseName("indeterminate"))
|
|
38
|
+
}) : checked ? density === "high" ? /* @__PURE__ */ jsxRuntime.jsx(CheckboxCheckedIconHD.CheckboxCheckedIconHD, {
|
|
39
|
+
className: clsx.clsx(className, withBaseName("checked"))
|
|
40
|
+
}) : /* @__PURE__ */ jsxRuntime.jsx(CheckboxCheckedIcon.CheckboxCheckedIcon, {
|
|
41
|
+
className: clsx.clsx(className, withBaseName("checked"))
|
|
42
|
+
}) : /* @__PURE__ */ jsxRuntime.jsx(CheckboxUncheckedIcon.CheckboxUncheckedIcon, {
|
|
43
|
+
className
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
exports.CheckboxIcon = CheckboxIcon;
|
|
48
|
+
//# sourceMappingURL=CheckboxIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxIcon.js","sources":["../src/checkbox/CheckboxIcon.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { makePrefixer } from \"../utils\";\nimport {\n CheckboxCheckedIcon,\n CheckboxCheckedIconHD,\n CheckboxIndeterminateIcon,\n CheckboxUncheckedIcon,\n} from \"./assets\";\n\nimport \"./CheckboxIcon.css\";\nimport { useDensity } from \"../salt-provider\";\n\nexport interface CheckboxIconProps {\n checked?: boolean;\n className?: string;\n disabled?: boolean;\n error?: boolean;\n indeterminate?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltCheckboxIcon\");\n\nexport const CheckboxIcon = ({\n checked = false,\n className: classNameProp,\n disabled,\n error,\n indeterminate,\n}: CheckboxIconProps): JSX.Element => {\n const className = clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"error\")]: error,\n },\n classNameProp\n );\n\n // A different CheckboxCheckedIcon is rendered if the density is set to high\n const density = useDensity();\n\n return indeterminate ? (\n <CheckboxIndeterminateIcon\n className={clsx(className, withBaseName(\"indeterminate\"))}\n />\n ) : checked ? (\n density === \"high\" ? (\n <CheckboxCheckedIconHD\n className={clsx(className, withBaseName(\"checked\"))}\n />\n ) : (\n <CheckboxCheckedIcon\n className={clsx(className, withBaseName(\"checked\"))}\n />\n )\n ) : (\n <CheckboxUncheckedIcon className={className} />\n );\n};\n"],"names":["makePrefixer","clsx","useDensity","jsx","CheckboxIndeterminateIcon","CheckboxCheckedIconHD","CheckboxCheckedIcon","CheckboxUncheckedIcon"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,MAAM,YAAA,GAAeA,0BAAa,kBAAkB,CAAA,CAAA;AAE7C,MAAM,eAAe,CAAC;AAAA,EAC3B,OAAU,GAAA,KAAA;AAAA,EACV,SAAW,EAAA,aAAA;AAAA,EACX,QAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AACF,CAAsC,KAAA;AACpC,EAAA,MAAM,SAAY,GAAAC,SAAA;AAAA,IAChB,YAAa,EAAA;AAAA,IACb;AAAA,MACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,MAC5B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,KAC3B;AAAA,IACA,aAAA;AAAA,GACF,CAAA;AAGA,EAAA,MAAM,UAAUC,uBAAW,EAAA,CAAA;AAE3B,EAAA,OAAO,gCACJC,cAAA,CAAAC,mDAAA,EAAA;AAAA,IACC,SAAW,EAAAH,SAAA,CAAK,SAAW,EAAA,YAAA,CAAa,eAAe,CAAC,CAAA;AAAA,GAC1D,CACE,GAAA,OAAA,GACF,OAAY,KAAA,MAAA,mBACTE,cAAA,CAAAE,2CAAA,EAAA;AAAA,IACC,SAAW,EAAAJ,SAAA,CAAK,SAAW,EAAA,YAAA,CAAa,SAAS,CAAC,CAAA;AAAA,GACpD,oBAECE,cAAA,CAAAG,uCAAA,EAAA;AAAA,IACC,SAAW,EAAAL,SAAA,CAAK,SAAW,EAAA,YAAA,CAAa,SAAS,CAAC,CAAA;AAAA,GACpD,oBAGDE,cAAA,CAAAI,2CAAA,EAAA;AAAA,IAAsB,SAAA;AAAA,GAAsB,CAAA,CAAA;AAEjD;;;;"}
|