@elliemae/ds-chat-bubble 3.6.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/dist/cjs/ChatBubble.js +112 -0
- package/dist/cjs/ChatBubble.js.map +7 -0
- package/dist/cjs/ChatBubbleArrow.js +117 -0
- package/dist/cjs/ChatBubbleArrow.js.map +7 -0
- package/dist/cjs/ChatBubbleDataTestIds.js +37 -0
- package/dist/cjs/ChatBubbleDataTestIds.js.map +7 -0
- package/dist/cjs/index.js +40 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/react-desc-prop-types.js +65 -0
- package/dist/cjs/react-desc-prop-types.js.map +7 -0
- package/dist/cjs/styled.js +143 -0
- package/dist/cjs/styled.js.map +7 -0
- package/dist/esm/ChatBubble.js +95 -0
- package/dist/esm/ChatBubble.js.map +7 -0
- package/dist/esm/ChatBubbleArrow.js +91 -0
- package/dist/esm/ChatBubbleArrow.js.map +7 -0
- package/dist/esm/ChatBubbleDataTestIds.js +11 -0
- package/dist/esm/ChatBubbleDataTestIds.js.map +7 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/react-desc-prop-types.js +39 -0
- package/dist/esm/react-desc-prop-types.js.map +7 -0
- package/dist/esm/styled.js +117 -0
- package/dist/esm/styled.js.map +7 -0
- package/package.json +80 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var ChatBubble_exports = {};
|
|
26
|
+
__export(ChatBubble_exports, {
|
|
27
|
+
ChatBubble: () => ChatBubble,
|
|
28
|
+
ChatBubbleWithSchema: () => ChatBubbleWithSchema
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(ChatBubble_exports);
|
|
31
|
+
var React = __toESM(require("react"));
|
|
32
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
33
|
+
var import_react = __toESM(require("react"));
|
|
34
|
+
var import_ds_utilities = require("@elliemae/ds-utilities");
|
|
35
|
+
var import_ds_icons = require("@elliemae/ds-icons");
|
|
36
|
+
var import_styled = require("./styled");
|
|
37
|
+
var import_react_desc_prop_types = require("./react-desc-prop-types");
|
|
38
|
+
var import_ChatBubbleArrow = require("./ChatBubbleArrow");
|
|
39
|
+
var import_ChatBubbleDataTestIds = require("./ChatBubbleDataTestIds");
|
|
40
|
+
const ChatBubble = (props) => {
|
|
41
|
+
const propsWithDefault = (0, import_ds_utilities.useMemoMergePropsWithDefault)(props, import_react_desc_prop_types.defaultBubbleProps);
|
|
42
|
+
(0, import_ds_utilities.useValidateTypescriptPropTypes)(propsWithDefault, import_react_desc_prop_types.BubblesPropTypes);
|
|
43
|
+
const { dsId, type, title, time, body, errorMessage, helpMessage } = propsWithDefault;
|
|
44
|
+
const bodyParts = import_react.default.useMemo(() => typeof body === "string" ? body.split("\n") : [body], [body]);
|
|
45
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledWrapper, {
|
|
46
|
+
"data-testid": `${import_ChatBubbleDataTestIds.ChatBubbleDataTestIds.BUBBLE}-${dsId}`,
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledColoredBubble, {
|
|
49
|
+
type,
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledTitleBubble, {
|
|
52
|
+
cols: ["1fr", "auto"],
|
|
53
|
+
gutter: "xs",
|
|
54
|
+
alignItems: "flex-end",
|
|
55
|
+
className: "sr-only",
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledTitleLeftBubble, {
|
|
58
|
+
alignItems: "center",
|
|
59
|
+
"data-testid": `${import_ChatBubbleDataTestIds.ChatBubbleDataTestIds.BUBBLE_TITLE}-${dsId}`,
|
|
60
|
+
children: title
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledTitleRightBubble, {
|
|
63
|
+
alignItems: "center",
|
|
64
|
+
type,
|
|
65
|
+
"data-testid": `${import_ChatBubbleDataTestIds.ChatBubbleDataTestIds.BUBBLE_TIME}-${dsId}`,
|
|
66
|
+
children: time
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyleBodyWrapper, {
|
|
71
|
+
"data-testid": `chat-bubble-body-${dsId}`,
|
|
72
|
+
children: bodyParts.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.default.Fragment, {
|
|
73
|
+
children: [
|
|
74
|
+
item,
|
|
75
|
+
index < bodyParts.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}) : null
|
|
76
|
+
]
|
|
77
|
+
}, `${item}-${dsId}`))
|
|
78
|
+
}),
|
|
79
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ChatBubbleArrow.ChatBubbleArrow, {
|
|
80
|
+
type
|
|
81
|
+
})
|
|
82
|
+
]
|
|
83
|
+
}),
|
|
84
|
+
errorMessage ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyleErrorMessage, {
|
|
85
|
+
"data-testid": `chat-bubble-error-message-${dsId}`,
|
|
86
|
+
p: "xxs",
|
|
87
|
+
gutter: "xxs",
|
|
88
|
+
cols: [1, "auto"],
|
|
89
|
+
children: [
|
|
90
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
91
|
+
children: errorMessage
|
|
92
|
+
}),
|
|
93
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.WarningCircleFill, {})
|
|
94
|
+
]
|
|
95
|
+
}) : null,
|
|
96
|
+
helpMessage ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyleHelpMessage, {
|
|
97
|
+
"data-testid": `chat-bubble-help-message-${dsId}`,
|
|
98
|
+
p: "xxs",
|
|
99
|
+
gutter: "xxs",
|
|
100
|
+
cols: [1, "auto"],
|
|
101
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
102
|
+
children: helpMessage
|
|
103
|
+
})
|
|
104
|
+
}) : null
|
|
105
|
+
]
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
ChatBubble.propTypes = import_react_desc_prop_types.BubblesPropTypes;
|
|
109
|
+
ChatBubble.displayName = "ChatBubble";
|
|
110
|
+
const ChatBubbleWithSchema = (0, import_ds_utilities.describe)(ChatBubble);
|
|
111
|
+
ChatBubbleWithSchema.propTypes = import_react_desc_prop_types.BubblesPropTypes;
|
|
112
|
+
//# sourceMappingURL=ChatBubble.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ChatBubble.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["import React, { WeakValidationMap } from 'react';\nimport { describe, useValidateTypescriptPropTypes, useMemoMergePropsWithDefault } from '@elliemae/ds-utilities';\nimport { WarningCircleFill } from '@elliemae/ds-icons';\nimport {\n StyledWrapper,\n StyledColoredBubble,\n StyledTitleBubble,\n StyledTitleLeftBubble,\n StyledTitleRightBubble,\n StyleBodyWrapper,\n StyleErrorMessage,\n StyleHelpMessage,\n} from './styled';\nimport { BubblesPropTypes, DSChatBubbleT, defaultBubbleProps } from './react-desc-prop-types';\nimport { ChatBubbleArrow } from './ChatBubbleArrow';\nimport { ChatBubbleDataTestIds } from './ChatBubbleDataTestIds';\nconst ChatBubble: React.ComponentType<DSChatBubbleT.Props> = (props) => {\n const propsWithDefault = useMemoMergePropsWithDefault(props, defaultBubbleProps);\n useValidateTypescriptPropTypes(propsWithDefault, BubblesPropTypes);\n\n const { dsId, type, title, time, body, errorMessage, helpMessage } = propsWithDefault;\n const bodyParts = React.useMemo(() => (typeof body === 'string' ? body.split('\\n') : [body]), [body]);\n return (\n <StyledWrapper data-testid={`${ChatBubbleDataTestIds.BUBBLE}-${dsId}`}>\n <StyledColoredBubble type={type}>\n <StyledTitleBubble cols={['1fr', 'auto']} gutter=\"xs\" alignItems=\"flex-end\" className=\"sr-only\">\n <StyledTitleLeftBubble alignItems=\"center\" data-testid={`${ChatBubbleDataTestIds.BUBBLE_TITLE}-${dsId}`}>\n {title}\n </StyledTitleLeftBubble>\n <StyledTitleRightBubble\n alignItems=\"center\"\n type={type}\n data-testid={`${ChatBubbleDataTestIds.BUBBLE_TIME}-${dsId}`}\n >\n {time}\n </StyledTitleRightBubble>\n </StyledTitleBubble>\n <StyleBodyWrapper data-testid={`chat-bubble-body-${dsId}`}>\n {bodyParts.map((item, index) => (\n <React.Fragment key={`${item}-${dsId}`}>\n {item}\n {index < bodyParts.length - 1 ? <br /> : null}\n </React.Fragment>\n ))}\n </StyleBodyWrapper>\n <ChatBubbleArrow type={type} />\n </StyledColoredBubble>\n {errorMessage ? (\n <StyleErrorMessage data-testid={`chat-bubble-error-message-${dsId}`} p=\"xxs\" gutter=\"xxs\" cols={[1, 'auto']}>\n <span>{errorMessage}</span>\n <WarningCircleFill />\n </StyleErrorMessage>\n ) : null}\n {helpMessage ? (\n <StyleHelpMessage data-testid={`chat-bubble-help-message-${dsId}`} p=\"xxs\" gutter=\"xxs\" cols={[1, 'auto']}>\n <span>{helpMessage}</span>\n </StyleHelpMessage>\n ) : null}\n </StyledWrapper>\n );\n};\n\nChatBubble.propTypes = BubblesPropTypes as WeakValidationMap<unknown>;\nChatBubble.displayName = 'ChatBubble';\nconst ChatBubbleWithSchema = describe(ChatBubble);\nChatBubbleWithSchema.propTypes = BubblesPropTypes as WeakValidationMap<unknown>;\n\nexport { ChatBubble, ChatBubbleWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAyC;AACzC,0BAAuF;AACvF,sBAAkC;AAClC,oBASO;AACP,mCAAoE;AACpE,6BAAgC;AAChC,mCAAsC;AACtC,MAAM,aAAuD,CAAC,UAAU;AACtE,QAAM,uBAAmB,kDAA6B,OAAO,+CAAkB;AAC/E,0DAA+B,kBAAkB,6CAAgB;AAEjE,QAAM,EAAE,MAAM,MAAM,OAAO,MAAM,MAAM,cAAc,YAAY,IAAI;AACrE,QAAM,YAAY,aAAAA,QAAM,QAAQ,MAAO,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,GAAI,CAAC,IAAI,CAAC;AACpG,SACE,6CAAC;AAAA,IAAc,eAAa,GAAG,mDAAsB,UAAU;AAAA,IAC7D;AAAA,mDAAC;AAAA,QAAoB;AAAA,QACnB;AAAA,uDAAC;AAAA,YAAkB,MAAM,CAAC,OAAO,MAAM;AAAA,YAAG,QAAO;AAAA,YAAK,YAAW;AAAA,YAAW,WAAU;AAAA,YACpF;AAAA,0DAAC;AAAA,gBAAsB,YAAW;AAAA,gBAAS,eAAa,GAAG,mDAAsB,gBAAgB;AAAA,gBAC9F;AAAA,eACH;AAAA,cACA,4CAAC;AAAA,gBACC,YAAW;AAAA,gBACX;AAAA,gBACA,eAAa,GAAG,mDAAsB,eAAe;AAAA,gBAEpD;AAAA,eACH;AAAA;AAAA,WACF;AAAA,UACA,4CAAC;AAAA,YAAiB,eAAa,oBAAoB;AAAA,YAChD,oBAAU,IAAI,CAAC,MAAM,UACpB,6CAAC,aAAAA,QAAM,UAAN;AAAA,cACE;AAAA;AAAA,gBACA,QAAQ,UAAU,SAAS,IAAI,4CAAC,QAAG,IAAK;AAAA;AAAA,eAFtB,GAAG,QAAQ,MAGhC,CACD;AAAA,WACH;AAAA,UACA,4CAAC;AAAA,YAAgB;AAAA,WAAY;AAAA;AAAA,OAC/B;AAAA,MACC,eACC,6CAAC;AAAA,QAAkB,eAAa,6BAA6B;AAAA,QAAQ,GAAE;AAAA,QAAM,QAAO;AAAA,QAAM,MAAM,CAAC,GAAG,MAAM;AAAA,QACxG;AAAA,sDAAC;AAAA,YAAM;AAAA,WAAa;AAAA,UACpB,4CAAC,qCAAkB;AAAA;AAAA,OACrB,IACE;AAAA,MACH,cACC,4CAAC;AAAA,QAAiB,eAAa,4BAA4B;AAAA,QAAQ,GAAE;AAAA,QAAM,QAAO;AAAA,QAAM,MAAM,CAAC,GAAG,MAAM;AAAA,QACtG,sDAAC;AAAA,UAAM;AAAA,SAAY;AAAA,OACrB,IACE;AAAA;AAAA,GACN;AAEJ;AAEA,WAAW,YAAY;AACvB,WAAW,cAAc;AACzB,MAAM,2BAAuB,8BAAS,UAAU;AAChD,qBAAqB,YAAY;",
|
|
6
|
+
"names": ["React"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var ChatBubbleArrow_exports = {};
|
|
26
|
+
__export(ChatBubbleArrow_exports, {
|
|
27
|
+
ChatBubbleArrow: () => ChatBubbleArrow
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(ChatBubbleArrow_exports);
|
|
30
|
+
var React = __toESM(require("react"));
|
|
31
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
|
+
var import_styled = require("./styled");
|
|
33
|
+
var import_react_desc_prop_types = require("./react-desc-prop-types");
|
|
34
|
+
const ChatBubbleArrow = ({ type }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledBubbleArrow, {
|
|
35
|
+
children: type === import_react_desc_prop_types.BUBBLE_TYPES.RECIPIENT ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
36
|
+
width: "15px",
|
|
37
|
+
height: "14px",
|
|
38
|
+
viewBox: "0 0 15 14",
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("defs", {
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
43
|
+
d: "M12,8.5 C12,7.9373169 11.6782751,7.4856453 11.2282104,7.196228 C11.2286673,7.1967363 3,2 3,2 L3,10 L10.5627441,10 L10.5658569,9.9933472 C11.3630371,9.9580688 12,9.3058472 12,8.5 Z",
|
|
44
|
+
id: "path-chat-bubble"
|
|
45
|
+
}),
|
|
46
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", {
|
|
47
|
+
x: "-55.6%",
|
|
48
|
+
y: "-50.0%",
|
|
49
|
+
width: "211.1%",
|
|
50
|
+
height: "225.0%",
|
|
51
|
+
filterUnits: "objectBoundingBox",
|
|
52
|
+
id: "filter-2",
|
|
53
|
+
children: [
|
|
54
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feOffset", {
|
|
55
|
+
dx: "2.3",
|
|
56
|
+
dy: "1.2",
|
|
57
|
+
in: "SourceAlpha",
|
|
58
|
+
result: "shadowOffsetOuter1"
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", {
|
|
61
|
+
stdDeviation: "1.5",
|
|
62
|
+
in: "shadowOffsetOuter1",
|
|
63
|
+
result: "shadowBlurOuter1"
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("feColorMatrix", {
|
|
66
|
+
values: "0 0 0 0 0.207843137 \n 0 0 0 0 0.235294118 \n 0 0 0 0 0.274509804 \n 0 0 0 0.8 0",
|
|
67
|
+
type: "matrix",
|
|
68
|
+
in: "shadowBlurOuter1"
|
|
69
|
+
})
|
|
70
|
+
]
|
|
71
|
+
})
|
|
72
|
+
]
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
75
|
+
id: "[DSK]-Visual-Design",
|
|
76
|
+
stroke: "none",
|
|
77
|
+
strokeWidth: "1",
|
|
78
|
+
fill: "none",
|
|
79
|
+
fillRule: "evenodd",
|
|
80
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
81
|
+
id: "Path-Copy",
|
|
82
|
+
transform: "translate(7.500000, 6.000000) scale(-1, 1) translate(-7.500000, -6.000000) ",
|
|
83
|
+
children: [
|
|
84
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", {
|
|
85
|
+
fill: "black",
|
|
86
|
+
fillOpacity: "1",
|
|
87
|
+
filter: "url(#filter-2)",
|
|
88
|
+
xlinkHref: "#path-chat-bubble"
|
|
89
|
+
}),
|
|
90
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", {
|
|
91
|
+
fill: "#FFFFFF",
|
|
92
|
+
fillRule: "evenodd",
|
|
93
|
+
xlinkHref: "#path-chat-bubble"
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
100
|
+
width: "9px",
|
|
101
|
+
height: "8px",
|
|
102
|
+
viewBox: "0 0 9 8",
|
|
103
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
104
|
+
stroke: "none",
|
|
105
|
+
strokeWidth: "1",
|
|
106
|
+
fill: "none",
|
|
107
|
+
fillRule: "evenodd",
|
|
108
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
109
|
+
d: "M9,6.5 C9,5.9373169 8.6782751,5.4856453 8.2282104,5.196228 C8.2286673,5.1967363 0,0 0,0 L0,8 L7.5627441,8 L7.5658569,7.9933472 C8.3630371,7.9580688 9,7.3058472 9,6.5 Z",
|
|
110
|
+
id: "Path",
|
|
111
|
+
fill: "#1E79C2"
|
|
112
|
+
})
|
|
113
|
+
})
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
ChatBubbleArrow.propTypes = import_react_desc_prop_types.propsArrowBubble;
|
|
117
|
+
//# sourceMappingURL=ChatBubbleArrow.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ChatBubbleArrow.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["import React, { WeakValidationMap } from 'react';\nimport { StyledBubbleArrow } from './styled';\nimport { BUBBLE_TYPES, DSChatBubbleT, propsArrowBubble } from './react-desc-prop-types';\n\nexport const ChatBubbleArrow: React.ComponentType<Pick<DSChatBubbleT.Props, 'type'>> = ({ type }) => (\n <StyledBubbleArrow>\n {type === BUBBLE_TYPES.RECIPIENT ? (\n <svg width=\"15px\" height=\"14px\" viewBox=\"0 0 15 14\">\n <defs>\n <path\n d=\"M12,8.5 C12,7.9373169 11.6782751,7.4856453 11.2282104,7.196228 C11.2286673,7.1967363 3,2 3,2 L3,10 L10.5627441,10 L10.5658569,9.9933472 C11.3630371,9.9580688 12,9.3058472 12,8.5 Z\"\n id=\"path-chat-bubble\"\n ></path>\n <filter x=\"-55.6%\" y=\"-50.0%\" width=\"211.1%\" height=\"225.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n <feOffset dx=\"2.3\" dy=\"1.2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\"></feOffset>\n <feGaussianBlur stdDeviation=\"1.5\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n <feColorMatrix\n values=\"0 0 0 0 0.207843137 \n 0 0 0 0 0.235294118 \n 0 0 0 0 0.274509804 \n 0 0 0 0.8 0\"\n type=\"matrix\"\n in=\"shadowBlurOuter1\"\n ></feColorMatrix>\n </filter>\n </defs>\n <g id=\"[DSK]-Visual-Design\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g id=\"Path-Copy\" transform=\"translate(7.500000, 6.000000) scale(-1, 1) translate(-7.500000, -6.000000) \">\n <use fill=\"black\" fillOpacity=\"1\" filter=\"url(#filter-2)\" xlinkHref=\"#path-chat-bubble\"></use>\n <use fill=\"#FFFFFF\" fillRule=\"evenodd\" xlinkHref=\"#path-chat-bubble\"></use>\n </g>\n </g>\n </svg>\n ) : (\n <svg width=\"9px\" height=\"8px\" viewBox=\"0 0 9 8\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M9,6.5 C9,5.9373169 8.6782751,5.4856453 8.2282104,5.196228 C8.2286673,5.1967363 0,0 0,0 L0,8 L7.5627441,8 L7.5658569,7.9933472 C8.3630371,7.9580688 9,7.3058472 9,6.5 Z\"\n id=\"Path\"\n fill=\"#1E79C2\"\n ></path>\n </g>\n </svg>\n )}\n </StyledBubbleArrow>\n);\n\nChatBubbleArrow.propTypes = propsArrowBubble as WeakValidationMap<unknown>;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AACA,oBAAkC;AAClC,mCAA8D;AAEvD,MAAM,kBAA0E,CAAC,EAAE,KAAK,MAC7F,4CAAC;AAAA,EACE,mBAAS,0CAAa,YACrB,6CAAC;AAAA,IAAI,OAAM;AAAA,IAAO,QAAO;AAAA,IAAO,SAAQ;AAAA,IACtC;AAAA,mDAAC;AAAA,QACC;AAAA,sDAAC;AAAA,YACC,GAAE;AAAA,YACF,IAAG;AAAA,WACJ;AAAA,UACD,6CAAC;AAAA,YAAO,GAAE;AAAA,YAAS,GAAE;AAAA,YAAS,OAAM;AAAA,YAAS,QAAO;AAAA,YAAS,aAAY;AAAA,YAAoB,IAAG;AAAA,YAC9F;AAAA,0DAAC;AAAA,gBAAS,IAAG;AAAA,gBAAM,IAAG;AAAA,gBAAM,IAAG;AAAA,gBAAc,QAAO;AAAA,eAAqB;AAAA,cACzE,4CAAC;AAAA,gBAAe,cAAa;AAAA,gBAAM,IAAG;AAAA,gBAAqB,QAAO;AAAA,eAAmB;AAAA,cACrF,4CAAC;AAAA,gBACC,QAAO;AAAA,gBAIP,MAAK;AAAA,gBACL,IAAG;AAAA,eACJ;AAAA;AAAA,WACH;AAAA;AAAA,OACF;AAAA,MACA,4CAAC;AAAA,QAAE,IAAG;AAAA,QAAsB,QAAO;AAAA,QAAO,aAAY;AAAA,QAAI,MAAK;AAAA,QAAO,UAAS;AAAA,QAC7E,uDAAC;AAAA,UAAE,IAAG;AAAA,UAAY,WAAU;AAAA,UAC1B;AAAA,wDAAC;AAAA,cAAI,MAAK;AAAA,cAAQ,aAAY;AAAA,cAAI,QAAO;AAAA,cAAiB,WAAU;AAAA,aAAoB;AAAA,YACxF,4CAAC;AAAA,cAAI,MAAK;AAAA,cAAU,UAAS;AAAA,cAAU,WAAU;AAAA,aAAoB;AAAA;AAAA,SACvE;AAAA,OACF;AAAA;AAAA,GACF,IAEA,4CAAC;AAAA,IAAI,OAAM;AAAA,IAAM,QAAO;AAAA,IAAM,SAAQ;AAAA,IACpC,sDAAC;AAAA,MAAE,QAAO;AAAA,MAAO,aAAY;AAAA,MAAI,MAAK;AAAA,MAAO,UAAS;AAAA,MACpD,sDAAC;AAAA,QACC,GAAE;AAAA,QACF,IAAG;AAAA,QACH,MAAK;AAAA,OACN;AAAA,KACH;AAAA,GACF;AAAA,CAEJ;AAGF,gBAAgB,YAAY;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var ChatBubbleDataTestIds_exports = {};
|
|
26
|
+
__export(ChatBubbleDataTestIds_exports, {
|
|
27
|
+
ChatBubbleDataTestIds: () => ChatBubbleDataTestIds
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(ChatBubbleDataTestIds_exports);
|
|
30
|
+
var React = __toESM(require("react"));
|
|
31
|
+
const ChatBubbleDataTestIds = {
|
|
32
|
+
BUBBLE: "ds-chat-bubble",
|
|
33
|
+
BUBBLE_TITLE: "chat-bubble-title",
|
|
34
|
+
BUBBLE_BODY: "chat-bubble-body",
|
|
35
|
+
BUBBLE_TIME: "chat-bubble-time"
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=ChatBubbleDataTestIds.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ChatBubbleDataTestIds.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["export const ChatBubbleDataTestIds = {\n BUBBLE: 'ds-chat-bubble',\n BUBBLE_TITLE: 'chat-bubble-title',\n BUBBLE_BODY: 'chat-bubble-body',\n BUBBLE_TIME: 'chat-bubble-time',\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,wBAAwB;AAAA,EACnC,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AACf;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
23
|
+
mod
|
|
24
|
+
));
|
|
25
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
|
+
var src_exports = {};
|
|
27
|
+
__export(src_exports, {
|
|
28
|
+
BUBBLE_TYPES: () => import_react_desc_prop_types.BUBBLE_TYPES,
|
|
29
|
+
ChatBubble: () => import_ChatBubble.ChatBubble,
|
|
30
|
+
ChatBubbleDataTestIds: () => import_ChatBubbleDataTestIds.ChatBubbleDataTestIds,
|
|
31
|
+
ChatBubbleWithSchema: () => import_ChatBubble.ChatBubbleWithSchema,
|
|
32
|
+
DSChatBubbleT: () => import_react_desc_prop_types.DSChatBubbleT
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(src_exports);
|
|
35
|
+
var React = __toESM(require("react"));
|
|
36
|
+
var import_ChatBubble = require("./ChatBubble");
|
|
37
|
+
var import_react_desc_prop_types = require("./react-desc-prop-types");
|
|
38
|
+
var import_ChatBubbleDataTestIds = require("./ChatBubbleDataTestIds");
|
|
39
|
+
__reExport(src_exports, require("./styled"), module.exports);
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["export { ChatBubble, ChatBubbleWithSchema } from './ChatBubble';\nexport { BUBBLE_TYPES, DSChatBubbleT } from './react-desc-prop-types';\nexport { ChatBubbleDataTestIds } from './ChatBubbleDataTestIds';\nexport * from './styled';\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,wBAAiD;AACjD,mCAA4C;AAC5C,mCAAsC;AACtC,wBAAc,qBAHd;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var react_desc_prop_types_exports = {};
|
|
26
|
+
__export(react_desc_prop_types_exports, {
|
|
27
|
+
BUBBLE_TYPES: () => BUBBLE_TYPES,
|
|
28
|
+
BubblesPropTypes: () => BubblesPropTypes,
|
|
29
|
+
defaultBubbleProps: () => defaultBubbleProps,
|
|
30
|
+
propsArrowBubble: () => propsArrowBubble
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(react_desc_prop_types_exports);
|
|
33
|
+
var React = __toESM(require("react"));
|
|
34
|
+
var import_ds_utilities = require("@elliemae/ds-utilities");
|
|
35
|
+
function noop(..._args) {
|
|
36
|
+
}
|
|
37
|
+
const BUBBLE_TYPES = {
|
|
38
|
+
SENDER: "SENDER",
|
|
39
|
+
RECIPIENT: "RECIPIENT",
|
|
40
|
+
DELIMITER: "DELIMITER",
|
|
41
|
+
SYSTEM: "SYSTEM"
|
|
42
|
+
};
|
|
43
|
+
const defaultBubbleProps = {
|
|
44
|
+
dsId: "",
|
|
45
|
+
type: BUBBLE_TYPES.SENDER,
|
|
46
|
+
time: "",
|
|
47
|
+
body: "",
|
|
48
|
+
onClick: noop,
|
|
49
|
+
errorMessage: "",
|
|
50
|
+
helpMessage: ""
|
|
51
|
+
};
|
|
52
|
+
const BubblesPropTypes = {
|
|
53
|
+
dsId: import_ds_utilities.PropTypes.oneOfType([import_ds_utilities.PropTypes.string, import_ds_utilities.PropTypes.number]).description("Unique id for bubble").defaultValue(defaultBubbleProps.dsId),
|
|
54
|
+
type: import_ds_utilities.PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER]).isRequired.description("Define bubble type ").defaultValue(defaultBubbleProps.type),
|
|
55
|
+
title: import_ds_utilities.PropTypes.string.description("Title of the bubble").defaultValue(defaultBubbleProps.title),
|
|
56
|
+
time: import_ds_utilities.PropTypes.string.isRequired.description("Time of the bubble").defaultValue(defaultBubbleProps.title),
|
|
57
|
+
body: import_ds_utilities.PropTypes.oneOfType([import_ds_utilities.PropTypes.string, import_ds_utilities.PropTypes.element]).isRequired.description("Bubble content").defaultValue(defaultBubbleProps.body),
|
|
58
|
+
onClick: import_ds_utilities.PropTypes.func.description("Callback when the bubble is tapped").defaultValue(defaultBubbleProps.onClick),
|
|
59
|
+
errorMessage: import_ds_utilities.PropTypes.oneOfType([import_ds_utilities.PropTypes.string, import_ds_utilities.PropTypes.element]).description("Error message to display at bottom of the bubble").defaultValue(defaultBubbleProps.onClick),
|
|
60
|
+
helpMessage: import_ds_utilities.PropTypes.oneOfType([import_ds_utilities.PropTypes.string, import_ds_utilities.PropTypes.element]).description("Help message to display at bottom of the bubble").defaultValue(defaultBubbleProps.onClick)
|
|
61
|
+
};
|
|
62
|
+
const propsArrowBubble = {
|
|
63
|
+
type: import_ds_utilities.PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER]).isRequired.defaultValue(defaultBubbleProps.type)
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=react-desc-prop-types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/react-desc-prop-types.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["import { PropTypes } from '@elliemae/ds-utilities';\nimport React from 'react';\n\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\nfunction noop<T extends unknown[]>(..._args: T): void {}\nexport const BUBBLE_TYPES = {\n SENDER: 'SENDER',\n RECIPIENT: 'RECIPIENT',\n DELIMITER: 'DELIMITER',\n SYSTEM: 'SYSTEM',\n};\n\nexport declare namespace DSChatBubbleT {\n export interface Props {\n dsId: string | number;\n type: BubbleTypesValues;\n title?: string;\n body: string;\n time: string;\n errorMessage: string | React.ReactChild;\n helpMessage: string | React.ReactChild;\n onClick: (id: string | number) => void;\n }\n\n export type BubbleTypesKeys = keyof typeof BUBBLE_TYPES;\n export type BubbleTypesValues = typeof BUBBLE_TYPES[BubbleTypesKeys];\n}\n\nexport const defaultBubbleProps: DSChatBubbleT.Props = {\n dsId: '',\n type: BUBBLE_TYPES.SENDER,\n time: '',\n body: '',\n onClick: noop,\n errorMessage: '',\n helpMessage: '',\n};\n\nexport const BubblesPropTypes = {\n dsId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .description('Unique id for bubble')\n .defaultValue(defaultBubbleProps.dsId),\n type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER])\n .isRequired.description('Define bubble type ')\n .defaultValue(defaultBubbleProps.type),\n title: PropTypes.string.description('Title of the bubble').defaultValue(defaultBubbleProps.title),\n time: PropTypes.string.isRequired.description('Time of the bubble').defaultValue(defaultBubbleProps.title),\n body: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n .isRequired.description('Bubble content')\n .defaultValue(defaultBubbleProps.body),\n onClick: PropTypes.func.description('Callback when the bubble is tapped').defaultValue(defaultBubbleProps.onClick),\n errorMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n .description('Error message to display at bottom of the bubble')\n .defaultValue(defaultBubbleProps.onClick),\n helpMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n .description('Help message to display at bottom of the bubble')\n .defaultValue(defaultBubbleProps.onClick),\n};\n\nexport const propsArrowBubble = {\n type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER]).isRequired.defaultValue(defaultBubbleProps.type),\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,0BAA0B;AAI1B,SAAS,QAA6B,OAAgB;AAAC;AAChD,MAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AACV;AAkBO,MAAM,qBAA0C;AAAA,EACrD,MAAM;AAAA,EACN,MAAM,aAAa;AAAA,EACnB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,cAAc;AAAA,EACd,aAAa;AACf;AAEO,MAAM,mBAAmB;AAAA,EAC9B,MAAM,8BAAU,UAAU,CAAC,8BAAU,QAAQ,8BAAU,MAAM,CAAC,EAC3D,YAAY,sBAAsB,EAClC,aAAa,mBAAmB,IAAI;AAAA,EACvC,MAAM,8BAAU,MAAM,CAAC,aAAa,WAAW,aAAa,MAAM,CAAC,EAChE,WAAW,YAAY,qBAAqB,EAC5C,aAAa,mBAAmB,IAAI;AAAA,EACvC,OAAO,8BAAU,OAAO,YAAY,qBAAqB,EAAE,aAAa,mBAAmB,KAAK;AAAA,EAChG,MAAM,8BAAU,OAAO,WAAW,YAAY,oBAAoB,EAAE,aAAa,mBAAmB,KAAK;AAAA,EACzG,MAAM,8BAAU,UAAU,CAAC,8BAAU,QAAQ,8BAAU,OAAO,CAAC,EAC5D,WAAW,YAAY,gBAAgB,EACvC,aAAa,mBAAmB,IAAI;AAAA,EACvC,SAAS,8BAAU,KAAK,YAAY,oCAAoC,EAAE,aAAa,mBAAmB,OAAO;AAAA,EACjH,cAAc,8BAAU,UAAU,CAAC,8BAAU,QAAQ,8BAAU,OAAO,CAAC,EACpE,YAAY,kDAAkD,EAC9D,aAAa,mBAAmB,OAAO;AAAA,EAC1C,aAAa,8BAAU,UAAU,CAAC,8BAAU,QAAQ,8BAAU,OAAO,CAAC,EACnE,YAAY,iDAAiD,EAC7D,aAAa,mBAAmB,OAAO;AAC5C;AAEO,MAAM,mBAAmB;AAAA,EAC9B,MAAM,8BAAU,MAAM,CAAC,aAAa,WAAW,aAAa,MAAM,CAAC,EAAE,WAAW,aAAa,mBAAmB,IAAI;AACtH;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var styled_exports = {};
|
|
26
|
+
__export(styled_exports, {
|
|
27
|
+
StyleBodyWrapper: () => StyleBodyWrapper,
|
|
28
|
+
StyleErrorMessage: () => StyleErrorMessage,
|
|
29
|
+
StyleHelpMessage: () => StyleHelpMessage,
|
|
30
|
+
StyledBubbleArrow: () => StyledBubbleArrow,
|
|
31
|
+
StyledColoredBubble: () => StyledColoredBubble,
|
|
32
|
+
StyledTitleBubble: () => StyledTitleBubble,
|
|
33
|
+
StyledTitleLeftBubble: () => StyledTitleLeftBubble,
|
|
34
|
+
StyledTitleRightBubble: () => StyledTitleRightBubble,
|
|
35
|
+
StyledWrapper: () => StyledWrapper
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(styled_exports);
|
|
38
|
+
var React = __toESM(require("react"));
|
|
39
|
+
var import_ds_system = require("@elliemae/ds-system");
|
|
40
|
+
var import_ds_grid = require("@elliemae/ds-grid");
|
|
41
|
+
var import_react_desc_prop_types = require("./react-desc-prop-types");
|
|
42
|
+
const StyledWrapper = import_ds_system.styled.div`
|
|
43
|
+
min-width: 224px;
|
|
44
|
+
border-radius: 10px;
|
|
45
|
+
`;
|
|
46
|
+
const StyledTitleBubble = (0, import_ds_system.styled)(import_ds_grid.Grid)`
|
|
47
|
+
padding-top: 6px;
|
|
48
|
+
padding-left: 10px;
|
|
49
|
+
padding-right: 10px;
|
|
50
|
+
padding-bottom: 4px;
|
|
51
|
+
`;
|
|
52
|
+
const StyledTitleLeftBubble = (0, import_ds_system.styled)(import_ds_grid.Grid)`
|
|
53
|
+
font-size: 13px;
|
|
54
|
+
font-weight: 600;
|
|
55
|
+
`;
|
|
56
|
+
const StyledTitleRightBubble = (0, import_ds_system.styled)(import_ds_grid.Grid)`
|
|
57
|
+
font-size: 13px;
|
|
58
|
+
font-weight: 400;
|
|
59
|
+
color: ${(props) => props.type === import_react_desc_prop_types.BUBBLE_TYPES.SENDER ? "#FFF" : "#657489"};
|
|
60
|
+
`;
|
|
61
|
+
const StyleBodyWrapper = import_ds_system.styled.div`
|
|
62
|
+
font-size: 13px;
|
|
63
|
+
font-weight: 400;
|
|
64
|
+
line-height: 15px;
|
|
65
|
+
min-height: 18px;
|
|
66
|
+
padding: 0px 10px 8px 10px;
|
|
67
|
+
`;
|
|
68
|
+
const StyleErrorMessage = import_ds_system.styled.div`
|
|
69
|
+
font-size: 12px;
|
|
70
|
+
font-weight: 400;
|
|
71
|
+
padding-top: ${(props) => props.theme.space.xxxs};
|
|
72
|
+
color: ${(props) => props.theme.colors.danger[900]};
|
|
73
|
+
align-items: flex-end;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
text-align: right;
|
|
76
|
+
line-height: 15px;
|
|
77
|
+
svg {
|
|
78
|
+
fill: ${(props) => props.theme.colors.danger[900]};
|
|
79
|
+
}
|
|
80
|
+
a {
|
|
81
|
+
font-size: 12px;
|
|
82
|
+
color: ${(props) => props.theme.colors.danger[900]};
|
|
83
|
+
}
|
|
84
|
+
.em-ds-icon {
|
|
85
|
+
margin-left: 8px;
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
88
|
+
const StyleHelpMessage = (0, import_ds_system.styled)(StyleErrorMessage)`
|
|
89
|
+
font-size: 12px;
|
|
90
|
+
line-height: 15px;
|
|
91
|
+
color: ${(props) => props.theme.colors.neutral[500]};
|
|
92
|
+
svg {
|
|
93
|
+
fill: ${(props) => props.theme.colors.danger[900]};
|
|
94
|
+
}
|
|
95
|
+
a {
|
|
96
|
+
font-size: 12px;
|
|
97
|
+
color: ${(props) => props.theme.colors.danger[900]};
|
|
98
|
+
}
|
|
99
|
+
`;
|
|
100
|
+
const StyledBubbleArrow = import_ds_system.styled.div`
|
|
101
|
+
display: block;
|
|
102
|
+
content: '';
|
|
103
|
+
position: absolute;
|
|
104
|
+
bottom: 10px;
|
|
105
|
+
height: 15px;
|
|
106
|
+
`;
|
|
107
|
+
const StyledColoredBubble = import_ds_system.styled.div`
|
|
108
|
+
min-width: 224px;
|
|
109
|
+
border-radius: 10px;
|
|
110
|
+
position: relative;
|
|
111
|
+
|
|
112
|
+
${(props) => props.type === import_react_desc_prop_types.BUBBLE_TYPES.SENDER ? `
|
|
113
|
+
border: 1px solid ${props.theme.colors.brand["700"]};
|
|
114
|
+
background: ${props.theme.colors.brand[600]};
|
|
115
|
+
color: ${props.theme.colors.neutral["000"]};
|
|
116
|
+
${StyledBubbleArrow}{
|
|
117
|
+
right: -9px;
|
|
118
|
+
bottom: 6px;
|
|
119
|
+
svg{
|
|
120
|
+
fill: ${props.theme.colors.brand[600]};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
a {
|
|
125
|
+
color: #FFF;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
` : `
|
|
129
|
+
box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);
|
|
130
|
+
background: ${props.theme.colors.neutral["000"]};
|
|
131
|
+
color: ${props.theme.colors.neutral[700]};
|
|
132
|
+
|
|
133
|
+
${StyledBubbleArrow}{
|
|
134
|
+
left: -11px;
|
|
135
|
+
bottom: 6px;
|
|
136
|
+
svg{
|
|
137
|
+
fill: ${props.theme.colors.neutral["000"]};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
`}
|
|
142
|
+
`;
|
|
143
|
+
//# sourceMappingURL=styled.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/styled.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-lines */\nimport { styled } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { BUBBLE_TYPES } from './react-desc-prop-types';\n\n// Bubble WRAPPER\nexport const StyledWrapper = styled.div`\n min-width: 224px;\n border-radius: 10px;\n`;\n\n// Bubble HEADER\nexport const StyledTitleBubble = styled(Grid)`\n padding-top: 6px;\n padding-left: 10px;\n padding-right: 10px;\n padding-bottom: 4px;\n`;\n\nexport const StyledTitleLeftBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 600;\n`;\nexport const StyledTitleRightBubble = styled(Grid)<{ type: string }>`\n font-size: 13px;\n font-weight: 400;\n color: ${(props) => (props.type === BUBBLE_TYPES.SENDER ? '#FFF' : '#657489')};\n`;\n\nexport const StyleBodyWrapper = styled.div`\n font-size: 13px;\n font-weight: 400;\n line-height: 15px;\n min-height: 18px;\n padding: 0px 10px 8px 10px;\n`;\n\nexport const StyleErrorMessage = styled.div`\n font-size: 12px;\n font-weight: 400;\n padding-top: ${(props) => props.theme.space.xxxs};\n color: ${(props) => props.theme.colors.danger[900]};\n align-items: flex-end;\n justify-content: center;\n text-align: right;\n line-height: 15px;\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n .em-ds-icon {\n margin-left: 8px;\n }\n`;\n\nexport const StyleHelpMessage = styled(StyleErrorMessage)`\n font-size: 12px;\n line-height: 15px;\n color: ${(props) => props.theme.colors.neutral[500]};\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n`;\n\n// bubble sender/ recipient\nexport const StyledBubbleArrow = styled.div`\n display: block;\n content: '';\n position: absolute;\n bottom: 10px;\n height: 15px;\n`;\n\nexport const StyledColoredBubble = styled.div<{ type: string }>`\n min-width: 224px;\n border-radius: 10px;\n position: relative;\n\n ${(props) =>\n props.type === BUBBLE_TYPES.SENDER\n ? `\n border: 1px solid ${props.theme.colors.brand['700']};\n background: ${props.theme.colors.brand[600]};\n color: ${props.theme.colors.neutral['000']};\n ${StyledBubbleArrow}{ \n right: -9px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.brand[600]};\n }\n }\n\n a {\n color: #FFF;\n }\n\n `\n : `\n box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);\n background: ${props.theme.colors.neutral['000']};\n color: ${props.theme.colors.neutral[700]};\n\n ${StyledBubbleArrow}{ \n left: -11px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.neutral['000']};\n }\n }\n\n `}\n`;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,uBAAuB;AACvB,qBAAqB;AACrB,mCAA6B;AAGtB,MAAM,gBAAgB,wBAAO;AAAA;AAAA;AAAA;AAM7B,MAAM,wBAAoB,yBAAO,mBAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAOrC,MAAM,4BAAwB,yBAAO,mBAAI;AAAA;AAAA;AAAA;AAIzC,MAAM,6BAAyB,yBAAO,mBAAI;AAAA;AAAA;AAAA,WAGtC,CAAC,UAAW,MAAM,SAAS,0CAAa,SAAS,SAAS;AAAA;AAG9D,MAAM,mBAAmB,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQhC,MAAM,oBAAoB,wBAAO;AAAA;AAAA;AAAA,iBAGvB,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,WACnC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMpC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,aAIpC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAO3C,MAAM,uBAAmB,yBAAO,iBAAiB;AAAA;AAAA;AAAA,WAG7C,CAAC,UAAU,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA,YAErC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,aAIpC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAK3C,MAAM,oBAAoB,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQjC,MAAM,sBAAsB,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKtC,CAAC,UACD,MAAM,SAAS,0CAAa,SACxB;AAAA,4BACoB,MAAM,MAAM,OAAO,MAAM;AAAA,sBAC/B,MAAM,MAAM,OAAO,MAAM;AAAA,iBAC9B,MAAM,MAAM,OAAO,QAAQ;AAAA,UAClC;AAAA;AAAA;AAAA;AAAA,wBAIc,MAAM,MAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASzC;AAAA;AAAA,sBAEc,MAAM,MAAM,OAAO,QAAQ;AAAA,iBAChC,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA,UAElC;AAAA;AAAA;AAAA;AAAA,wBAIc,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React2 from "react";
|
|
4
|
+
import { describe, useValidateTypescriptPropTypes, useMemoMergePropsWithDefault } from "@elliemae/ds-utilities";
|
|
5
|
+
import { WarningCircleFill } from "@elliemae/ds-icons";
|
|
6
|
+
import {
|
|
7
|
+
StyledWrapper,
|
|
8
|
+
StyledColoredBubble,
|
|
9
|
+
StyledTitleBubble,
|
|
10
|
+
StyledTitleLeftBubble,
|
|
11
|
+
StyledTitleRightBubble,
|
|
12
|
+
StyleBodyWrapper,
|
|
13
|
+
StyleErrorMessage,
|
|
14
|
+
StyleHelpMessage
|
|
15
|
+
} from "./styled";
|
|
16
|
+
import { BubblesPropTypes, defaultBubbleProps } from "./react-desc-prop-types";
|
|
17
|
+
import { ChatBubbleArrow } from "./ChatBubbleArrow";
|
|
18
|
+
import { ChatBubbleDataTestIds } from "./ChatBubbleDataTestIds";
|
|
19
|
+
const ChatBubble = (props) => {
|
|
20
|
+
const propsWithDefault = useMemoMergePropsWithDefault(props, defaultBubbleProps);
|
|
21
|
+
useValidateTypescriptPropTypes(propsWithDefault, BubblesPropTypes);
|
|
22
|
+
const { dsId, type, title, time, body, errorMessage, helpMessage } = propsWithDefault;
|
|
23
|
+
const bodyParts = React2.useMemo(() => typeof body === "string" ? body.split("\n") : [body], [body]);
|
|
24
|
+
return /* @__PURE__ */ jsxs(StyledWrapper, {
|
|
25
|
+
"data-testid": `${ChatBubbleDataTestIds.BUBBLE}-${dsId}`,
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ jsxs(StyledColoredBubble, {
|
|
28
|
+
type,
|
|
29
|
+
children: [
|
|
30
|
+
/* @__PURE__ */ jsxs(StyledTitleBubble, {
|
|
31
|
+
cols: ["1fr", "auto"],
|
|
32
|
+
gutter: "xs",
|
|
33
|
+
alignItems: "flex-end",
|
|
34
|
+
className: "sr-only",
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsx(StyledTitleLeftBubble, {
|
|
37
|
+
alignItems: "center",
|
|
38
|
+
"data-testid": `${ChatBubbleDataTestIds.BUBBLE_TITLE}-${dsId}`,
|
|
39
|
+
children: title
|
|
40
|
+
}),
|
|
41
|
+
/* @__PURE__ */ jsx(StyledTitleRightBubble, {
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
type,
|
|
44
|
+
"data-testid": `${ChatBubbleDataTestIds.BUBBLE_TIME}-${dsId}`,
|
|
45
|
+
children: time
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ jsx(StyleBodyWrapper, {
|
|
50
|
+
"data-testid": `chat-bubble-body-${dsId}`,
|
|
51
|
+
children: bodyParts.map((item, index) => /* @__PURE__ */ jsxs(React2.Fragment, {
|
|
52
|
+
children: [
|
|
53
|
+
item,
|
|
54
|
+
index < bodyParts.length - 1 ? /* @__PURE__ */ jsx("br", {}) : null
|
|
55
|
+
]
|
|
56
|
+
}, `${item}-${dsId}`))
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ jsx(ChatBubbleArrow, {
|
|
59
|
+
type
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
}),
|
|
63
|
+
errorMessage ? /* @__PURE__ */ jsxs(StyleErrorMessage, {
|
|
64
|
+
"data-testid": `chat-bubble-error-message-${dsId}`,
|
|
65
|
+
p: "xxs",
|
|
66
|
+
gutter: "xxs",
|
|
67
|
+
cols: [1, "auto"],
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ jsx("span", {
|
|
70
|
+
children: errorMessage
|
|
71
|
+
}),
|
|
72
|
+
/* @__PURE__ */ jsx(WarningCircleFill, {})
|
|
73
|
+
]
|
|
74
|
+
}) : null,
|
|
75
|
+
helpMessage ? /* @__PURE__ */ jsx(StyleHelpMessage, {
|
|
76
|
+
"data-testid": `chat-bubble-help-message-${dsId}`,
|
|
77
|
+
p: "xxs",
|
|
78
|
+
gutter: "xxs",
|
|
79
|
+
cols: [1, "auto"],
|
|
80
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
81
|
+
children: helpMessage
|
|
82
|
+
})
|
|
83
|
+
}) : null
|
|
84
|
+
]
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
ChatBubble.propTypes = BubblesPropTypes;
|
|
88
|
+
ChatBubble.displayName = "ChatBubble";
|
|
89
|
+
const ChatBubbleWithSchema = describe(ChatBubble);
|
|
90
|
+
ChatBubbleWithSchema.propTypes = BubblesPropTypes;
|
|
91
|
+
export {
|
|
92
|
+
ChatBubble,
|
|
93
|
+
ChatBubbleWithSchema
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=ChatBubble.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/ChatBubble.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { WeakValidationMap } from 'react';\nimport { describe, useValidateTypescriptPropTypes, useMemoMergePropsWithDefault } from '@elliemae/ds-utilities';\nimport { WarningCircleFill } from '@elliemae/ds-icons';\nimport {\n StyledWrapper,\n StyledColoredBubble,\n StyledTitleBubble,\n StyledTitleLeftBubble,\n StyledTitleRightBubble,\n StyleBodyWrapper,\n StyleErrorMessage,\n StyleHelpMessage,\n} from './styled';\nimport { BubblesPropTypes, DSChatBubbleT, defaultBubbleProps } from './react-desc-prop-types';\nimport { ChatBubbleArrow } from './ChatBubbleArrow';\nimport { ChatBubbleDataTestIds } from './ChatBubbleDataTestIds';\nconst ChatBubble: React.ComponentType<DSChatBubbleT.Props> = (props) => {\n const propsWithDefault = useMemoMergePropsWithDefault(props, defaultBubbleProps);\n useValidateTypescriptPropTypes(propsWithDefault, BubblesPropTypes);\n\n const { dsId, type, title, time, body, errorMessage, helpMessage } = propsWithDefault;\n const bodyParts = React.useMemo(() => (typeof body === 'string' ? body.split('\\n') : [body]), [body]);\n return (\n <StyledWrapper data-testid={`${ChatBubbleDataTestIds.BUBBLE}-${dsId}`}>\n <StyledColoredBubble type={type}>\n <StyledTitleBubble cols={['1fr', 'auto']} gutter=\"xs\" alignItems=\"flex-end\" className=\"sr-only\">\n <StyledTitleLeftBubble alignItems=\"center\" data-testid={`${ChatBubbleDataTestIds.BUBBLE_TITLE}-${dsId}`}>\n {title}\n </StyledTitleLeftBubble>\n <StyledTitleRightBubble\n alignItems=\"center\"\n type={type}\n data-testid={`${ChatBubbleDataTestIds.BUBBLE_TIME}-${dsId}`}\n >\n {time}\n </StyledTitleRightBubble>\n </StyledTitleBubble>\n <StyleBodyWrapper data-testid={`chat-bubble-body-${dsId}`}>\n {bodyParts.map((item, index) => (\n <React.Fragment key={`${item}-${dsId}`}>\n {item}\n {index < bodyParts.length - 1 ? <br /> : null}\n </React.Fragment>\n ))}\n </StyleBodyWrapper>\n <ChatBubbleArrow type={type} />\n </StyledColoredBubble>\n {errorMessage ? (\n <StyleErrorMessage data-testid={`chat-bubble-error-message-${dsId}`} p=\"xxs\" gutter=\"xxs\" cols={[1, 'auto']}>\n <span>{errorMessage}</span>\n <WarningCircleFill />\n </StyleErrorMessage>\n ) : null}\n {helpMessage ? (\n <StyleHelpMessage data-testid={`chat-bubble-help-message-${dsId}`} p=\"xxs\" gutter=\"xxs\" cols={[1, 'auto']}>\n <span>{helpMessage}</span>\n </StyleHelpMessage>\n ) : null}\n </StyledWrapper>\n );\n};\n\nChatBubble.propTypes = BubblesPropTypes as WeakValidationMap<unknown>;\nChatBubble.displayName = 'ChatBubble';\nconst ChatBubbleWithSchema = describe(ChatBubble);\nChatBubbleWithSchema.propTypes = BubblesPropTypes as WeakValidationMap<unknown>;\n\nexport { ChatBubble, ChatBubbleWithSchema };\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,OAAOA,YAAkC;AACzC,SAAS,UAAU,gCAAgC,oCAAoC;AACvF,SAAS,yBAAyB;AAClC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAiC,0BAA0B;AACpE,SAAS,uBAAuB;AAChC,SAAS,6BAA6B;AACtC,MAAM,aAAuD,CAAC,UAAU;AACtE,QAAM,mBAAmB,6BAA6B,OAAO,kBAAkB;AAC/E,iCAA+B,kBAAkB,gBAAgB;AAEjE,QAAM,EAAE,MAAM,MAAM,OAAO,MAAM,MAAM,cAAc,YAAY,IAAI;AACrE,QAAM,YAAYA,OAAM,QAAQ,MAAO,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,GAAI,CAAC,IAAI,CAAC;AACpG,SACE,qBAAC;AAAA,IAAc,eAAa,GAAG,sBAAsB,UAAU;AAAA,IAC7D;AAAA,2BAAC;AAAA,QAAoB;AAAA,QACnB;AAAA,+BAAC;AAAA,YAAkB,MAAM,CAAC,OAAO,MAAM;AAAA,YAAG,QAAO;AAAA,YAAK,YAAW;AAAA,YAAW,WAAU;AAAA,YACpF;AAAA,kCAAC;AAAA,gBAAsB,YAAW;AAAA,gBAAS,eAAa,GAAG,sBAAsB,gBAAgB;AAAA,gBAC9F;AAAA,eACH;AAAA,cACA,oBAAC;AAAA,gBACC,YAAW;AAAA,gBACX;AAAA,gBACA,eAAa,GAAG,sBAAsB,eAAe;AAAA,gBAEpD;AAAA,eACH;AAAA;AAAA,WACF;AAAA,UACA,oBAAC;AAAA,YAAiB,eAAa,oBAAoB;AAAA,YAChD,oBAAU,IAAI,CAAC,MAAM,UACpB,qBAACA,OAAM,UAAN;AAAA,cACE;AAAA;AAAA,gBACA,QAAQ,UAAU,SAAS,IAAI,oBAAC,QAAG,IAAK;AAAA;AAAA,eAFtB,GAAG,QAAQ,MAGhC,CACD;AAAA,WACH;AAAA,UACA,oBAAC;AAAA,YAAgB;AAAA,WAAY;AAAA;AAAA,OAC/B;AAAA,MACC,eACC,qBAAC;AAAA,QAAkB,eAAa,6BAA6B;AAAA,QAAQ,GAAE;AAAA,QAAM,QAAO;AAAA,QAAM,MAAM,CAAC,GAAG,MAAM;AAAA,QACxG;AAAA,8BAAC;AAAA,YAAM;AAAA,WAAa;AAAA,UACpB,oBAAC,qBAAkB;AAAA;AAAA,OACrB,IACE;AAAA,MACH,cACC,oBAAC;AAAA,QAAiB,eAAa,4BAA4B;AAAA,QAAQ,GAAE;AAAA,QAAM,QAAO;AAAA,QAAM,MAAM,CAAC,GAAG,MAAM;AAAA,QACtG,8BAAC;AAAA,UAAM;AAAA,SAAY;AAAA,OACrB,IACE;AAAA;AAAA,GACN;AAEJ;AAEA,WAAW,YAAY;AACvB,WAAW,cAAc;AACzB,MAAM,uBAAuB,SAAS,UAAU;AAChD,qBAAqB,YAAY;",
|
|
6
|
+
"names": ["React"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { StyledBubbleArrow } from "./styled";
|
|
4
|
+
import { BUBBLE_TYPES, propsArrowBubble } from "./react-desc-prop-types";
|
|
5
|
+
const ChatBubbleArrow = ({ type }) => /* @__PURE__ */ jsx(StyledBubbleArrow, {
|
|
6
|
+
children: type === BUBBLE_TYPES.RECIPIENT ? /* @__PURE__ */ jsxs("svg", {
|
|
7
|
+
width: "15px",
|
|
8
|
+
height: "14px",
|
|
9
|
+
viewBox: "0 0 15 14",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ jsxs("defs", {
|
|
12
|
+
children: [
|
|
13
|
+
/* @__PURE__ */ jsx("path", {
|
|
14
|
+
d: "M12,8.5 C12,7.9373169 11.6782751,7.4856453 11.2282104,7.196228 C11.2286673,7.1967363 3,2 3,2 L3,10 L10.5627441,10 L10.5658569,9.9933472 C11.3630371,9.9580688 12,9.3058472 12,8.5 Z",
|
|
15
|
+
id: "path-chat-bubble"
|
|
16
|
+
}),
|
|
17
|
+
/* @__PURE__ */ jsxs("filter", {
|
|
18
|
+
x: "-55.6%",
|
|
19
|
+
y: "-50.0%",
|
|
20
|
+
width: "211.1%",
|
|
21
|
+
height: "225.0%",
|
|
22
|
+
filterUnits: "objectBoundingBox",
|
|
23
|
+
id: "filter-2",
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ jsx("feOffset", {
|
|
26
|
+
dx: "2.3",
|
|
27
|
+
dy: "1.2",
|
|
28
|
+
in: "SourceAlpha",
|
|
29
|
+
result: "shadowOffsetOuter1"
|
|
30
|
+
}),
|
|
31
|
+
/* @__PURE__ */ jsx("feGaussianBlur", {
|
|
32
|
+
stdDeviation: "1.5",
|
|
33
|
+
in: "shadowOffsetOuter1",
|
|
34
|
+
result: "shadowBlurOuter1"
|
|
35
|
+
}),
|
|
36
|
+
/* @__PURE__ */ jsx("feColorMatrix", {
|
|
37
|
+
values: "0 0 0 0 0.207843137 \n 0 0 0 0 0.235294118 \n 0 0 0 0 0.274509804 \n 0 0 0 0.8 0",
|
|
38
|
+
type: "matrix",
|
|
39
|
+
in: "shadowBlurOuter1"
|
|
40
|
+
})
|
|
41
|
+
]
|
|
42
|
+
})
|
|
43
|
+
]
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ jsx("g", {
|
|
46
|
+
id: "[DSK]-Visual-Design",
|
|
47
|
+
stroke: "none",
|
|
48
|
+
strokeWidth: "1",
|
|
49
|
+
fill: "none",
|
|
50
|
+
fillRule: "evenodd",
|
|
51
|
+
children: /* @__PURE__ */ jsxs("g", {
|
|
52
|
+
id: "Path-Copy",
|
|
53
|
+
transform: "translate(7.500000, 6.000000) scale(-1, 1) translate(-7.500000, -6.000000) ",
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ jsx("use", {
|
|
56
|
+
fill: "black",
|
|
57
|
+
fillOpacity: "1",
|
|
58
|
+
filter: "url(#filter-2)",
|
|
59
|
+
xlinkHref: "#path-chat-bubble"
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ jsx("use", {
|
|
62
|
+
fill: "#FFFFFF",
|
|
63
|
+
fillRule: "evenodd",
|
|
64
|
+
xlinkHref: "#path-chat-bubble"
|
|
65
|
+
})
|
|
66
|
+
]
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
]
|
|
70
|
+
}) : /* @__PURE__ */ jsx("svg", {
|
|
71
|
+
width: "9px",
|
|
72
|
+
height: "8px",
|
|
73
|
+
viewBox: "0 0 9 8",
|
|
74
|
+
children: /* @__PURE__ */ jsx("g", {
|
|
75
|
+
stroke: "none",
|
|
76
|
+
strokeWidth: "1",
|
|
77
|
+
fill: "none",
|
|
78
|
+
fillRule: "evenodd",
|
|
79
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
80
|
+
d: "M9,6.5 C9,5.9373169 8.6782751,5.4856453 8.2282104,5.196228 C8.2286673,5.1967363 0,0 0,0 L0,8 L7.5627441,8 L7.5658569,7.9933472 C8.3630371,7.9580688 9,7.3058472 9,6.5 Z",
|
|
81
|
+
id: "Path",
|
|
82
|
+
fill: "#1E79C2"
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
ChatBubbleArrow.propTypes = propsArrowBubble;
|
|
88
|
+
export {
|
|
89
|
+
ChatBubbleArrow
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=ChatBubbleArrow.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/ChatBubbleArrow.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { WeakValidationMap } from 'react';\nimport { StyledBubbleArrow } from './styled';\nimport { BUBBLE_TYPES, DSChatBubbleT, propsArrowBubble } from './react-desc-prop-types';\n\nexport const ChatBubbleArrow: React.ComponentType<Pick<DSChatBubbleT.Props, 'type'>> = ({ type }) => (\n <StyledBubbleArrow>\n {type === BUBBLE_TYPES.RECIPIENT ? (\n <svg width=\"15px\" height=\"14px\" viewBox=\"0 0 15 14\">\n <defs>\n <path\n d=\"M12,8.5 C12,7.9373169 11.6782751,7.4856453 11.2282104,7.196228 C11.2286673,7.1967363 3,2 3,2 L3,10 L10.5627441,10 L10.5658569,9.9933472 C11.3630371,9.9580688 12,9.3058472 12,8.5 Z\"\n id=\"path-chat-bubble\"\n ></path>\n <filter x=\"-55.6%\" y=\"-50.0%\" width=\"211.1%\" height=\"225.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n <feOffset dx=\"2.3\" dy=\"1.2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\"></feOffset>\n <feGaussianBlur stdDeviation=\"1.5\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n <feColorMatrix\n values=\"0 0 0 0 0.207843137 \n 0 0 0 0 0.235294118 \n 0 0 0 0 0.274509804 \n 0 0 0 0.8 0\"\n type=\"matrix\"\n in=\"shadowBlurOuter1\"\n ></feColorMatrix>\n </filter>\n </defs>\n <g id=\"[DSK]-Visual-Design\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g id=\"Path-Copy\" transform=\"translate(7.500000, 6.000000) scale(-1, 1) translate(-7.500000, -6.000000) \">\n <use fill=\"black\" fillOpacity=\"1\" filter=\"url(#filter-2)\" xlinkHref=\"#path-chat-bubble\"></use>\n <use fill=\"#FFFFFF\" fillRule=\"evenodd\" xlinkHref=\"#path-chat-bubble\"></use>\n </g>\n </g>\n </svg>\n ) : (\n <svg width=\"9px\" height=\"8px\" viewBox=\"0 0 9 8\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M9,6.5 C9,5.9373169 8.6782751,5.4856453 8.2282104,5.196228 C8.2286673,5.1967363 0,0 0,0 L0,8 L7.5627441,8 L7.5658569,7.9933472 C8.3630371,7.9580688 9,7.3058472 9,6.5 Z\"\n id=\"Path\"\n fill=\"#1E79C2\"\n ></path>\n </g>\n </svg>\n )}\n </StyledBubbleArrow>\n);\n\nChatBubbleArrow.propTypes = propsArrowBubble as WeakValidationMap<unknown>;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB;AACA,SAAS,yBAAyB;AAClC,SAAS,cAA6B,wBAAwB;AAEvD,MAAM,kBAA0E,CAAC,EAAE,KAAK,MAC7F,oBAAC;AAAA,EACE,mBAAS,aAAa,YACrB,qBAAC;AAAA,IAAI,OAAM;AAAA,IAAO,QAAO;AAAA,IAAO,SAAQ;AAAA,IACtC;AAAA,2BAAC;AAAA,QACC;AAAA,8BAAC;AAAA,YACC,GAAE;AAAA,YACF,IAAG;AAAA,WACJ;AAAA,UACD,qBAAC;AAAA,YAAO,GAAE;AAAA,YAAS,GAAE;AAAA,YAAS,OAAM;AAAA,YAAS,QAAO;AAAA,YAAS,aAAY;AAAA,YAAoB,IAAG;AAAA,YAC9F;AAAA,kCAAC;AAAA,gBAAS,IAAG;AAAA,gBAAM,IAAG;AAAA,gBAAM,IAAG;AAAA,gBAAc,QAAO;AAAA,eAAqB;AAAA,cACzE,oBAAC;AAAA,gBAAe,cAAa;AAAA,gBAAM,IAAG;AAAA,gBAAqB,QAAO;AAAA,eAAmB;AAAA,cACrF,oBAAC;AAAA,gBACC,QAAO;AAAA,gBAIP,MAAK;AAAA,gBACL,IAAG;AAAA,eACJ;AAAA;AAAA,WACH;AAAA;AAAA,OACF;AAAA,MACA,oBAAC;AAAA,QAAE,IAAG;AAAA,QAAsB,QAAO;AAAA,QAAO,aAAY;AAAA,QAAI,MAAK;AAAA,QAAO,UAAS;AAAA,QAC7E,+BAAC;AAAA,UAAE,IAAG;AAAA,UAAY,WAAU;AAAA,UAC1B;AAAA,gCAAC;AAAA,cAAI,MAAK;AAAA,cAAQ,aAAY;AAAA,cAAI,QAAO;AAAA,cAAiB,WAAU;AAAA,aAAoB;AAAA,YACxF,oBAAC;AAAA,cAAI,MAAK;AAAA,cAAU,UAAS;AAAA,cAAU,WAAU;AAAA,aAAoB;AAAA;AAAA,SACvE;AAAA,OACF;AAAA;AAAA,GACF,IAEA,oBAAC;AAAA,IAAI,OAAM;AAAA,IAAM,QAAO;AAAA,IAAM,SAAQ;AAAA,IACpC,8BAAC;AAAA,MAAE,QAAO;AAAA,MAAO,aAAY;AAAA,MAAI,MAAK;AAAA,MAAO,UAAS;AAAA,MACpD,8BAAC;AAAA,QACC,GAAE;AAAA,QACF,IAAG;AAAA,QACH,MAAK;AAAA,OACN;AAAA,KACH;AAAA,GACF;AAAA,CAEJ;AAGF,gBAAgB,YAAY;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
const ChatBubbleDataTestIds = {
|
|
3
|
+
BUBBLE: "ds-chat-bubble",
|
|
4
|
+
BUBBLE_TITLE: "chat-bubble-title",
|
|
5
|
+
BUBBLE_BODY: "chat-bubble-body",
|
|
6
|
+
BUBBLE_TIME: "chat-bubble-time"
|
|
7
|
+
};
|
|
8
|
+
export {
|
|
9
|
+
ChatBubbleDataTestIds
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=ChatBubbleDataTestIds.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/ChatBubbleDataTestIds.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const ChatBubbleDataTestIds = {\n BUBBLE: 'ds-chat-bubble',\n BUBBLE_TITLE: 'chat-bubble-title',\n BUBBLE_BODY: 'chat-bubble-body',\n BUBBLE_TIME: 'chat-bubble-time',\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAhB,MAAM,wBAAwB;AAAA,EACnC,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AACf;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ChatBubble, ChatBubbleWithSchema } from "./ChatBubble";
|
|
3
|
+
import { BUBBLE_TYPES, DSChatBubbleT } from "./react-desc-prop-types";
|
|
4
|
+
import { ChatBubbleDataTestIds } from "./ChatBubbleDataTestIds";
|
|
5
|
+
export * from "./styled";
|
|
6
|
+
export {
|
|
7
|
+
BUBBLE_TYPES,
|
|
8
|
+
ChatBubble,
|
|
9
|
+
ChatBubbleDataTestIds,
|
|
10
|
+
ChatBubbleWithSchema,
|
|
11
|
+
DSChatBubbleT
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 { ChatBubble, ChatBubbleWithSchema } from './ChatBubble';\nexport { BUBBLE_TYPES, DSChatBubbleT } from './react-desc-prop-types';\nexport { ChatBubbleDataTestIds } from './ChatBubbleDataTestIds';\nexport * from './styled';\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,YAAY,4BAA4B;AACjD,SAAS,cAAc,qBAAqB;AAC5C,SAAS,6BAA6B;AACtC,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { PropTypes } from "@elliemae/ds-utilities";
|
|
3
|
+
function noop(..._args) {
|
|
4
|
+
}
|
|
5
|
+
const BUBBLE_TYPES = {
|
|
6
|
+
SENDER: "SENDER",
|
|
7
|
+
RECIPIENT: "RECIPIENT",
|
|
8
|
+
DELIMITER: "DELIMITER",
|
|
9
|
+
SYSTEM: "SYSTEM"
|
|
10
|
+
};
|
|
11
|
+
const defaultBubbleProps = {
|
|
12
|
+
dsId: "",
|
|
13
|
+
type: BUBBLE_TYPES.SENDER,
|
|
14
|
+
time: "",
|
|
15
|
+
body: "",
|
|
16
|
+
onClick: noop,
|
|
17
|
+
errorMessage: "",
|
|
18
|
+
helpMessage: ""
|
|
19
|
+
};
|
|
20
|
+
const BubblesPropTypes = {
|
|
21
|
+
dsId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description("Unique id for bubble").defaultValue(defaultBubbleProps.dsId),
|
|
22
|
+
type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER]).isRequired.description("Define bubble type ").defaultValue(defaultBubbleProps.type),
|
|
23
|
+
title: PropTypes.string.description("Title of the bubble").defaultValue(defaultBubbleProps.title),
|
|
24
|
+
time: PropTypes.string.isRequired.description("Time of the bubble").defaultValue(defaultBubbleProps.title),
|
|
25
|
+
body: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired.description("Bubble content").defaultValue(defaultBubbleProps.body),
|
|
26
|
+
onClick: PropTypes.func.description("Callback when the bubble is tapped").defaultValue(defaultBubbleProps.onClick),
|
|
27
|
+
errorMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).description("Error message to display at bottom of the bubble").defaultValue(defaultBubbleProps.onClick),
|
|
28
|
+
helpMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).description("Help message to display at bottom of the bubble").defaultValue(defaultBubbleProps.onClick)
|
|
29
|
+
};
|
|
30
|
+
const propsArrowBubble = {
|
|
31
|
+
type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER]).isRequired.defaultValue(defaultBubbleProps.type)
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
BUBBLE_TYPES,
|
|
35
|
+
BubblesPropTypes,
|
|
36
|
+
defaultBubbleProps,
|
|
37
|
+
propsArrowBubble
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=react-desc-prop-types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/react-desc-prop-types.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { PropTypes } from '@elliemae/ds-utilities';\nimport React from 'react';\n\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\nfunction noop<T extends unknown[]>(..._args: T): void {}\nexport const BUBBLE_TYPES = {\n SENDER: 'SENDER',\n RECIPIENT: 'RECIPIENT',\n DELIMITER: 'DELIMITER',\n SYSTEM: 'SYSTEM',\n};\n\nexport declare namespace DSChatBubbleT {\n export interface Props {\n dsId: string | number;\n type: BubbleTypesValues;\n title?: string;\n body: string;\n time: string;\n errorMessage: string | React.ReactChild;\n helpMessage: string | React.ReactChild;\n onClick: (id: string | number) => void;\n }\n\n export type BubbleTypesKeys = keyof typeof BUBBLE_TYPES;\n export type BubbleTypesValues = typeof BUBBLE_TYPES[BubbleTypesKeys];\n}\n\nexport const defaultBubbleProps: DSChatBubbleT.Props = {\n dsId: '',\n type: BUBBLE_TYPES.SENDER,\n time: '',\n body: '',\n onClick: noop,\n errorMessage: '',\n helpMessage: '',\n};\n\nexport const BubblesPropTypes = {\n dsId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .description('Unique id for bubble')\n .defaultValue(defaultBubbleProps.dsId),\n type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER])\n .isRequired.description('Define bubble type ')\n .defaultValue(defaultBubbleProps.type),\n title: PropTypes.string.description('Title of the bubble').defaultValue(defaultBubbleProps.title),\n time: PropTypes.string.isRequired.description('Time of the bubble').defaultValue(defaultBubbleProps.title),\n body: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n .isRequired.description('Bubble content')\n .defaultValue(defaultBubbleProps.body),\n onClick: PropTypes.func.description('Callback when the bubble is tapped').defaultValue(defaultBubbleProps.onClick),\n errorMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n .description('Error message to display at bottom of the bubble')\n .defaultValue(defaultBubbleProps.onClick),\n helpMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n .description('Help message to display at bottom of the bubble')\n .defaultValue(defaultBubbleProps.onClick),\n};\n\nexport const propsArrowBubble = {\n type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER]).isRequired.defaultValue(defaultBubbleProps.type),\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,iBAAiB;AAI1B,SAAS,QAA6B,OAAgB;AAAC;AAChD,MAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AACV;AAkBO,MAAM,qBAA0C;AAAA,EACrD,MAAM;AAAA,EACN,MAAM,aAAa;AAAA,EACnB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,cAAc;AAAA,EACd,aAAa;AACf;AAEO,MAAM,mBAAmB;AAAA,EAC9B,MAAM,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,CAAC,EAC3D,YAAY,sBAAsB,EAClC,aAAa,mBAAmB,IAAI;AAAA,EACvC,MAAM,UAAU,MAAM,CAAC,aAAa,WAAW,aAAa,MAAM,CAAC,EAChE,WAAW,YAAY,qBAAqB,EAC5C,aAAa,mBAAmB,IAAI;AAAA,EACvC,OAAO,UAAU,OAAO,YAAY,qBAAqB,EAAE,aAAa,mBAAmB,KAAK;AAAA,EAChG,MAAM,UAAU,OAAO,WAAW,YAAY,oBAAoB,EAAE,aAAa,mBAAmB,KAAK;AAAA,EACzG,MAAM,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,OAAO,CAAC,EAC5D,WAAW,YAAY,gBAAgB,EACvC,aAAa,mBAAmB,IAAI;AAAA,EACvC,SAAS,UAAU,KAAK,YAAY,oCAAoC,EAAE,aAAa,mBAAmB,OAAO;AAAA,EACjH,cAAc,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,OAAO,CAAC,EACpE,YAAY,kDAAkD,EAC9D,aAAa,mBAAmB,OAAO;AAAA,EAC1C,aAAa,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,OAAO,CAAC,EACnE,YAAY,iDAAiD,EAC7D,aAAa,mBAAmB,OAAO;AAC5C;AAEO,MAAM,mBAAmB;AAAA,EAC9B,MAAM,UAAU,MAAM,CAAC,aAAa,WAAW,aAAa,MAAM,CAAC,EAAE,WAAW,aAAa,mBAAmB,IAAI;AACtH;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { styled } from "@elliemae/ds-system";
|
|
3
|
+
import { Grid } from "@elliemae/ds-grid";
|
|
4
|
+
import { BUBBLE_TYPES } from "./react-desc-prop-types";
|
|
5
|
+
const StyledWrapper = styled.div`
|
|
6
|
+
min-width: 224px;
|
|
7
|
+
border-radius: 10px;
|
|
8
|
+
`;
|
|
9
|
+
const StyledTitleBubble = styled(Grid)`
|
|
10
|
+
padding-top: 6px;
|
|
11
|
+
padding-left: 10px;
|
|
12
|
+
padding-right: 10px;
|
|
13
|
+
padding-bottom: 4px;
|
|
14
|
+
`;
|
|
15
|
+
const StyledTitleLeftBubble = styled(Grid)`
|
|
16
|
+
font-size: 13px;
|
|
17
|
+
font-weight: 600;
|
|
18
|
+
`;
|
|
19
|
+
const StyledTitleRightBubble = styled(Grid)`
|
|
20
|
+
font-size: 13px;
|
|
21
|
+
font-weight: 400;
|
|
22
|
+
color: ${(props) => props.type === BUBBLE_TYPES.SENDER ? "#FFF" : "#657489"};
|
|
23
|
+
`;
|
|
24
|
+
const StyleBodyWrapper = styled.div`
|
|
25
|
+
font-size: 13px;
|
|
26
|
+
font-weight: 400;
|
|
27
|
+
line-height: 15px;
|
|
28
|
+
min-height: 18px;
|
|
29
|
+
padding: 0px 10px 8px 10px;
|
|
30
|
+
`;
|
|
31
|
+
const StyleErrorMessage = styled.div`
|
|
32
|
+
font-size: 12px;
|
|
33
|
+
font-weight: 400;
|
|
34
|
+
padding-top: ${(props) => props.theme.space.xxxs};
|
|
35
|
+
color: ${(props) => props.theme.colors.danger[900]};
|
|
36
|
+
align-items: flex-end;
|
|
37
|
+
justify-content: center;
|
|
38
|
+
text-align: right;
|
|
39
|
+
line-height: 15px;
|
|
40
|
+
svg {
|
|
41
|
+
fill: ${(props) => props.theme.colors.danger[900]};
|
|
42
|
+
}
|
|
43
|
+
a {
|
|
44
|
+
font-size: 12px;
|
|
45
|
+
color: ${(props) => props.theme.colors.danger[900]};
|
|
46
|
+
}
|
|
47
|
+
.em-ds-icon {
|
|
48
|
+
margin-left: 8px;
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
const StyleHelpMessage = styled(StyleErrorMessage)`
|
|
52
|
+
font-size: 12px;
|
|
53
|
+
line-height: 15px;
|
|
54
|
+
color: ${(props) => props.theme.colors.neutral[500]};
|
|
55
|
+
svg {
|
|
56
|
+
fill: ${(props) => props.theme.colors.danger[900]};
|
|
57
|
+
}
|
|
58
|
+
a {
|
|
59
|
+
font-size: 12px;
|
|
60
|
+
color: ${(props) => props.theme.colors.danger[900]};
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
const StyledBubbleArrow = styled.div`
|
|
64
|
+
display: block;
|
|
65
|
+
content: '';
|
|
66
|
+
position: absolute;
|
|
67
|
+
bottom: 10px;
|
|
68
|
+
height: 15px;
|
|
69
|
+
`;
|
|
70
|
+
const StyledColoredBubble = styled.div`
|
|
71
|
+
min-width: 224px;
|
|
72
|
+
border-radius: 10px;
|
|
73
|
+
position: relative;
|
|
74
|
+
|
|
75
|
+
${(props) => props.type === BUBBLE_TYPES.SENDER ? `
|
|
76
|
+
border: 1px solid ${props.theme.colors.brand["700"]};
|
|
77
|
+
background: ${props.theme.colors.brand[600]};
|
|
78
|
+
color: ${props.theme.colors.neutral["000"]};
|
|
79
|
+
${StyledBubbleArrow}{
|
|
80
|
+
right: -9px;
|
|
81
|
+
bottom: 6px;
|
|
82
|
+
svg{
|
|
83
|
+
fill: ${props.theme.colors.brand[600]};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
a {
|
|
88
|
+
color: #FFF;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
` : `
|
|
92
|
+
box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);
|
|
93
|
+
background: ${props.theme.colors.neutral["000"]};
|
|
94
|
+
color: ${props.theme.colors.neutral[700]};
|
|
95
|
+
|
|
96
|
+
${StyledBubbleArrow}{
|
|
97
|
+
left: -11px;
|
|
98
|
+
bottom: 6px;
|
|
99
|
+
svg{
|
|
100
|
+
fill: ${props.theme.colors.neutral["000"]};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
`}
|
|
105
|
+
`;
|
|
106
|
+
export {
|
|
107
|
+
StyleBodyWrapper,
|
|
108
|
+
StyleErrorMessage,
|
|
109
|
+
StyleHelpMessage,
|
|
110
|
+
StyledBubbleArrow,
|
|
111
|
+
StyledColoredBubble,
|
|
112
|
+
StyledTitleBubble,
|
|
113
|
+
StyledTitleLeftBubble,
|
|
114
|
+
StyledTitleRightBubble,
|
|
115
|
+
StyledWrapper
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=styled.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/styled.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport { styled } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { BUBBLE_TYPES } from './react-desc-prop-types';\n\n// Bubble WRAPPER\nexport const StyledWrapper = styled.div`\n min-width: 224px;\n border-radius: 10px;\n`;\n\n// Bubble HEADER\nexport const StyledTitleBubble = styled(Grid)`\n padding-top: 6px;\n padding-left: 10px;\n padding-right: 10px;\n padding-bottom: 4px;\n`;\n\nexport const StyledTitleLeftBubble = styled(Grid)`\n font-size: 13px;\n font-weight: 600;\n`;\nexport const StyledTitleRightBubble = styled(Grid)<{ type: string }>`\n font-size: 13px;\n font-weight: 400;\n color: ${(props) => (props.type === BUBBLE_TYPES.SENDER ? '#FFF' : '#657489')};\n`;\n\nexport const StyleBodyWrapper = styled.div`\n font-size: 13px;\n font-weight: 400;\n line-height: 15px;\n min-height: 18px;\n padding: 0px 10px 8px 10px;\n`;\n\nexport const StyleErrorMessage = styled.div`\n font-size: 12px;\n font-weight: 400;\n padding-top: ${(props) => props.theme.space.xxxs};\n color: ${(props) => props.theme.colors.danger[900]};\n align-items: flex-end;\n justify-content: center;\n text-align: right;\n line-height: 15px;\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n .em-ds-icon {\n margin-left: 8px;\n }\n`;\n\nexport const StyleHelpMessage = styled(StyleErrorMessage)`\n font-size: 12px;\n line-height: 15px;\n color: ${(props) => props.theme.colors.neutral[500]};\n svg {\n fill: ${(props) => props.theme.colors.danger[900]};\n }\n a {\n font-size: 12px;\n color: ${(props) => props.theme.colors.danger[900]};\n }\n`;\n\n// bubble sender/ recipient\nexport const StyledBubbleArrow = styled.div`\n display: block;\n content: '';\n position: absolute;\n bottom: 10px;\n height: 15px;\n`;\n\nexport const StyledColoredBubble = styled.div<{ type: string }>`\n min-width: 224px;\n border-radius: 10px;\n position: relative;\n\n ${(props) =>\n props.type === BUBBLE_TYPES.SENDER\n ? `\n border: 1px solid ${props.theme.colors.brand['700']};\n background: ${props.theme.colors.brand[600]};\n color: ${props.theme.colors.neutral['000']};\n ${StyledBubbleArrow}{ \n right: -9px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.brand[600]};\n }\n }\n\n a {\n color: #FFF;\n }\n\n `\n : `\n box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);\n background: ${props.theme.colors.neutral['000']};\n color: ${props.theme.colors.neutral[700]};\n\n ${StyledBubbleArrow}{ \n left: -11px;\n bottom: 6px;\n svg{\n fill: ${props.theme.colors.neutral['000']};\n }\n }\n\n `}\n`;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,oBAAoB;AAGtB,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAM7B,MAAM,oBAAoB,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAOrC,MAAM,wBAAwB,OAAO,IAAI;AAAA;AAAA;AAAA;AAIzC,MAAM,yBAAyB,OAAO,IAAI;AAAA;AAAA;AAAA,WAGtC,CAAC,UAAW,MAAM,SAAS,aAAa,SAAS,SAAS;AAAA;AAG9D,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQhC,MAAM,oBAAoB,OAAO;AAAA;AAAA;AAAA,iBAGvB,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,WACnC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMpC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,aAIpC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAO3C,MAAM,mBAAmB,OAAO,iBAAiB;AAAA;AAAA;AAAA,WAG7C,CAAC,UAAU,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA,YAErC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,aAIpC,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAK3C,MAAM,oBAAoB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQjC,MAAM,sBAAsB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKtC,CAAC,UACD,MAAM,SAAS,aAAa,SACxB;AAAA,4BACoB,MAAM,MAAM,OAAO,MAAM;AAAA,sBAC/B,MAAM,MAAM,OAAO,MAAM;AAAA,iBAC9B,MAAM,MAAM,OAAO,QAAQ;AAAA,UAClC;AAAA;AAAA;AAAA;AAAA,wBAIc,MAAM,MAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASzC;AAAA;AAAA,sBAEc,MAAM,MAAM,OAAO,QAAQ;AAAA,iBAChC,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA,UAElC;AAAA;AAAA;AAAA;AAAA,wBAIc,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@elliemae/ds-chat-bubble",
|
|
3
|
+
"version": "3.6.0-next.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"description": "ICE MT - Dimsum - Chat",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"module": "./dist/esm/index.js",
|
|
10
|
+
"main": "./dist/cjs/index.js",
|
|
11
|
+
"types": "./dist/types/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/esm/index.js",
|
|
15
|
+
"require": "./dist/cjs/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./styled": {
|
|
18
|
+
"import": "./dist/esm/styled.js",
|
|
19
|
+
"require": "./dist/cjs/styled.js"
|
|
20
|
+
},
|
|
21
|
+
"./props": {
|
|
22
|
+
"import": "./dist/esm/props.js",
|
|
23
|
+
"require": "./dist/cjs/props.js"
|
|
24
|
+
},
|
|
25
|
+
"./ChatBubbleArrow": {
|
|
26
|
+
"import": "./dist/esm/ChatBubbleArrow.js",
|
|
27
|
+
"require": "./dist/cjs/ChatBubbleArrow.js"
|
|
28
|
+
},
|
|
29
|
+
"./ChatBubble": {
|
|
30
|
+
"import": "./dist/esm/ChatBubble.js",
|
|
31
|
+
"require": "./dist/cjs/ChatBubble.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://git.elliemae.io/platform-ui/dimsum.git"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"pnpm": ">=6",
|
|
40
|
+
"node": ">=16"
|
|
41
|
+
},
|
|
42
|
+
"author": "ICE MT",
|
|
43
|
+
"jestSonar": {
|
|
44
|
+
"sonar56x": true,
|
|
45
|
+
"reportPath": "reports",
|
|
46
|
+
"reportFile": "tests.xml",
|
|
47
|
+
"indent": 4
|
|
48
|
+
},
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public",
|
|
51
|
+
"typeSafety": true
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@elliemae/ds-grid": "3.6.0-next.0",
|
|
55
|
+
"@elliemae/ds-icons": "3.6.0-next.0",
|
|
56
|
+
"@elliemae/ds-system": "3.6.0-next.0",
|
|
57
|
+
"@elliemae/ds-utilities": "3.6.0-next.0"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@testing-library/dom": "~8.13.0",
|
|
61
|
+
"@testing-library/jest-dom": "~5.16.4",
|
|
62
|
+
"@testing-library/react": "~12.1.3",
|
|
63
|
+
"@testing-library/user-event": "~13.5.0",
|
|
64
|
+
"styled-components": "~5.3.5"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"lodash": "^4.17.21",
|
|
68
|
+
"react": "^17.0.2",
|
|
69
|
+
"react-dom": "^17.0.2",
|
|
70
|
+
"styled-components": "^5.3.5"
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"test": "node ../../scripts/testing/test.mjs",
|
|
74
|
+
"lint": "node ../../scripts/lint.mjs",
|
|
75
|
+
"dts": "node ../../scripts/dts.mjs",
|
|
76
|
+
"dev": "cross-env NODE_ENV=development node ../../scripts/build/build.mjs --watch",
|
|
77
|
+
"build": "cross-env NODE_ENV=production node ../../scripts/build/build.mjs",
|
|
78
|
+
"checkDeps": "npx -yes ../ds-codemods check-missing-packages --projectFolderPath=\"./\" --ignorePackagesGlobPattern=\"\" --ignoreFilesGlobPattern=\"**/test-ables/*,**/tests/*\""
|
|
79
|
+
}
|
|
80
|
+
}
|