@botpress/webchat 0.5.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/App.d.ts +10 -0
  2. package/dist/Utils/colors.d.ts +18 -0
  3. package/dist/Utils/eventEmitter.d.ts +12 -0
  4. package/dist/Utils/index.d.ts +2 -0
  5. package/dist/client/MessagingClient.d.ts +27 -0
  6. package/dist/client/adapters/Audio.d.ts +19 -0
  7. package/dist/client/adapters/Card.d.ts +188 -0
  8. package/dist/client/adapters/Carousel.d.ts +147 -0
  9. package/dist/client/adapters/Choice.d.ts +45 -0
  10. package/dist/client/adapters/Dropdown.d.ts +46 -0
  11. package/dist/client/adapters/File.d.ts +19 -0
  12. package/dist/client/adapters/Image.d.ts +19 -0
  13. package/dist/client/adapters/Location.d.ts +27 -0
  14. package/dist/client/adapters/Message.d.ts +433 -0
  15. package/dist/client/adapters/Text.d.ts +20 -0
  16. package/dist/client/adapters/Utils.d.ts +5 -0
  17. package/dist/client/adapters/Video.d.ts +19 -0
  18. package/dist/client/adapters/Voice.d.ts +15 -0
  19. package/dist/client/adapters/index.d.ts +12 -0
  20. package/dist/client/index.d.ts +2 -0
  21. package/dist/components/Avatar.d.ts +6 -0
  22. package/dist/components/Block.d.ts +4 -0
  23. package/dist/components/Composer.d.ts +12 -14
  24. package/dist/components/Container.d.ts +2 -12
  25. package/dist/components/Header.d.ts +36 -26
  26. package/dist/components/LoadingIndicator.d.ts +2 -0
  27. package/dist/components/Message.d.ts +7 -0
  28. package/dist/components/MessageList.d.ts +2 -0
  29. package/dist/components/Modal.d.ts +17 -0
  30. package/dist/components/RestartConversation.d.ts +5 -0
  31. package/dist/components/Webchat.d.ts +6 -0
  32. package/dist/components/dev-tools/DevTools.d.ts +1 -0
  33. package/dist/components/dev-tools/configuration.d.ts +2 -0
  34. package/dist/components/dev-tools/helpers.d.ts +5 -0
  35. package/dist/components/index.d.ts +12 -0
  36. package/dist/components/renderers/Audio.d.ts +3 -0
  37. package/dist/components/renderers/Bubble.d.ts +5 -0
  38. package/dist/components/renderers/Button.d.ts +4 -0
  39. package/dist/components/renderers/Carousel.d.ts +3 -0
  40. package/dist/components/renderers/Column.d.ts +5 -0
  41. package/dist/components/renderers/Dropdown.d.ts +5 -0
  42. package/dist/components/renderers/File.d.ts +3 -0
  43. package/dist/components/renderers/Image.d.ts +3 -0
  44. package/dist/components/renderers/Location.d.ts +3 -0
  45. package/dist/components/renderers/Row.d.ts +5 -0
  46. package/dist/components/renderers/Text.d.ts +4 -0
  47. package/dist/components/renderers/Video.d.ts +3 -0
  48. package/dist/components/renderers/index.d.ts +2 -0
  49. package/dist/contexts/ComposerContext.d.ts +8 -0
  50. package/dist/contexts/MessageContext.d.ts +8 -0
  51. package/dist/contexts/ModalContext.d.ts +14 -0
  52. package/dist/contexts/WebchatContext.d.ts +56 -0
  53. package/dist/contexts/index.d.ts +4 -0
  54. package/dist/hooks/index.d.ts +3 -0
  55. package/dist/hooks/useImageSize.d.ts +2 -0
  56. package/dist/hooks/useRefresh.d.ts +10 -0
  57. package/dist/hooks/useWebchatStore.d.ts +30 -0
  58. package/dist/index.d.ts +3 -17
  59. package/dist/index.js +43569 -48
  60. package/dist/index.umd.cjs +702 -0
  61. package/dist/main.d.ts +11 -13
  62. package/dist/providers/ModalProvider.d.ts +8 -0
  63. package/dist/providers/WebchatProvider.d.ts +13 -0
  64. package/dist/providers/index.d.ts +2 -0
  65. package/dist/schemas/index.d.ts +1 -0
  66. package/dist/schemas/theme.d.ts +3371 -0
  67. package/dist/services/clipboard.d.ts +1 -0
  68. package/dist/services/images.d.ts +2 -0
  69. package/dist/services/index.d.ts +3 -0
  70. package/dist/services/toast.d.ts +17 -0
  71. package/dist/themes/dawn.d.ts +2 -0
  72. package/dist/themes/duskTheme.d.ts +2 -0
  73. package/dist/themes/eggplant.d.ts +2 -0
  74. package/dist/themes/galaxy.d.ts +2 -0
  75. package/dist/themes/index.d.ts +6 -0
  76. package/dist/themes/midnight.d.ts +2 -0
  77. package/dist/themes/prism.d.ts +2 -0
  78. package/dist/twind.config.d.ts +9 -0
  79. package/dist/types/block-type.d.ts +93 -0
  80. package/dist/types/image.d.ts +11 -0
  81. package/dist/types/index.d.ts +2 -0
  82. package/package.json +61 -49
  83. package/README.md +0 -41
  84. package/assets/fonts/roboto/roboto.woff2 +0 -0
  85. package/assets/fonts/roboto/roboto500.woff2 +0 -0
  86. package/assets/fonts/roboto.css +0 -128
  87. package/assets/notification.mp3 +0 -0
  88. package/dist/components/Composer.js +0 -118
  89. package/dist/components/Container.js +0 -62
  90. package/dist/components/ConversationList.d.ts +0 -10
  91. package/dist/components/ConversationList.js +0 -41
  92. package/dist/components/Footer.d.ts +0 -3
  93. package/dist/components/Footer.js +0 -21
  94. package/dist/components/Header.js +0 -181
  95. package/dist/components/VoiceRecorder.d.ts +0 -10
  96. package/dist/components/VoiceRecorder.js +0 -137
  97. package/dist/components/common/Avatar/index.d.ts +0 -9
  98. package/dist/components/common/Avatar/index.js +0 -13
  99. package/dist/components/common/BotInfo/index.d.ts +0 -10
  100. package/dist/components/common/BotInfo/index.js +0 -107
  101. package/dist/components/common/BotInfo/style.scss +0 -88
  102. package/dist/components/common/ConfirmDialog/index.d.ts +0 -11
  103. package/dist/components/common/ConfirmDialog/index.js +0 -78
  104. package/dist/components/common/ConfirmDialog/style.module.scss +0 -48
  105. package/dist/components/common/Dialog/index.d.ts +0 -17
  106. package/dist/components/common/Dialog/index.js +0 -57
  107. package/dist/components/common/Dialog/style.module.scss +0 -29
  108. package/dist/components/common/ToolTip/index.d.ts +0 -10
  109. package/dist/components/common/ToolTip/index.js +0 -163
  110. package/dist/components/common/ToolTip/style.module.scss +0 -108
  111. package/dist/components/common/ToolTip/utils.d.ts +0 -15
  112. package/dist/components/common/ToolTip/utils.js +0 -78
  113. package/dist/components/common/variables.scss +0 -38
  114. package/dist/components/messages/InlineFeedback.d.ts +0 -11
  115. package/dist/components/messages/InlineFeedback.js +0 -56
  116. package/dist/components/messages/Message.d.ts +0 -11
  117. package/dist/components/messages/Message.js +0 -106
  118. package/dist/components/messages/MessageGroup.d.ts +0 -23
  119. package/dist/components/messages/MessageGroup.js +0 -63
  120. package/dist/components/messages/MessageList.d.ts +0 -10
  121. package/dist/components/messages/MessageList.js +0 -148
  122. package/dist/core/api.d.ts +0 -23
  123. package/dist/core/api.js +0 -117
  124. package/dist/core/constants.d.ts +0 -14
  125. package/dist/core/constants.js +0 -29
  126. package/dist/core/socket.d.ts +0 -14
  127. package/dist/core/socket.js +0 -57
  128. package/dist/declaration.d.ts +0 -2
  129. package/dist/declaration.js +0 -1
  130. package/dist/fonts/roboto.d.ts +0 -4
  131. package/dist/fonts/roboto.js +0 -9
  132. package/dist/globals.d.ts +0 -7
  133. package/dist/globals.js +0 -2
  134. package/dist/icons/Add.d.ts +0 -6
  135. package/dist/icons/Add.js +0 -10
  136. package/dist/icons/Cancel.d.ts +0 -5
  137. package/dist/icons/Cancel.js +0 -10
  138. package/dist/icons/Chat.d.ts +0 -6
  139. package/dist/icons/Chat.js +0 -9
  140. package/dist/icons/Close.d.ts +0 -3
  141. package/dist/icons/Close.js +0 -10
  142. package/dist/icons/Delete.d.ts +0 -3
  143. package/dist/icons/Delete.js +0 -11
  144. package/dist/icons/Download.d.ts +0 -3
  145. package/dist/icons/Download.js +0 -10
  146. package/dist/icons/Email.d.ts +0 -3
  147. package/dist/icons/Email.js +0 -8
  148. package/dist/icons/Information.d.ts +0 -3
  149. package/dist/icons/Information.js +0 -12
  150. package/dist/icons/List.d.ts +0 -3
  151. package/dist/icons/List.js +0 -15
  152. package/dist/icons/Microphone.d.ts +0 -5
  153. package/dist/icons/Microphone.js +0 -12
  154. package/dist/icons/Phone.d.ts +0 -3
  155. package/dist/icons/Phone.js +0 -8
  156. package/dist/icons/Reload.d.ts +0 -3
  157. package/dist/icons/Reload.js +0 -10
  158. package/dist/icons/ThumbsDown.d.ts +0 -3
  159. package/dist/icons/ThumbsDown.js +0 -11
  160. package/dist/icons/ThumbsUp.d.ts +0 -3
  161. package/dist/icons/ThumbsUp.js +0 -11
  162. package/dist/icons/Website.d.ts +0 -3
  163. package/dist/icons/Website.js +0 -8
  164. package/dist/main.js +0 -336
  165. package/dist/store/composer.d.ts +0 -17
  166. package/dist/store/composer.js +0 -98
  167. package/dist/store/index.d.ts +0 -89
  168. package/dist/store/index.js +0 -604
  169. package/dist/store/view.d.ts +0 -61
  170. package/dist/store/view.js +0 -365
  171. package/dist/translations/ar.json +0 -30
  172. package/dist/translations/de.json +0 -32
  173. package/dist/translations/en.json +0 -40
  174. package/dist/translations/es.json +0 -19
  175. package/dist/translations/fr.json +0 -40
  176. package/dist/translations/index.d.ts +0 -9
  177. package/dist/translations/index.js +0 -95
  178. package/dist/translations/it.json +0 -38
  179. package/dist/translations/pt.json +0 -19
  180. package/dist/translations/ru.json +0 -24
  181. package/dist/translations/uk.json +0 -24
  182. package/dist/typings.d.ts +0 -410
  183. package/dist/typings.js +0 -2
  184. package/dist/utils/analytics.d.ts +0 -5
  185. package/dist/utils/analytics.js +0 -37
  186. package/dist/utils/index.d.ts +0 -3
  187. package/dist/utils/index.js +0 -27
  188. package/dist/utils/storage.d.ts +0 -16
  189. package/dist/utils/storage.js +0 -129
  190. package/dist/utils/webchatEvents.d.ts +0 -2
  191. package/dist/utils/webchatEvents.js +0 -14
