@elliemae/ds-banner 2.3.0-alpha.6 → 2.3.0-next.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/cjs/DSBanner.js +132 -0
- package/cjs/defaultProps.js +22 -0
- package/cjs/index.d.js +2 -0
- package/cjs/index.js +12 -0
- package/cjs/propTypes.js +24 -0
- package/cjs/styles.js +146 -0
- package/cjs/utils/bannerTypes.js +12 -0
- package/cjs/utils/icons.js +36 -0
- package/cjs/utils/styleHelpers.js +53 -0
- package/esm/DSBanner.js +121 -0
- package/esm/defaultProps.js +18 -0
- package/esm/index.d.js +1 -0
- package/esm/index.js +2 -0
- package/esm/propTypes.js +20 -0
- package/esm/styles.js +131 -0
- package/esm/utils/bannerTypes.js +8 -0
- package/esm/utils/icons.js +28 -0
- package/esm/utils/styleHelpers.js +44 -0
- package/package.json +35 -37
- package/types/DSBanner.d.ts +59 -0
- package/types/defaultProps.d.ts +14 -0
- package/types/index.d.ts +3 -0
- package/types/propTypes.d.ts +33 -0
- package/types/styles.d.ts +8 -0
- package/types/tests/DSBanner.events.test.d.ts +1 -0
- package/types/tests/DSBanner.test.d.ts +1 -0
- package/types/utils/bannerTypes.d.ts +6 -0
- package/types/utils/icons.d.ts +7 -0
- package/types/utils/styleHelpers.d.ts +5 -0
- package/dist/cjs/DSBanner.js +0 -138
- package/dist/cjs/DSBanner.js.map +0 -7
- package/dist/cjs/defaultProps.js +0 -45
- package/dist/cjs/defaultProps.js.map +0 -7
- package/dist/cjs/index.d.js +0 -27
- package/dist/cjs/index.d.js.map +0 -7
- package/dist/cjs/index.js +0 -37
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/propTypes.js +0 -55
- package/dist/cjs/propTypes.js.map +0 -7
- package/dist/cjs/styles.js +0 -107
- package/dist/cjs/styles.js.map +0 -7
- package/dist/cjs/utils/bannerTypes.js +0 -40
- package/dist/cjs/utils/bannerTypes.js.map +0 -7
- package/dist/cjs/utils/icons.js +0 -58
- package/dist/cjs/utils/icons.js.map +0 -7
- package/dist/cjs/utils/styleHelpers.js +0 -99
- package/dist/cjs/utils/styleHelpers.js.map +0 -7
- package/dist/esm/DSBanner.js +0 -117
- package/dist/esm/DSBanner.js.map +0 -7
- package/dist/esm/defaultProps.js +0 -16
- package/dist/esm/defaultProps.js.map +0 -7
- package/dist/esm/index.d.js +0 -2
- package/dist/esm/index.d.js.map +0 -7
- package/dist/esm/index.js +0 -8
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/propTypes.js +0 -26
- package/dist/esm/propTypes.js.map +0 -7
- package/dist/esm/styles.js +0 -78
- package/dist/esm/styles.js.map +0 -7
- package/dist/esm/utils/bannerTypes.js +0 -11
- package/dist/esm/utils/bannerTypes.js.map +0 -7
- package/dist/esm/utils/icons.js +0 -29
- package/dist/esm/utils/icons.js.map +0 -7
- package/dist/esm/utils/styleHelpers.js +0 -70
- package/dist/esm/utils/styleHelpers.js.map +0 -7
package/dist/esm/DSBanner.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import React2, { useLayoutEffect, useRef, useCallback, useState } from "react";
|
|
3
|
-
import { CloseX } from "@elliemae/ds-icons";
|
|
4
|
-
import { describe } from "react-desc";
|
|
5
|
-
import { icons } from "./utils/icons";
|
|
6
|
-
import { propTypes } from "./propTypes";
|
|
7
|
-
import { defaultProps } from "./defaultProps";
|
|
8
|
-
import {
|
|
9
|
-
StyledActionLink,
|
|
10
|
-
StyledCloseButton,
|
|
11
|
-
StyledInnerContainer,
|
|
12
|
-
StyledBannerContainer,
|
|
13
|
-
StyledIconContainer,
|
|
14
|
-
StyledSubTitle,
|
|
15
|
-
StyledTitle
|
|
16
|
-
} from "./styles";
|
|
17
|
-
const DSBanner = ({
|
|
18
|
-
type,
|
|
19
|
-
isOpen,
|
|
20
|
-
onClose,
|
|
21
|
-
label,
|
|
22
|
-
body,
|
|
23
|
-
actionLink,
|
|
24
|
-
showCloseButton,
|
|
25
|
-
containerProps,
|
|
26
|
-
actionRef
|
|
27
|
-
}) => {
|
|
28
|
-
const innerContainerRef = useRef(null);
|
|
29
|
-
const linkRef = useRef(null);
|
|
30
|
-
const [current, setCurrent] = useState(isOpen);
|
|
31
|
-
const [isAnimating, setIsAnimating] = useState(false);
|
|
32
|
-
const [alertTabIndex, setAlertTabIndex] = useState(void 0);
|
|
33
|
-
const ownerState = { type };
|
|
34
|
-
React2.useEffect(() => {
|
|
35
|
-
if (actionRef && actionRef.current) {
|
|
36
|
-
actionRef.current.focusOnWrapper = () => {
|
|
37
|
-
if (innerContainerRef.current) {
|
|
38
|
-
setAlertTabIndex(0);
|
|
39
|
-
setTimeout(() => {
|
|
40
|
-
innerContainerRef.current.focus();
|
|
41
|
-
}, 100);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
actionRef.current.focusOnLink = () => {
|
|
45
|
-
if (linkRef.current) {
|
|
46
|
-
linkRef.current.focus();
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}, [actionRef]);
|
|
51
|
-
useLayoutEffect(() => {
|
|
52
|
-
if (isOpen !== current || isOpen)
|
|
53
|
-
setIsAnimating(true);
|
|
54
|
-
else
|
|
55
|
-
setIsAnimating(false);
|
|
56
|
-
}, [isOpen, current]);
|
|
57
|
-
const handleBlur = useCallback(() => {
|
|
58
|
-
setAlertTabIndex(void 0);
|
|
59
|
-
}, []);
|
|
60
|
-
const handleOnKeyDown = useCallback((e) => {
|
|
61
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
62
|
-
e.preventDefault();
|
|
63
|
-
if (linkRef.current)
|
|
64
|
-
linkRef.current.click();
|
|
65
|
-
}
|
|
66
|
-
}, []);
|
|
67
|
-
if (!isAnimating && !isOpen)
|
|
68
|
-
return null;
|
|
69
|
-
return /* @__PURE__ */ React2.createElement(StyledBannerContainer, {
|
|
70
|
-
type,
|
|
71
|
-
isOpen,
|
|
72
|
-
isAnimating,
|
|
73
|
-
onAnimationEnd: () => setCurrent(isOpen),
|
|
74
|
-
"data-testid": "ds-banner-container",
|
|
75
|
-
...containerProps,
|
|
76
|
-
ownerState
|
|
77
|
-
}, /* @__PURE__ */ React2.createElement(StyledInnerContainer, {
|
|
78
|
-
type,
|
|
79
|
-
isOpen,
|
|
80
|
-
ref: innerContainerRef,
|
|
81
|
-
isAnimating,
|
|
82
|
-
"data-testid": "ds-banner",
|
|
83
|
-
role: "alert",
|
|
84
|
-
tabIndex: alertTabIndex,
|
|
85
|
-
onBlur: handleBlur
|
|
86
|
-
}, /* @__PURE__ */ React2.createElement(StyledIconContainer, {
|
|
87
|
-
"data-testid": "ds-banner-icon"
|
|
88
|
-
}, icons[type]), /* @__PURE__ */ React2.createElement(StyledTitle, null, label), /* @__PURE__ */ React2.createElement(StyledSubTitle, null, /* @__PURE__ */ React2.createElement("span", null, body), actionLink && /* @__PURE__ */ React2.createElement(StyledActionLink, {
|
|
89
|
-
"data-testid": "ds-banner-action-link",
|
|
90
|
-
onClick: actionLink.onClick,
|
|
91
|
-
href: actionLink.href,
|
|
92
|
-
ref: linkRef,
|
|
93
|
-
onKeyDown: handleOnKeyDown,
|
|
94
|
-
tabIndex: 0,
|
|
95
|
-
isBodyEmpty: body
|
|
96
|
-
}, actionLink.label)), showCloseButton ? /* @__PURE__ */ React2.createElement(StyledCloseButton, {
|
|
97
|
-
"data-testid": "ds-banner-close-button",
|
|
98
|
-
buttonType: "secondary",
|
|
99
|
-
onClick: onClose,
|
|
100
|
-
"aria-label": "Close icon",
|
|
101
|
-
icon: /* @__PURE__ */ React2.createElement(CloseX, {
|
|
102
|
-
width: "12px",
|
|
103
|
-
height: "12px"
|
|
104
|
-
})
|
|
105
|
-
}) : /* @__PURE__ */ React2.createElement("span", null)));
|
|
106
|
-
};
|
|
107
|
-
DSBanner.defaultProps = defaultProps;
|
|
108
|
-
DSBanner.propTypes = propTypes;
|
|
109
|
-
const DSBannerWithSchema = describe(DSBanner);
|
|
110
|
-
DSBannerWithSchema.propTypes = propTypes;
|
|
111
|
-
var DSBanner_default = DSBanner;
|
|
112
|
-
export {
|
|
113
|
-
DSBanner,
|
|
114
|
-
DSBannerWithSchema,
|
|
115
|
-
DSBanner_default as default
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=DSBanner.js.map
|
package/dist/esm/DSBanner.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/DSBanner.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { useLayoutEffect, useRef, useCallback, useState } from 'react';\nimport { CloseX } from '@elliemae/ds-icons';\nimport { describe } from 'react-desc';\nimport type { BannerPropsT } from './index.d';\nimport { icons } from './utils/icons';\nimport { propTypes } from './propTypes';\nimport { defaultProps } from './defaultProps';\nimport {\n StyledActionLink,\n StyledCloseButton,\n StyledInnerContainer,\n StyledBannerContainer,\n StyledIconContainer,\n StyledSubTitle,\n StyledTitle,\n} from './styles';\n\nconst DSBanner = ({\n type,\n isOpen,\n onClose,\n label,\n body,\n actionLink,\n showCloseButton,\n containerProps,\n actionRef,\n}: BannerPropsT): JSX.Element => {\n const innerContainerRef = useRef<HTMLDivElement | null>(null);\n const linkRef = useRef<HTMLAnchorElement | null>(null);\n const [current, setCurrent] = useState<boolean>(isOpen);\n const [isAnimating, setIsAnimating] = useState<boolean>(false);\n const [alertTabIndex, setAlertTabIndex] = useState<number | undefined>(undefined);\n\n const ownerState = { type };\n\n React.useEffect(() => {\n if (actionRef && actionRef.current) {\n actionRef.current.focusOnWrapper = () => {\n if (innerContainerRef.current) {\n setAlertTabIndex(0);\n setTimeout(() => {\n innerContainerRef.current.focus();\n }, 100);\n }\n };\n actionRef.current.focusOnLink = () => {\n if (linkRef.current) {\n linkRef.current.focus();\n }\n };\n }\n }, [actionRef]);\n\n useLayoutEffect(() => {\n if (isOpen !== current || isOpen) setIsAnimating(true);\n else setIsAnimating(false);\n }, [isOpen, current]);\n\n const handleBlur = useCallback(() => {\n setAlertTabIndex(undefined);\n }, []);\n const handleOnKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (linkRef.current) linkRef.current.click();\n }\n }, []);\n\n if (!isAnimating && !isOpen) return null;\n\n return (\n <StyledBannerContainer\n type={type}\n isOpen={isOpen}\n isAnimating={isAnimating}\n onAnimationEnd={() => setCurrent(isOpen)}\n data-testid=\"ds-banner-container\"\n {...containerProps}\n ownerState={ownerState}\n >\n <StyledInnerContainer\n type={type}\n isOpen={isOpen}\n ref={innerContainerRef}\n isAnimating={isAnimating}\n data-testid=\"ds-banner\"\n role=\"alert\"\n tabIndex={alertTabIndex}\n onBlur={handleBlur}\n >\n <StyledIconContainer data-testid=\"ds-banner-icon\">{icons[type]}</StyledIconContainer>\n <StyledTitle>{label}</StyledTitle>\n <StyledSubTitle>\n <span>{body}</span>\n {actionLink && (\n <StyledActionLink\n data-testid=\"ds-banner-action-link\"\n onClick={actionLink.onClick}\n href={actionLink.href}\n ref={linkRef}\n onKeyDown={handleOnKeyDown}\n tabIndex={0}\n isBodyEmpty={body}\n >\n {actionLink.label}\n </StyledActionLink>\n )}\n </StyledSubTitle>\n\n {showCloseButton ? (\n <StyledCloseButton\n data-testid=\"ds-banner-close-button\"\n buttonType=\"secondary\"\n onClick={onClose}\n aria-label=\"Close icon\"\n icon={<CloseX width=\"12px\" height=\"12px\" />}\n />\n ) : (\n <span />\n )}\n </StyledInnerContainer>\n </StyledBannerContainer>\n );\n};\n\nDSBanner.defaultProps = defaultProps;\nDSBanner.propTypes = propTypes;\nconst DSBannerWithSchema = describe(DSBanner);\nDSBannerWithSchema.propTypes = propTypes;\n\nexport default DSBanner;\nexport { DSBanner, DSBannerWithSchema };\n"],
|
|
5
|
-
"mappings": "AAAA;ACCA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,MAAM,WAAW,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAC+B;AAC/B,QAAM,oBAAoB,OAA8B;AACxD,QAAM,UAAU,OAAiC;AACjD,QAAM,CAAC,SAAS,cAAc,SAAkB;AAChD,QAAM,CAAC,aAAa,kBAAkB,SAAkB;AACxD,QAAM,CAAC,eAAe,oBAAoB,SAA6B;AAEvE,QAAM,aAAa,EAAE;AAErB,SAAM,UAAU,MAAM;AACpB,QAAI,aAAa,UAAU,SAAS;AAClC,gBAAU,QAAQ,iBAAiB,MAAM;AACvC,YAAI,kBAAkB,SAAS;AAC7B,2BAAiB;AACjB,qBAAW,MAAM;AACf,8BAAkB,QAAQ;AAAA,aACzB;AAAA;AAAA;AAGP,gBAAU,QAAQ,cAAc,MAAM;AACpC,YAAI,QAAQ,SAAS;AACnB,kBAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,KAIrB,CAAC;AAEJ,kBAAgB,MAAM;AACpB,QAAI,WAAW,WAAW;AAAQ,qBAAe;AAAA;AAC5C,qBAAe;AAAA,KACnB,CAAC,QAAQ;AAEZ,QAAM,aAAa,YAAY,MAAM;AACnC,qBAAiB;AAAA,KAChB;AACH,QAAM,kBAAkB,YAAY,CAAC,MAA2B;AAC9D,QAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,QAAE;AACF,UAAI,QAAQ;AAAS,gBAAQ,QAAQ;AAAA;AAAA,KAEtC;AAEH,MAAI,CAAC,eAAe,CAAC;AAAQ,WAAO;AAEpC,SACE,qCAAC,uBAAD;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,MAAM,WAAW;AAAA,IACjC,eAAY;AAAA,OACR;AAAA,IACJ;AAAA,KAEA,qCAAC,sBAAD;AAAA,IACE;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA,eAAY;AAAA,IACZ,MAAK;AAAA,IACL,UAAU;AAAA,IACV,QAAQ;AAAA,KAER,qCAAC,qBAAD;AAAA,IAAqB,eAAY;AAAA,KAAkB,MAAM,QACzD,qCAAC,aAAD,MAAc,QACd,qCAAC,gBAAD,MACE,qCAAC,QAAD,MAAO,OACN,cACC,qCAAC,kBAAD;AAAA,IACE,eAAY;AAAA,IACZ,SAAS,WAAW;AAAA,IACpB,MAAM,WAAW;AAAA,IACjB,KAAK;AAAA,IACL,WAAW;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,KAEZ,WAAW,SAKjB,kBACC,qCAAC,mBAAD;AAAA,IACE,eAAY;AAAA,IACZ,YAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAW;AAAA,IACX,MAAM,qCAAC,QAAD;AAAA,MAAQ,OAAM;AAAA,MAAO,QAAO;AAAA;AAAA,OAGpC,qCAAC,QAAD;AAAA;AAOV,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,MAAM,qBAAqB,SAAS;AACpC,mBAAmB,YAAY;AAE/B,IAAO,mBAAQ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/esm/defaultProps.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { BANNER_TYPES } from "./utils/bannerTypes";
|
|
3
|
-
const defaultProps = {
|
|
4
|
-
containerProps: {},
|
|
5
|
-
label: "",
|
|
6
|
-
body: "",
|
|
7
|
-
type: BANNER_TYPES.INFO,
|
|
8
|
-
isOpen: true,
|
|
9
|
-
onClose: () => null,
|
|
10
|
-
showCloseButton: true,
|
|
11
|
-
actionLink: { label: "", onClick: () => null, href: "" }
|
|
12
|
-
};
|
|
13
|
-
export {
|
|
14
|
-
defaultProps
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=defaultProps.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/defaultProps.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { BANNER_TYPES } from './utils/bannerTypes';\n\nexport const defaultProps = {\n containerProps: {},\n label: '',\n body: '',\n type: BANNER_TYPES.INFO,\n isOpen: true,\n onClose: () => null,\n showCloseButton: true,\n actionLink: { label: '', onClick: () => null, href: '' },\n};\n"],
|
|
5
|
-
"mappings": "AAAA;ACAA;AAEO,MAAM,eAAe;AAAA,EAC1B,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM,aAAa;AAAA,EACnB,QAAQ;AAAA,EACR,SAAS,MAAM;AAAA,EACf,iBAAiB;AAAA,EACjB,YAAY,EAAE,OAAO,IAAI,SAAS,MAAM,MAAM,MAAM;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/esm/index.d.js
DELETED
package/dist/esm/index.d.js.map
DELETED
package/dist/esm/index.js
DELETED
package/dist/esm/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { default } from './DSBanner';\nexport * from './DSBanner';\nexport * from './utils/bannerTypes';\n"],
|
|
5
|
-
"mappings": "AAAA;ACAA;AACA;AACA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/esm/propTypes.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { PropTypes } from "react-desc";
|
|
3
|
-
import { BANNER_TYPES } from "./utils/bannerTypes";
|
|
4
|
-
const propTypes = {
|
|
5
|
-
containerProps: PropTypes.object.description("Set of Properties attached to the main container").defaultValue({}),
|
|
6
|
-
label: PropTypes.string.description("banner s label").defaultValue(""),
|
|
7
|
-
body: PropTypes.string.description("banner s body content").defaultValue(""),
|
|
8
|
-
type: PropTypes.oneOf(Object.values(BANNER_TYPES)).description("banner s type").defaultValue(BANNER_TYPES.INFO),
|
|
9
|
-
onClose: PropTypes.func.description("function executed when the banner closes"),
|
|
10
|
-
isOpen: PropTypes.bool.description("whether the banner is open or closed").defaultValue(true),
|
|
11
|
-
showCloseButton: PropTypes.bool.description("whether to show close button or not").defaultValue(true),
|
|
12
|
-
actionLink: PropTypes.shape({
|
|
13
|
-
label: PropTypes.string,
|
|
14
|
-
onClick: PropTypes.func,
|
|
15
|
-
href: PropTypes.string
|
|
16
|
-
}).description("Properties of the ActionLink component").defaultValue({}),
|
|
17
|
-
actionRef: PropTypes.object.description(`
|
|
18
|
-
Reference to use actions:
|
|
19
|
-
- focusOnLink: function to focus the banner
|
|
20
|
-
- focusOnWrapper: function to focus the link
|
|
21
|
-
`).defaultValue({})
|
|
22
|
-
};
|
|
23
|
-
export {
|
|
24
|
-
propTypes
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=propTypes.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/propTypes.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { PropTypes } from 'react-desc';\nimport { BANNER_TYPES } from './utils/bannerTypes';\n\nexport const propTypes = {\n containerProps: PropTypes.object.description('Set of Properties attached to the main container').defaultValue({}),\n label: PropTypes.string.description('banner s label').defaultValue(''),\n body: PropTypes.string.description('banner s body content').defaultValue(''),\n type: PropTypes.oneOf(Object.values(BANNER_TYPES)).description('banner s type').defaultValue(BANNER_TYPES.INFO),\n onClose: PropTypes.func.description('function executed when the banner closes'),\n isOpen: PropTypes.bool.description('whether the banner is open or closed').defaultValue(true),\n showCloseButton: PropTypes.bool.description('whether to show close button or not').defaultValue(true),\n actionLink: PropTypes.shape({\n label: PropTypes.string,\n onClick: PropTypes.func,\n href: PropTypes.string,\n })\n .description('Properties of the ActionLink component')\n .defaultValue({}),\n actionRef: PropTypes.object\n .description(\n `\n Reference to use actions:\n - focusOnLink: function to focus the banner\n - focusOnWrapper: function to focus the link\n `,\n )\n .defaultValue({}),\n};\n"],
|
|
5
|
-
"mappings": "AAAA;ACAA;AACA;AAEO,MAAM,YAAY;AAAA,EACvB,gBAAgB,UAAU,OAAO,YAAY,oDAAoD,aAAa;AAAA,EAC9G,OAAO,UAAU,OAAO,YAAY,kBAAkB,aAAa;AAAA,EACnE,MAAM,UAAU,OAAO,YAAY,yBAAyB,aAAa;AAAA,EACzE,MAAM,UAAU,MAAM,OAAO,OAAO,eAAe,YAAY,iBAAiB,aAAa,aAAa;AAAA,EAC1G,SAAS,UAAU,KAAK,YAAY;AAAA,EACpC,QAAQ,UAAU,KAAK,YAAY,wCAAwC,aAAa;AAAA,EACxF,iBAAiB,UAAU,KAAK,YAAY,uCAAuC,aAAa;AAAA,EAChG,YAAY,UAAU,MAAM;AAAA,IAC1B,OAAO,UAAU;AAAA,IACjB,SAAS,UAAU;AAAA,IACnB,MAAM,UAAU;AAAA,KAEf,YAAY,0CACZ,aAAa;AAAA,EAChB,WAAW,UAAU,OAClB,YACC;AAAA;AAAA;AAAA;AAAA,OAMD,aAAa;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/esm/styles.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { styled } from "@elliemae/ds-system";
|
|
3
|
-
import DSButton from "@elliemae/ds-button";
|
|
4
|
-
import { handleAnimation, handleBorderColor } from "./utils/styleHelpers";
|
|
5
|
-
const StyledBannerContainer = styled("div", { name: "DS-Banner", slot: "root" })`
|
|
6
|
-
overflow: hidden;
|
|
7
|
-
height: ${({ isOpen }) => isOpen ? "auto" : "0px"};
|
|
8
|
-
${({ isAnimating, isOpen, height }) => handleAnimation(isAnimating, isOpen, height)};
|
|
9
|
-
`;
|
|
10
|
-
const StyledInnerContainer = styled("div", {
|
|
11
|
-
name: "DS-Banner",
|
|
12
|
-
slot: "innerContainer"
|
|
13
|
-
})`
|
|
14
|
-
padding-right: 6px;
|
|
15
|
-
display: grid;
|
|
16
|
-
align-items: center;
|
|
17
|
-
min-height: 41px;
|
|
18
|
-
width: 100%;
|
|
19
|
-
background-color: ${({ theme }) => theme.colors.neutral["000"]};
|
|
20
|
-
border-bottom: 5px solid ${({ type, theme }) => handleBorderColor(type, theme)};
|
|
21
|
-
${({ isAnimating, isOpen }) => handleAnimation(isAnimating, isOpen)};
|
|
22
|
-
&:focus {
|
|
23
|
-
position: relative;
|
|
24
|
-
&:after {
|
|
25
|
-
content: '';
|
|
26
|
-
display: block;
|
|
27
|
-
position: absolute;
|
|
28
|
-
top: 0;
|
|
29
|
-
left: 0;
|
|
30
|
-
pointer-events: none;
|
|
31
|
-
border-radius: 2px;
|
|
32
|
-
width: calc(100%);
|
|
33
|
-
border: 2px solid #1e79c2;
|
|
34
|
-
height: calc(100% + 4px);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
grid-template-columns: auto minmax(auto, auto) minmax(auto, 1fr) auto;
|
|
38
|
-
`;
|
|
39
|
-
const StyledIconContainer = styled("div", { name: "DS-Banner", slot: "iconContainer" })`
|
|
40
|
-
margin-right: ${({ theme }) => theme.space.xxs};
|
|
41
|
-
margin-left: ${({ theme }) => theme.space.xs};
|
|
42
|
-
`;
|
|
43
|
-
const StyledTitle = styled("div", { name: "DS-Banner", slot: "title" })`
|
|
44
|
-
color: ${({ theme }) => theme.colors.neutral[700]};
|
|
45
|
-
font-size: ${({ theme }) => theme.fontSizes.label[400]};
|
|
46
|
-
font-weight: ${({ theme }) => theme.fontWeights.semibold};
|
|
47
|
-
`;
|
|
48
|
-
const StyledSubTitle = styled("div", { name: "DS-Banner", slot: "subtitle" })`
|
|
49
|
-
width: 100%;
|
|
50
|
-
margin-left: ${({ theme }) => theme.space.xs};
|
|
51
|
-
font-size: ${({ theme }) => theme.fontSizes.subTitle[400]};
|
|
52
|
-
font-weight: ${({ theme }) => theme.fontWeights.regular};
|
|
53
|
-
`;
|
|
54
|
-
const StyledActionLink = styled("a", { name: "DS-Banner", slot: "action" })`
|
|
55
|
-
margin-left: ${({ theme, isBodyEmpty }) => isBodyEmpty ? theme.space.xs : 0};
|
|
56
|
-
white-space: nowrap;
|
|
57
|
-
text-decoration: none;
|
|
58
|
-
line-height: 1.1;
|
|
59
|
-
font-size: ${({ theme }) => theme.fontSizes.hyperlink[400]};
|
|
60
|
-
font-weight: ${({ theme }) => theme.fontWeights.regular};
|
|
61
|
-
color: ${({ theme }) => theme.colors.brand[600]};
|
|
62
|
-
`;
|
|
63
|
-
const StyledCloseButton = styled(DSButton, { name: "DS-Banner", slot: "closeButton" })`
|
|
64
|
-
margin-left: ${({ theme }) => theme.space.xxs};
|
|
65
|
-
&:not(focus) {
|
|
66
|
-
border: transparent;
|
|
67
|
-
}
|
|
68
|
-
`;
|
|
69
|
-
export {
|
|
70
|
-
StyledActionLink,
|
|
71
|
-
StyledBannerContainer,
|
|
72
|
-
StyledCloseButton,
|
|
73
|
-
StyledIconContainer,
|
|
74
|
-
StyledInnerContainer,
|
|
75
|
-
StyledSubTitle,
|
|
76
|
-
StyledTitle
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=styles.js.map
|
package/dist/esm/styles.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/styles.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport DSButton from '@elliemae/ds-button';\nimport type { StyledActionLinkT, StyledBannerContainerT, StyledInnerContainerT } from './index.d';\nimport { handleAnimation, handleBorderColor } from './utils/styleHelpers';\n\nexport const StyledBannerContainer = styled<StyledBannerContainerT>('div', { name: 'DS-Banner', slot: 'root' })`\n overflow: hidden;\n height: ${({ isOpen }) => (isOpen ? 'auto' : '0px')};\n ${({ isAnimating, isOpen, height }) => handleAnimation(isAnimating, isOpen, height)};\n`;\n\nexport const StyledInnerContainer = styled<StyledInnerContainerT>('div', {\n name: 'DS-Banner',\n slot: 'innerContainer',\n})`\n padding-right: 6px;\n display: grid;\n align-items: center;\n min-height: 41px;\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral['000']};\n border-bottom: 5px solid ${({ type, theme }) => handleBorderColor(type, theme)};\n ${({ isAnimating, isOpen }) => handleAnimation(isAnimating, isOpen)};\n &:focus {\n position: relative;\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n border-radius: 2px;\n width: calc(100%);\n border: 2px solid #1e79c2;\n height: calc(100% + 4px);\n }\n }\n grid-template-columns: auto minmax(auto, auto) minmax(auto, 1fr) auto;\n`;\n\nexport const StyledIconContainer = styled('div', { name: 'DS-Banner', slot: 'iconContainer' })`\n margin-right: ${({ theme }) => theme.space.xxs};\n margin-left: ${({ theme }) => theme.space.xs};\n`;\n\nexport const StyledTitle = styled('div', { name: 'DS-Banner', slot: 'title' })`\n color: ${({ theme }) => theme.colors.neutral[700]};\n font-size: ${({ theme }) => theme.fontSizes.label[400]};\n font-weight: ${({ theme }) => theme.fontWeights.semibold};\n`;\n\nexport const StyledSubTitle = styled('div', { name: 'DS-Banner', slot: 'subtitle' })`\n width: 100%;\n margin-left: ${({ theme }) => theme.space.xs};\n font-size: ${({ theme }) => theme.fontSizes.subTitle[400]};\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n`;\n\nexport const StyledActionLink = styled<StyledActionLinkT>('a', { name: 'DS-Banner', slot: 'action' })`\n margin-left: ${({ theme, isBodyEmpty }) => (isBodyEmpty ? theme.space.xs : 0)};\n white-space: nowrap;\n text-decoration: none;\n line-height: 1.1;\n font-size: ${({ theme }) => theme.fontSizes.hyperlink[400]};\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n color: ${({ theme }) => theme.colors.brand[600]};\n`;\n\nexport const StyledCloseButton = styled(DSButton, { name: 'DS-Banner', slot: 'closeButton' })`\n margin-left: ${({ theme }) => theme.space.xxs};\n &:not(focus) {\n border: transparent;\n }\n`;\n"],
|
|
5
|
-
"mappings": "AAAA;ACAA;AACA;AAEA;AAEO,MAAM,wBAAwB,OAA+B,OAAO,EAAE,MAAM,aAAa,MAAM;AAAA;AAAA,YAE1F,CAAC,EAAE,aAAc,SAAS,SAAS;AAAA,IAC3C,CAAC,EAAE,aAAa,QAAQ,aAAa,gBAAgB,aAAa,QAAQ;AAAA;AAGvE,MAAM,uBAAuB,OAA8B,OAAO;AAAA,EACvE,MAAM;AAAA,EACN,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOc,CAAC,EAAE,YAAY,MAAM,OAAO,QAAQ;AAAA,6BAC7B,CAAC,EAAE,MAAM,YAAY,kBAAkB,MAAM;AAAA,IACtE,CAAC,EAAE,aAAa,aAAa,gBAAgB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBvD,MAAM,sBAAsB,OAAO,OAAO,EAAE,MAAM,aAAa,MAAM;AAAA,kBAC1D,CAAC,EAAE,YAAY,MAAM,MAAM;AAAA,iBAC5B,CAAC,EAAE,YAAY,MAAM,MAAM;AAAA;AAGrC,MAAM,cAAc,OAAO,OAAO,EAAE,MAAM,aAAa,MAAM;AAAA,WACzD,CAAC,EAAE,YAAY,MAAM,OAAO,QAAQ;AAAA,eAChC,CAAC,EAAE,YAAY,MAAM,UAAU,MAAM;AAAA,iBACnC,CAAC,EAAE,YAAY,MAAM,YAAY;AAAA;AAG3C,MAAM,iBAAiB,OAAO,OAAO,EAAE,MAAM,aAAa,MAAM;AAAA;AAAA,iBAEtD,CAAC,EAAE,YAAY,MAAM,MAAM;AAAA,eAC7B,CAAC,EAAE,YAAY,MAAM,UAAU,SAAS;AAAA,iBACtC,CAAC,EAAE,YAAY,MAAM,YAAY;AAAA;AAG3C,MAAM,mBAAmB,OAA0B,KAAK,EAAE,MAAM,aAAa,MAAM;AAAA,iBACzE,CAAC,EAAE,OAAO,kBAAmB,cAAc,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,eAI9D,CAAC,EAAE,YAAY,MAAM,UAAU,UAAU;AAAA,iBACvC,CAAC,EAAE,YAAY,MAAM,YAAY;AAAA,WACvC,CAAC,EAAE,YAAY,MAAM,OAAO,MAAM;AAAA;AAGtC,MAAM,oBAAoB,OAAO,UAAU,EAAE,MAAM,aAAa,MAAM;AAAA,iBAC5D,CAAC,EAAE,YAAY,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/bannerTypes.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const BANNER_TYPES = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n DANGER: 'danger',\n} as const;\n"],
|
|
5
|
-
"mappings": "AAAA;ACAO,MAAM,eAAe;AAAA,EAC1B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/esm/utils/icons.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import React2 from "react";
|
|
3
|
-
import { AlertsDetailFill, InfoFill, SuccessFill, WarningSquare } from "@elliemae/ds-icons";
|
|
4
|
-
const icons = {
|
|
5
|
-
success: /* @__PURE__ */ React2.createElement(SuccessFill, {
|
|
6
|
-
fill: "#207e56",
|
|
7
|
-
width: "20px",
|
|
8
|
-
height: "20px"
|
|
9
|
-
}),
|
|
10
|
-
info: /* @__PURE__ */ React2.createElement(InfoFill, {
|
|
11
|
-
fill: "#1e79c2",
|
|
12
|
-
width: "20px",
|
|
13
|
-
height: "20px"
|
|
14
|
-
}),
|
|
15
|
-
danger: /* @__PURE__ */ React2.createElement(AlertsDetailFill, {
|
|
16
|
-
fill: "#c64252",
|
|
17
|
-
width: "20px",
|
|
18
|
-
height: "20px"
|
|
19
|
-
}),
|
|
20
|
-
warning: /* @__PURE__ */ React2.createElement(WarningSquare, {
|
|
21
|
-
fill: "#d17a00",
|
|
22
|
-
width: "20px",
|
|
23
|
-
height: "20px"
|
|
24
|
-
})
|
|
25
|
-
};
|
|
26
|
-
export {
|
|
27
|
-
icons
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=icons.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/icons.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { AlertsDetailFill, InfoFill, SuccessFill, WarningSquare } from '@elliemae/ds-icons';\n\nexport const icons = {\n success: <SuccessFill fill=\"#207e56\" width=\"20px\" height=\"20px\" />,\n info: <InfoFill fill=\"#1e79c2\" width=\"20px\" height=\"20px\" />,\n danger: <AlertsDetailFill fill=\"#c64252\" width=\"20px\" height=\"20px\" />,\n warning: <WarningSquare fill=\"#d17a00\" width=\"20px\" height=\"20px\" />,\n};\n"],
|
|
5
|
-
"mappings": "AAAA;ACAA;AACA;AAEO,MAAM,QAAQ;AAAA,EACnB,SAAS,qCAAC,aAAD;AAAA,IAAa,MAAK;AAAA,IAAU,OAAM;AAAA,IAAO,QAAO;AAAA;AAAA,EACzD,MAAM,qCAAC,UAAD;AAAA,IAAU,MAAK;AAAA,IAAU,OAAM;AAAA,IAAO,QAAO;AAAA;AAAA,EACnD,QAAQ,qCAAC,kBAAD;AAAA,IAAkB,MAAK;AAAA,IAAU,OAAM;AAAA,IAAO,QAAO;AAAA;AAAA,EAC7D,SAAS,qCAAC,eAAD;AAAA,IAAe,MAAK;AAAA,IAAU,OAAM;AAAA,IAAO,QAAO;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { kfrm, css } from "@elliemae/ds-system";
|
|
3
|
-
import { BANNER_TYPES } from "./bannerTypes";
|
|
4
|
-
const slideIn = kfrm`
|
|
5
|
-
0% {
|
|
6
|
-
transform: translate3d(0, -100%, 0);
|
|
7
|
-
}
|
|
8
|
-
100% {
|
|
9
|
-
transform: translate3d(0, 0, 0);
|
|
10
|
-
}
|
|
11
|
-
`;
|
|
12
|
-
const slideOut = kfrm`
|
|
13
|
-
0% {
|
|
14
|
-
transform: translate3d(0, 0, 0);
|
|
15
|
-
opacity: 1;
|
|
16
|
-
}
|
|
17
|
-
60% {
|
|
18
|
-
opacity: 0;
|
|
19
|
-
}
|
|
20
|
-
100% {
|
|
21
|
-
opacity: 0;
|
|
22
|
-
transform: translate3d(0, -100%, 0);
|
|
23
|
-
}
|
|
24
|
-
`;
|
|
25
|
-
const spanContainer = (height) => kfrm`
|
|
26
|
-
0% {
|
|
27
|
-
height: 0px;
|
|
28
|
-
}
|
|
29
|
-
100% {
|
|
30
|
-
height: ${height}px;
|
|
31
|
-
}
|
|
32
|
-
`;
|
|
33
|
-
const shrinkContainer = (height) => kfrm`
|
|
34
|
-
0% {
|
|
35
|
-
height: ${height}px;
|
|
36
|
-
}
|
|
37
|
-
100% {
|
|
38
|
-
height: 0px;
|
|
39
|
-
}
|
|
40
|
-
`;
|
|
41
|
-
const handleBorderColor = (type, { colors }) => {
|
|
42
|
-
switch (type) {
|
|
43
|
-
case BANNER_TYPES.SUCCESS:
|
|
44
|
-
return colors.success[900];
|
|
45
|
-
case BANNER_TYPES.INFO:
|
|
46
|
-
return colors.brand[600];
|
|
47
|
-
case BANNER_TYPES.WARNING:
|
|
48
|
-
return colors.warning[900];
|
|
49
|
-
case BANNER_TYPES.DANGER:
|
|
50
|
-
return colors.danger[900];
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
const handleAnimation = (isAnimating, isOpen, height = null) => {
|
|
54
|
-
if (isAnimating) {
|
|
55
|
-
if (isOpen) {
|
|
56
|
-
return css`
|
|
57
|
-
animation: ${height ? spanContainer(height) : slideIn} 0.5s ease-in;
|
|
58
|
-
`;
|
|
59
|
-
} else {
|
|
60
|
-
return css`
|
|
61
|
-
animation: ${height ? shrinkContainer(height) : slideOut} 0.5s ease-in;
|
|
62
|
-
`;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
export {
|
|
67
|
-
handleAnimation,
|
|
68
|
-
handleBorderColor
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=styleHelpers.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/styleHelpers.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { kfrm, css } from '@elliemae/ds-system';\nimport type { FlattenSimpleInterpolation } from 'styled-components';\nimport { BANNER_TYPES } from './bannerTypes';\n\nconst slideIn = kfrm`\n 0% {\n transform: translate3d(0, -100%, 0);\n }\n 100% {\n transform: translate3d(0, 0, 0);\n }\n`;\n\nconst slideOut = kfrm`\n 0% {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n 60% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n transform: translate3d(0, -100%, 0);\n }\n`;\n\nconst spanContainer = (height: number) => kfrm`\n 0% {\n height: 0px;\n }\n 100% {\n height: ${height}px;\n }\n`;\n\nconst shrinkContainer = (height: number) => kfrm`\n 0% {\n height: ${height}px;\n }\n 100% {\n height: 0px;\n }\n`;\n\nexport const handleBorderColor = (type, { colors }): string => {\n switch (type) {\n case BANNER_TYPES.SUCCESS:\n return colors.success[900];\n case BANNER_TYPES.INFO:\n return colors.brand[600];\n case BANNER_TYPES.WARNING:\n return colors.warning[900];\n case BANNER_TYPES.DANGER:\n return colors.danger[900];\n }\n};\n\nexport const handleAnimation = (\n isAnimating: boolean,\n isOpen: boolean,\n height: number | null = null,\n): FlattenSimpleInterpolation => {\n if (isAnimating) {\n if (isOpen) {\n return css`\n animation: ${height ? spanContainer(height) : slideIn} 0.5s ease-in;\n `;\n } else {\n return css`\n animation: ${height ? shrinkContainer(height) : slideOut} 0.5s ease-in;\n `;\n }\n }\n};\n"],
|
|
5
|
-
"mappings": "AAAA;ACAA;AAEA;AAEA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAShB,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcjB,MAAM,gBAAgB,CAAC,WAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,cAK5B;AAAA;AAAA;AAId,MAAM,kBAAkB,CAAC,WAAmB;AAAA;AAAA,cAE9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAOP,MAAM,oBAAoB,CAAC,MAAM,EAAE,aAAqB;AAC7D,UAAQ;AAAA,SACD,aAAa;AAChB,aAAO,OAAO,QAAQ;AAAA,SACnB,aAAa;AAChB,aAAO,OAAO,MAAM;AAAA,SACjB,aAAa;AAChB,aAAO,OAAO,QAAQ;AAAA,SACnB,aAAa;AAChB,aAAO,OAAO,OAAO;AAAA;AAAA;AAIpB,MAAM,kBAAkB,CAC7B,aACA,QACA,SAAwB,SACO;AAC/B,MAAI,aAAa;AACf,QAAI,QAAQ;AACV,aAAO;AAAA,qBACQ,SAAS,cAAc,UAAU;AAAA;AAAA,WAE3C;AACL,aAAO;AAAA,qBACQ,SAAS,gBAAgB,UAAU;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|