@@ -1,88 +0,0 @@
1
- // TODO: This seems completely outdated. Does not match classes used by the component
2
-
3
- @mixin bottomBorder() {
4
- border-bottom: solid 1px rgba(0, 0, 0, 0.1);
5
- }
6
-
7
- $charcoal: #1e1e1e;
8
-
9
- // Fix for IE which has trouble with the max-width property
10
- @media only screen and (min-width: 800px) {
11
- .bot-info-container {
12
- width: 800px;
13
- }
14
- }
15
-
16
- .bot-info-container {
17
- margin: 0 auto;
18
- max-width: 800px;
19
- text-align: center;
20
- color: $charcoal;
21
- overflow-y: auto;
22
- svg {
23
- fill: $charcoal;
24
- }
25
- & > img {
26
- width: 100%;
27
- }
28
- p,
29
- a,
30
- button {
31
- font-size: 0.9em;
32
- color: rgb(102, 102, 102);
33
- text-decoration: none;
34
- }
35
- }
36
-
37
- .summary {
38
- margin-top: -32px;
39
- @include bottomBorder();
40
- box-shadow: 0px 4px 5px -5px #ccc;
41
- h3 {
42
- margin: 0;
43
- }
44
- p {
45
- margin-top: 0.4em;
46
- margin-block-end: 1em;
47
- }
48
- }
49
-
50
- .links {
51
- @include bottomBorder();
52
- }
53
-
54
- .icon-link {
55
- padding-left: 25%;
56
- display: flex;
57
- margin: 20px 0;
58
- i {
59
- margin-right: 10px;
60
- }
61
- }
62
-
63
- .terms {
64
- padding: 0px 20px;
65
- text-align: left;
66
- a {
67
- display: inline-block;
68
- width: 100%;
69
- line-height: 2.5;
70
- @include bottomBorder();
71
- }
72
- }
73
-
74
- .startBtn {
75
- font: inherit;
76
- color: inherit;
77
- background-color: transparent;
78
- cursor: pointer;
79
- border-radius: 20px;
80
- line-height: 24px;
81
- padding: 5px 10px;
82
- margin-top: 25px;
83
- border: 1px solid rgb(100, 100, 100);
84
- &:focus {
85
- border: 1px solid black;
86
- color: black;
87
- }
88
- }
@@ -1,11 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ConfirmDialogOptions {
3
- title?: string;
4
- accept?: () => void;
5
- decline?: () => void;
6
- acceptLabel: string;
7
- declineLabel: string;
8
- body?: JSX.Element;
9
- }
10
- declare const confirmDialog: (message: string, options: ConfirmDialogOptions) => Promise<boolean>;
11
- export default confirmDialog;
@@ -1,78 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- const core_1 = require("@blueprintjs/core");
26
- const react_1 = __importDefault(require("react"));
27
- const react_dom_1 = __importDefault(require("react-dom"));
28
- const Dialog_1 = require("../Dialog");
29
- const styles = __importStar(require("./style.module.scss"));
30
- const ConfirmDialogComponent = (props) => {
31
- const onAccept = () => {
32
- var _a;
33
- removeDialog();
34
- (_a = props.accept) === null || _a === void 0 ? void 0 : _a.call(props);
35
- props.resolve(true);
36
- };
37
- const onDecline = () => {
38
- var _a;
39
- removeDialog();
40
- (_a = props.decline) === null || _a === void 0 ? void 0 : _a.call(props);
41
- props.resolve(false);
42
- };
43
- return (react_1.default.createElement(Dialog_1.Wrapper, { icon: "warning-sign", usePortal: false, isOpen: true, onClose: onDecline, size: "sm" },
44
- react_1.default.createElement(Dialog_1.Body, null,
45
- react_1.default.createElement(core_1.Icon, { icon: "warning-sign", iconSize: 32, className: styles.icon }),
46
- react_1.default.createElement("div", null,
47
- props.message,
48
- props.body)),
49
- react_1.default.createElement(Dialog_1.Footer, null,
50
- react_1.default.createElement(core_1.Button, { id: "confirm-dialog-decline", className: core_1.Classes.BUTTON, type: "button", onClick: onDecline, text: props.declineLabel, tabIndex: 2, intent: core_1.Intent.NONE }),
51
- react_1.default.createElement(core_1.Button, { id: "confirm-dialog-accept", className: core_1.Classes.BUTTON, type: "button", autoFocus: true, onClick: onAccept, text: props.acceptLabel, tabIndex: 3, intent: core_1.Intent.WARNING }))));
52
- };
53
- const defaultConfirmOptions = {
54
- title: '',
55
- accept: () => { },
56
- acceptLabel: 'Confirm',
57
- decline: () => { },
58
- declineLabel: 'Decline'
59
- };
60
- const confirmDialog = (message, options) => {
61
- return new Promise((resolve, _reject) => {
62
- addDialog(Object.assign(Object.assign(Object.assign({ message }, defaultConfirmOptions), options), { isOpen: false, resolve }));
63
- });
64
- };
65
- function addDialog(props) {
66
- const body = document.getElementsByTagName('body')[0];
67
- const div = document.createElement('div');
68
- div.setAttribute('id', 'confirmDialog-container');
69
- div.setAttribute('class', styles.ConfirmDialogContainer);
70
- body.appendChild(div);
71
- react_dom_1.default.render(react_1.default.createElement(ConfirmDialogComponent, Object.assign({}, props)), div);
72
- }
73
- function removeDialog() {
74
- const div = document.getElementById('confirmDialog-container');
75
- const body = document.getElementsByTagName('body')[0];
76
- body.removeChild(div);
77
- }
78
- exports.default = confirmDialog;
@@ -1,48 +0,0 @@
1
- @import '../variables.scss';
2
-
3
- .ConfirmDialogContainer > div {
4
- z-index: 9999;
5
-
6
- :global {
7
- .bp3-button-text {
8
- font-size: 12px !important;
9
- }
10
-
11
- .bp3-dialog-body {
12
- display: flex;
13
- }
14
-
15
- .bp3-button {
16
- box-shadow: unset !important;
17
- background-image: unset !important;
18
- border-radius: 5px !important;
19
- padding-top: 6px;
20
- }
21
-
22
- .bp3-button.bp3-intent-warning {
23
- background-color: var(--lighthouse);
24
-
25
- &:hover {
26
- background-color: var(--hover-lighthouse);
27
- }
28
-
29
- &:focus {
30
- background-color: var(--focus-lighthouse);
31
- }
32
- }
33
-
34
- .bp3-button:not([class*='bp3-intent']) {
35
- background-color: white;
36
-
37
- &:hover,
38
- &:focus {
39
- background-color: var(--seashell);
40
- }
41
- }
42
- }
43
- }
44
-
45
- .icon {
46
- margin-right: 16px;
47
- color: var(--lighthouse) !important;
48
- }
@@ -1,17 +0,0 @@
1
- import { IDialogProps } from '@blueprintjs/core';
2
- import { FC } from 'react';
3
- export interface DialogProps extends IDialogProps {
4
- onSubmit?: () => void;
5
- children: JSX.Element | JSX.Element[];
6
- isOpen: boolean;
7
- height?: number;
8
- size?: 'sm' | 'md' | 'lg';
9
- }
10
- export declare const Wrapper: FC<DialogProps>;
11
- export declare const Body: ({ children, className }: {
12
- children: JSX.Element | JSX.Element[];
13
- className?: string | undefined;
14
- }) => JSX.Element;
15
- export declare const Footer: ({ children }: {
16
- children: JSX.Element | JSX.Element[];
17
- }) => JSX.Element;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.Footer = exports.Body = exports.Wrapper = void 0;
26
- const core_1 = require("@blueprintjs/core");
27
- const classnames_1 = __importDefault(require("classnames"));
28
- const react_1 = __importDefault(require("react"));
29
- const style = __importStar(require("./style.module.scss"));
30
- const Wrapper = (props) => {
31
- let width = 500;
32
- if (props.size === 'sm') {
33
- width = 360;
34
- }
35
- else if (props.size === 'md') {
36
- width = 700;
37
- }
38
- else if (props.size === 'lg') {
39
- width = 900;
40
- }
41
- const onSubmit = (e) => {
42
- var _a;
43
- e.preventDefault();
44
- (_a = props.onSubmit) === null || _a === void 0 ? void 0 : _a.call(props);
45
- };
46
- return (react_1.default.createElement(core_1.Dialog, Object.assign({ className: style.dialog, transitionDuration: 0, canOutsideClickClose: false, enforceFocus: false, style: { width, height: props.height } }, props), props.onSubmit ? (react_1.default.createElement("form", { className: style.form, onSubmit: onSubmit }, props.children)) : (props.children)));
47
- };
48
- exports.Wrapper = Wrapper;
49
- const Body = ({ children, className }) => {
50
- return react_1.default.createElement("div", { className: (0, classnames_1.default)(core_1.Classes.DIALOG_BODY, core_1.Classes.UI_TEXT, style.dialogBody, className) }, children);
51
- };
52
- exports.Body = Body;
53
- const Footer = ({ children }) => {
54
- return (react_1.default.createElement("div", { className: core_1.Classes.DIALOG_FOOTER },
55
- react_1.default.createElement("div", { className: core_1.Classes.DIALOG_FOOTER_ACTIONS }, children)));
56
- };
57
- exports.Footer = Footer;
@@ -1,29 +0,0 @@
1
- :global(.bp3-dialog-container) {
2
- height: 100%;
3
- }
4
-
5
- .dialog {
6
- max-height: 90%;
7
- background-color: white !important;
8
- overflow-y: auto;
9
-
10
- .form,
11
- :global(.bp3-dialog-body) {
12
- overflow: auto;
13
- height: calc(100% - 34px);
14
- }
15
-
16
- :global {
17
- .bp3-button {
18
- transition: color 0.3s, background 0.3s;
19
- }
20
- }
21
- }
22
-
23
- .dialogBody {
24
- position: relative;
25
- margin: 0 !important;
26
- padding: 20px !important;
27
- padding-bottom: 6px !important;
28
- overflow: auto;
29
- }
@@ -1,10 +0,0 @@
1
- import { FC } from 'react';
2
- interface ToolTipProps {
3
- hoverOpenDelay?: number;
4
- children: JSX.Element;
5
- content?: string | JSX.Element;
6
- position?: string;
7
- childId?: string;
8
- }
9
- declare const ToolTip: FC<ToolTipProps>;
10
- export default ToolTip;
@@ -1,163 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- const classnames_1 = __importDefault(require("classnames"));
26
- const uniqueId_1 = __importDefault(require("lodash/uniqueId"));
27
- const react_1 = __importStar(require("react"));
28
- const react_dom_1 = __importDefault(require("react-dom"));
29
- const style = __importStar(require("./style.module.scss"));
30
- const utils_1 = require("./utils");
31
- const ToolTip = ({ childId, children, content, position = 'top', hoverOpenDelay }) => {
32
- if (!content) {
33
- return children;
34
- }
35
- const id = (0, react_1.useRef)(`botpress-tooltip-${(0, uniqueId_1.default)()}`);
36
- const timeout = (0, react_1.useRef)(undefined);
37
- const tooltipRef = (0, react_1.useRef)(null);
38
- const tipRef = (0, react_1.useRef)(null);
39
- const pastShow = (el) => {
40
- var _a;
41
- const elementRect = el.getBoundingClientRect();
42
- const tooltipRect = (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
43
- if (!tooltipRect) {
44
- return;
45
- }
46
- const docWidth = document.documentElement.clientWidth, docHeight = document.documentElement.clientHeight;
47
- const rx = elementRect.x + elementRect.width; // most right x
48
- const lx = elementRect.x; // most left x
49
- const ty = elementRect.y; // most top y
50
- const by = elementRect.y + elementRect.height; // most bottom y
51
- const overflowYMiddle = (tooltipRect.height - elementRect.height) / 2;
52
- let overflowXMiddle = (tooltipRect.width - elementRect.width) / 2;
53
- overflowXMiddle = overflowXMiddle < 0 ? 0 : overflowXMiddle;
54
- const canBeXMiddle = rx + overflowXMiddle <= docWidth && lx - overflowXMiddle >= 0;
55
- const canBeRight = rx + tooltipRect.width <= docWidth;
56
- const canBeLeft = lx - tooltipRect.width >= 0;
57
- const canBeYMiddle = ty - overflowYMiddle >= 0 && by + overflowYMiddle <= docHeight;
58
- const canBeAbove = ty - tooltipRect.height >= 0;
59
- const canBeBellow = by + tooltipRect.height <= docHeight;
60
- let xClass = '';
61
- let yClass = '';
62
- switch (position) {
63
- case 'top':
64
- yClass = 'top';
65
- if (!canBeAbove) {
66
- yClass = 'bottom';
67
- }
68
- xClass = (0, utils_1.checkXPosition)(canBeXMiddle, canBeLeft);
69
- break;
70
- case 'bottom':
71
- yClass = 'bottom';
72
- if (!canBeBellow) {
73
- yClass = 'top';
74
- }
75
- xClass = (0, utils_1.checkXPosition)(canBeXMiddle, canBeLeft);
76
- break;
77
- case 'left':
78
- xClass = 'left';
79
- if (!canBeLeft) {
80
- xClass = 'right';
81
- }
82
- yClass = (0, utils_1.checkYPosition)(canBeYMiddle, canBeAbove);
83
- break;
84
- case 'right':
85
- xClass = 'right';
86
- if (!canBeRight) {
87
- xClass = 'left';
88
- }
89
- yClass = (0, utils_1.checkYPosition)(canBeYMiddle, canBeAbove);
90
- break;
91
- }
92
- const { left, top } = (0, utils_1.getPositions)({ xClass, yClass }, el, tooltipRef.current);
93
- const tipPos = (0, utils_1.tipPosition)({ xClass, yClass }, el);
94
- const inlineStyle = {
95
- left: `${left}px`,
96
- top: `${top}px`
97
- };
98
- setTimeout(() => {
99
- var _a, _b, _c;
100
- (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.classList.add(style.visible);
101
- if (xClass) {
102
- (_b = tooltipRef.current) === null || _b === void 0 ? void 0 : _b.classList.add(xClass);
103
- }
104
- if (yClass) {
105
- (_c = tooltipRef.current) === null || _c === void 0 ? void 0 : _c.classList.add(yClass);
106
- }
107
- if (tooltipRef.current) {
108
- tooltipRef.current.style.left = inlineStyle.left;
109
- tooltipRef.current.style.top = inlineStyle.top;
110
- }
111
- if (tipRef.current) {
112
- tipRef.current.style.left = tipPos.left;
113
- tipRef.current.style.right = tipPos.right;
114
- }
115
- }, hoverOpenDelay || 0);
116
- };
117
- const show = (event) => {
118
- document.addEventListener('mousemove', mouseMove);
119
- clearTimeout(timeout.current);
120
- handleHtmlRendering();
121
- pastShow(event.currentTarget);
122
- };
123
- const mouseMove = (event) => {
124
- var _a;
125
- if (!((_a = event.target) === null || _a === void 0 ? void 0 : _a.closest(`#${childId || `${id.current}-trigger`}`))) {
126
- hide();
127
- }
128
- };
129
- const handleHtmlRendering = (classNames = '', inlineStyle = {}, tipPos = {}) => {
130
- const body = document.getElementsByTagName('body')[0];
131
- const toolTip = document.getElementById(id.current);
132
- const div = document.createElement('div');
133
- div.setAttribute('id', id.current);
134
- if (toolTip) {
135
- body.replaceChild(div, toolTip);
136
- }
137
- else {
138
- body.appendChild(div);
139
- }
140
- react_dom_1.default.render(react_1.default.createElement("div", { ref: tooltipRef, className: (0, classnames_1.default)(style.tooltip, classNames), style: inlineStyle },
141
- react_1.default.createElement("div", { ref: tipRef, className: "tooltipArrow", style: tipPos }),
142
- react_1.default.createElement("div", { className: "tooltipInner" }, content)), div);
143
- };
144
- const hide = (_event) => {
145
- var _a;
146
- document.removeEventListener('mousemove', mouseMove);
147
- (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.classList.remove(style.visible);
148
- const body = document.getElementsByTagName('body')[0];
149
- clearTimeout(timeout.current);
150
- timeout.current = window.setTimeout(() => {
151
- const div = document.getElementById(id.current);
152
- if (div) {
153
- body.removeChild(div);
154
- }
155
- }, 300);
156
- };
157
- return react_1.default.cloneElement(react_1.default.Children.only(children), {
158
- id: childId || `${id.current}-trigger`,
159
- onMouseEnter: show,
160
- onMouseLeave: hide
161
- });
162
- };
163
- exports.default = ToolTip;
@@ -1,108 +0,0 @@
1
- @import '../variables.scss';
2
-
3
- .tooltip {
4
- position: fixed;
5
- font-style: normal;
6
- font-weight: 400;
7
- letter-spacing: normal;
8
- line-height: 1.25;
9
- text-align: left;
10
- text-shadow: none;
11
- text-transform: none;
12
- white-space: normal;
13
- word-break: normal;
14
- word-spacing: normal;
15
- word-wrap: normal;
16
- font-size: 12px;
17
- opacity: 0;
18
- visibility: hidden;
19
- z-index: 99999999;
20
- transition: opacity 0.3s, visibility 0.3s;
21
-
22
- &.visible {
23
- opacity: 1;
24
- visibility: visible;
25
- }
26
-
27
- &.hidden {
28
- opacity: 0;
29
- visibility: hidden;
30
- }
31
-
32
- &:global {
33
- &.right:not(.top):not(.bottom) {
34
- margin-left: 5px;
35
-
36
- .tooltipArrow {
37
- top: 50%;
38
- left: auto;
39
- margin-left: -5px;
40
- border-width: 5px 5px 5px 0;
41
- border-right-color: var(--reef);
42
- }
43
- }
44
-
45
- &.left:not(.top):not(.bottom) {
46
- margin-left: -5px;
47
-
48
- .tooltipArrow {
49
- top: 50%;
50
- margin-top: -5px;
51
- border-width: 5px 0 5px 5px;
52
- border-left-color: var(--reef);
53
- right: -5px;
54
- left: auto;
55
- }
56
- }
57
-
58
- &.top {
59
- margin-top: -5px;
60
-
61
- .tooltipArrow {
62
- top: auto;
63
- bottom: -5px;
64
- left: 50%;
65
- margin-left: -5px;
66
- border-width: 5px 5px 0;
67
- border-top-color: var(--reef);
68
- }
69
- }
70
-
71
- &.bottom {
72
- margin-top: 5px;
73
-
74
- .tooltipArrow {
75
- top: 0;
76
- left: 50%;
77
- margin-left: -5px;
78
- border-width: 0 5px 5px;
79
- border-bottom-color: var(--reef);
80
- }
81
- }
82
- }
83
- :global {
84
- .tooltipArrow {
85
- top: 50%;
86
- left: 0;
87
- margin-top: -5px;
88
- border-width: 5px 5px 5px 0;
89
- border-right-color: var(--reef);
90
- position: absolute;
91
- width: 0;
92
- height: 0;
93
- border-color: transparent;
94
- border-right-color: transparent;
95
- border-style: solid;
96
- }
97
-
98
- .tooltipInner {
99
- background: var(--reef);
100
- border-radius: 3px;
101
- color: #fff;
102
- max-width: 400px;
103
- padding: 5px 8px !important;
104
- text-align: center;
105
- white-space: nowrap;
106
- }
107
- }
108
- }
@@ -1,15 +0,0 @@
1
- interface PositionClasses {
2
- xClass: string;
3
- yClass: string;
4
- }
5
- export declare const getPositions: (positionClasses: PositionClasses, el: EventTarget & Element, tooltip: HTMLDivElement | null) => {
6
- left: number;
7
- top: number;
8
- };
9
- export declare const tipPosition: (positionClasses: PositionClasses, el: Element & EventTarget) => {
10
- left: string;
11
- right: string;
12
- };
13
- export declare const checkXPosition: (canBeXMiddle: boolean, canBeLeft: boolean) => "left" | "right" | "";
14
- export declare const checkYPosition: (canBeYMiddle: boolean, canBeAbove: boolean) => "bottom" | "top" | "";
15
- export {};