@pingux/astro 2.113.0-alpha.0 → 2.113.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/lib/cjs/components/AIComponents/Response/Response.js +5 -4
  2. package/lib/cjs/components/AIComponents/Response/Response.stories.d.ts +1 -0
  3. package/lib/cjs/components/AIComponents/Response/Response.stories.js +26 -15
  4. package/lib/cjs/components/AIComponents/Response/ResponseList.js +19 -17
  5. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownContainer.d.ts +4 -0
  6. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownContainer.js +64 -0
  7. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownListWrapper.d.ts +4 -0
  8. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownListWrapper.js +37 -0
  9. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownTextContainer.d.ts +5 -0
  10. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownTextContainer.js +94 -0
  11. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownTextWrapper.d.ts +4 -0
  12. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownTextWrapper.js +63 -0
  13. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownWrapper.d.ts +4 -0
  14. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/MarkdownWrapper.js +45 -0
  15. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/ResponseListItem.d.ts +4 -0
  16. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/ResponseListItem.js +64 -0
  17. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/ResponseMarkdown.d.ts +5 -0
  18. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/ResponseMarkdown.js +158 -0
  19. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/ResponseMarkdown.test.d.ts +1 -0
  20. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/ResponseMarkdown.test.js +85 -0
  21. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/index.d.ts +1 -0
  22. package/lib/cjs/components/AIComponents/Response/ResponseMarkdown/index.js +14 -0
  23. package/lib/cjs/components/AIComponents/Response/ResponseText.js +8 -5
  24. package/lib/cjs/components/AIComponents/Response/index.d.ts +1 -0
  25. package/lib/cjs/components/AIComponents/Response/index.js +7 -0
  26. package/lib/cjs/components/Text/Text.stories.js +2 -1
  27. package/lib/cjs/hooks/useTypeAnimation/useTypeAnimation.d.ts +3 -1
  28. package/lib/cjs/hooks/useTypeAnimation/useTypeAnimation.js +3 -1
  29. package/lib/cjs/hooks/useTypeAnimation/useTypeAnimation.test.js +6 -6
  30. package/lib/cjs/hooks/useTypeAnimationWrapper/index.d.ts +1 -0
  31. package/lib/cjs/hooks/useTypeAnimationWrapper/index.js +14 -0
  32. package/lib/cjs/hooks/useTypeAnimationWrapper/useTypeAnimationWrapper.d.ts +5 -0
  33. package/lib/cjs/hooks/useTypeAnimationWrapper/useTypeAnimationWrapper.js +48 -0
  34. package/lib/cjs/hooks/useTypeAnimationWrapper/useTypeAnimationWrapper.test.d.ts +1 -0
  35. package/lib/cjs/hooks/useTypeAnimationWrapper/useTypeAnimationWrapper.test.js +93 -0
  36. package/lib/cjs/index.d.ts +1 -0
  37. package/lib/cjs/index.js +8 -0
  38. package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +39 -0
  39. package/lib/cjs/styles/themes/next-gen/variants/response.d.ts +35 -0
  40. package/lib/cjs/styles/themes/next-gen/variants/response.js +41 -3
  41. package/lib/cjs/styles/themes/next-gen/variants/text.d.ts +4 -0
  42. package/lib/cjs/styles/themes/next-gen/variants/text.js +4 -0
  43. package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +35 -0
  44. package/lib/cjs/types/response.d.ts +39 -6
  45. package/lib/components/AIComponents/Response/Response.js +5 -4
  46. package/lib/components/AIComponents/Response/Response.stories.js +23 -13
  47. package/lib/components/AIComponents/Response/ResponseList.js +19 -17
  48. package/lib/components/AIComponents/Response/ResponseMarkdown/MarkdownContainer.js +50 -0
  49. package/lib/components/AIComponents/Response/ResponseMarkdown/MarkdownListWrapper.js +29 -0
  50. package/lib/components/AIComponents/Response/ResponseMarkdown/MarkdownTextContainer.js +79 -0
  51. package/lib/components/AIComponents/Response/ResponseMarkdown/MarkdownTextWrapper.js +55 -0
  52. package/lib/components/AIComponents/Response/ResponseMarkdown/MarkdownWrapper.js +31 -0
  53. package/lib/components/AIComponents/Response/ResponseMarkdown/ResponseListItem.js +50 -0
  54. package/lib/components/AIComponents/Response/ResponseMarkdown/ResponseMarkdown.js +145 -0
  55. package/lib/components/AIComponents/Response/ResponseMarkdown/ResponseMarkdown.test.js +82 -0
  56. package/lib/components/AIComponents/Response/ResponseMarkdown/index.js +1 -0
  57. package/lib/components/AIComponents/Response/ResponseText.js +7 -4
  58. package/lib/components/AIComponents/Response/index.js +1 -0
  59. package/lib/components/Text/Text.stories.js +2 -1
  60. package/lib/hooks/useTypeAnimation/useTypeAnimation.js +3 -1
  61. package/lib/hooks/useTypeAnimation/useTypeAnimation.test.js +6 -6
  62. package/lib/hooks/useTypeAnimationWrapper/index.js +1 -0
  63. package/lib/hooks/useTypeAnimationWrapper/useTypeAnimationWrapper.js +39 -0
  64. package/lib/hooks/useTypeAnimationWrapper/useTypeAnimationWrapper.test.js +90 -0
  65. package/lib/index.js +1 -0
  66. package/lib/styles/themes/next-gen/variants/response.js +41 -3
  67. package/lib/styles/themes/next-gen/variants/text.js +4 -0
  68. package/package.json +2 -1
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
7
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
9
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
10
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
11
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
12
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
13
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
14
+ _Object$defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ exports["default"] = exports.ResponseMarkdownContext = void 0;
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
19
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
20
+ var _react = _interopRequireWildcard(require("react"));
21
+ var _markdownToJsx = require("markdown-to-jsx");
22
+ var _MarkdownContainer = _interopRequireDefault(require("./MarkdownContainer"));
23
+ var _MarkdownListWrapper = _interopRequireDefault(require("./MarkdownListWrapper"));
24
+ var _MarkdownTextWrapper = _interopRequireDefault(require("./MarkdownTextWrapper"));
25
+ var _react2 = require("@emotion/react");
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
30
+ var ResponseMarkdownContext = /*#__PURE__*/(0, _react.createContext)({
31
+ stateIndex: -1
32
+ });
33
+ exports.ResponseMarkdownContext = ResponseMarkdownContext;
34
+ var ResponseMarkdown = function ResponseMarkdown(componentProps) {
35
+ var _useState = (0, _react.useState)(-1),
36
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
37
+ index = _useState2[0],
38
+ setIndex = _useState2[1];
39
+ var parentIndex = componentProps.parentIndex,
40
+ setAnimationIndex = componentProps.setAnimationIndex,
41
+ shouldStartAnimation = componentProps.shouldStartAnimation,
42
+ delay = componentProps.delay,
43
+ str = componentProps.str;
44
+ (0, _react.useEffect)(function () {
45
+ if (shouldStartAnimation) {
46
+ setIndex(0);
47
+ }
48
+ }, [shouldStartAnimation]);
49
+ var commonProps = {
50
+ setAnimationIndex: setIndex,
51
+ delay: delay,
52
+ parentIndex: index,
53
+ stateIndex: index
54
+ };
55
+ var markdown = (0, _markdownToJsx.compiler)(str, {
56
+ wrapper: _MarkdownContainer["default"],
57
+ forceWrapper: true,
58
+ overrides: {
59
+ h1: {
60
+ component: _MarkdownTextWrapper["default"],
61
+ props: _objectSpread({}, commonProps)
62
+ },
63
+ h2: {
64
+ component: _MarkdownTextWrapper["default"],
65
+ props: _objectSpread({}, commonProps)
66
+ },
67
+ h3: {
68
+ component: _MarkdownTextWrapper["default"],
69
+ props: _objectSpread({}, commonProps)
70
+ },
71
+ h4: {
72
+ component: _MarkdownTextWrapper["default"],
73
+ props: _objectSpread({}, commonProps)
74
+ },
75
+ h5: {
76
+ component: _MarkdownTextWrapper["default"],
77
+ props: _objectSpread({}, commonProps)
78
+ },
79
+ h6: {
80
+ component: _MarkdownTextWrapper["default"],
81
+ props: _objectSpread({}, commonProps)
82
+ },
83
+ p: {
84
+ component: _MarkdownTextWrapper["default"],
85
+ props: _objectSpread(_objectSpread({}, commonProps), {}, {
86
+ as: 'p'
87
+ })
88
+ },
89
+ li: {
90
+ component: _MarkdownTextWrapper["default"],
91
+ props: {
92
+ setAnimationIndex: setIndex,
93
+ delay: delay,
94
+ as: 'li'
95
+ }
96
+ },
97
+ ul: {
98
+ component: _MarkdownListWrapper["default"],
99
+ props: {
100
+ setAnimationIndex: setIndex,
101
+ delay: delay,
102
+ stateIndex: index,
103
+ as: 'ul'
104
+ }
105
+ },
106
+ strong: {
107
+ component: _MarkdownTextWrapper["default"],
108
+ props: _objectSpread(_objectSpread({}, commonProps), {}, {
109
+ as: 'strong'
110
+ })
111
+ },
112
+ em: {
113
+ component: _MarkdownTextWrapper["default"],
114
+ props: _objectSpread(_objectSpread({}, commonProps), {}, {
115
+ as: 'em'
116
+ })
117
+ },
118
+ i: {
119
+ component: _MarkdownTextWrapper["default"],
120
+ props: {
121
+ setAnimationIndex: setIndex,
122
+ delay: delay,
123
+ stateIndex: index,
124
+ as: 'i'
125
+ }
126
+ },
127
+ ol: {
128
+ component: _MarkdownListWrapper["default"],
129
+ props: {
130
+ setAnimationIndex: setIndex,
131
+ delay: delay,
132
+ stateIndex: index,
133
+ as: 'ol'
134
+ }
135
+ }
136
+ }
137
+ });
138
+ (0, _react.useEffect)(function () {
139
+ if (index === markdown.props.children.length) {
140
+ setAnimationIndex(parentIndex + 1);
141
+ }
142
+ }, [index, markdown.props.children.length]);
143
+ var setAnimationCallback = (0, _react.useCallback)(function (val) {
144
+ setIndex(val);
145
+ }, [index, setIndex]);
146
+ var contextValues = (0, _react.useMemo)(function () {
147
+ return {
148
+ setAnimationIndex: setAnimationCallback,
149
+ stateIndex: index,
150
+ delay: delay
151
+ };
152
+ }, [setAnimationCallback, index, delay]);
153
+ return (0, _react2.jsx)(ResponseMarkdownContext.Provider, {
154
+ value: contextValues
155
+ }, markdown);
156
+ };
157
+ var _default = ResponseMarkdown;
158
+ exports["default"] = _default;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _testWrapper = require("../../../../utils/testUtils/testWrapper");
7
+ var _Response = _interopRequireDefault(require("../Response"));
8
+ var _ResponseMarkdown = _interopRequireDefault(require("./ResponseMarkdown"));
9
+ var _react2 = require("@emotion/react");
10
+ var markdownString = '#Heading\n\n1. First item\n\n - Unordered item\n\n **bold**:not bold';
11
+ var italics = '*Italics* regular';
12
+ var secondMarkDownString = 'begin\n\n1. **Timestamp:** 2025-02-13T09:25:55.946Z\n - **User:** bbludis476@gmail.com\n - **Action:** User Access Allowed\n - **Status:** SUCCESS\n\n2. **Timestamp:** 2025-02-13T09:25:52.377Z\n - **User:** bbludis476@gmail.com\n - **Action:** User Access Allowed\n - **What:** SUCCESS';
13
+ var getComponent = function getComponent() {
14
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
+ return (0, _testWrapper.render)((0, _react2.jsx)(_Response["default"], (0, _extends2["default"])({}, props, {
16
+ delay: 10
17
+ }), (0, _react2.jsx)(_ResponseMarkdown["default"], {
18
+ str: markdownString
19
+ })));
20
+ };
21
+ var getComponentWithNesting = function getComponentWithNesting() {
22
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
+ return (0, _testWrapper.render)((0, _react2.jsx)(_Response["default"], (0, _extends2["default"])({}, props, {
24
+ delay: 10
25
+ }), (0, _react2.jsx)(_ResponseMarkdown["default"], {
26
+ str: secondMarkDownString
27
+ })));
28
+ };
29
+ var getComponentItalics = function getComponentItalics() {
30
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
31
+ return (0, _testWrapper.render)((0, _react2.jsx)(_Response["default"], (0, _extends2["default"])({}, props, {
32
+ delay: 10
33
+ }), (0, _react2.jsx)(_ResponseMarkdown["default"], {
34
+ str: italics
35
+ })));
36
+ };
37
+ beforeEach(function () {
38
+ jest.useFakeTimers();
39
+ });
40
+ test('renders markdown content correctly', function () {
41
+ getComponent();
42
+ for (var i = 0; i < 8 + 1; i += 1) {
43
+ (0, _testWrapper.act)(function () {
44
+ jest.advanceTimersByTime(10);
45
+ });
46
+ }
47
+ expect(_testWrapper.screen.queryByText('Heading')).toBeInTheDocument();
48
+ for (var _i = 0; _i < 10 + 1; _i += 1) {
49
+ (0, _testWrapper.act)(function () {
50
+ jest.advanceTimersByTime(10);
51
+ });
52
+ }
53
+ expect(_testWrapper.screen.getByText('First item')).toBeInTheDocument();
54
+ for (var _i2 = 0; _i2 < 15; _i2 += 1) {
55
+ (0, _testWrapper.act)(function () {
56
+ jest.advanceTimersByTime(10);
57
+ });
58
+ }
59
+ expect(_testWrapper.screen.getByText('Unordered item')).toBeInTheDocument();
60
+ for (var _i3 = 0; _i3 < 13; _i3 += 1) {
61
+ (0, _testWrapper.act)(function () {
62
+ jest.advanceTimersByTime(10);
63
+ });
64
+ }
65
+ expect(_testWrapper.screen.getByText('bold')).toBeInTheDocument();
66
+ expect(_testWrapper.screen.getByText(':not bold')).toBeInTheDocument();
67
+ });
68
+ test('renders nested markdown content correctly', function () {
69
+ getComponentWithNesting();
70
+ for (var i = 0; i < 300; i += 1) {
71
+ (0, _testWrapper.act)(function () {
72
+ jest.advanceTimersByTime(10);
73
+ });
74
+ }
75
+ expect(_testWrapper.screen.getByText('What:')).toBeInTheDocument();
76
+ });
77
+ test('renders nested markdown content correctly', function () {
78
+ getComponentItalics();
79
+ for (var i = 0; i < 15; i += 1) {
80
+ (0, _testWrapper.act)(function () {
81
+ jest.advanceTimersByTime(10);
82
+ });
83
+ }
84
+ expect(_testWrapper.screen.getByText('Italics')).toBeInTheDocument();
85
+ });
@@ -0,0 +1 @@
1
+ export { default } from './ResponseMarkdown';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ _Object$defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _ResponseMarkdown["default"];
12
+ }
13
+ });
14
+ var _ResponseMarkdown = _interopRequireDefault(require("./ResponseMarkdown"));
@@ -10,12 +10,13 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/e
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
11
11
  var _react = _interopRequireDefault(require("react"));
12
12
  var _hooks = require("../../../hooks");
13
- var _useTypeAnimation = _interopRequireDefault(require("../../../hooks/useTypeAnimation/useTypeAnimation"));
13
+ var _useTypeAnimation2 = _interopRequireDefault(require("../../../hooks/useTypeAnimation/useTypeAnimation"));
14
14
  var _index = require("../../../index");
15
15
  var _react2 = require("@emotion/react");
16
16
  var _excluded = ["delay", "text", "shouldStartAnimation", "setAnimationIndex", "animationIndex", "isListItem", "className"];
17
17
  var ResponseText = function ResponseText(props) {
18
- var delay = props.delay,
18
+ var _props$delay = props.delay,
19
+ delay = _props$delay === void 0 ? 10 : _props$delay,
19
20
  text = props.text,
20
21
  shouldStartAnimation = props.shouldStartAnimation,
21
22
  setAnimationIndex = props.setAnimationIndex,
@@ -30,17 +31,19 @@ var ResponseText = function ResponseText(props) {
30
31
  animationIndex: animationIndex,
31
32
  shouldStartAnimation: shouldStartAnimation
32
33
  };
33
- var currentText = (0, _useTypeAnimation["default"])(animationProps);
34
- var hasBullet = isListItem && currentText.length > 0;
34
+ var _useTypeAnimation = (0, _useTypeAnimation2["default"])(animationProps),
35
+ currentText = _useTypeAnimation.currentText;
36
+ var hasBullet = isListItem === true && currentText.length > 0;
35
37
  var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
36
38
  hasBullet: hasBullet
37
39
  }),
38
40
  classNames = _useStatusClasses.classNames;
41
+ var renderText = "".concat(currentText);
39
42
  return (0, _react2.jsx)(_index.Text, (0, _extends2["default"])({}, others, {
40
43
  role: isListItem ? 'listitem' : '',
41
44
  variant: "response",
42
45
  className: classNames
43
- }), currentText);
46
+ }), renderText);
44
47
  };
45
48
  var _default = ResponseText;
46
49
  exports["default"] = _default;
@@ -1,6 +1,7 @@
1
1
  export { default } from './Response';
2
2
  export { default as ResponseAttachment } from './ResponseAttachment';
3
3
  export { default as ResponseList } from './ResponseList';
4
+ export { default as ResponseMarkdown } from './ResponseMarkdown';
4
5
  export { default as ResponseText } from './ResponseText';
5
6
  export { default as ResponseToolbar } from './ResponseToolbar';
6
7
  export { default as ResponseToolbarIcon } from './ResponseToolbarIcon';
@@ -17,6 +17,12 @@ _Object$defineProperty(exports, "ResponseList", {
17
17
  return _ResponseList["default"];
18
18
  }
19
19
  });
20
+ _Object$defineProperty(exports, "ResponseMarkdown", {
21
+ enumerable: true,
22
+ get: function get() {
23
+ return _ResponseMarkdown["default"];
24
+ }
25
+ });
20
26
  _Object$defineProperty(exports, "ResponseText", {
21
27
  enumerable: true,
22
28
  get: function get() {
@@ -44,6 +50,7 @@ _Object$defineProperty(exports, "default", {
44
50
  var _Response = _interopRequireDefault(require("./Response"));
45
51
  var _ResponseAttachment = _interopRequireDefault(require("./ResponseAttachment"));
46
52
  var _ResponseList = _interopRequireDefault(require("./ResponseList"));
53
+ var _ResponseMarkdown = _interopRequireDefault(require("./ResponseMarkdown"));
47
54
  var _ResponseText = _interopRequireDefault(require("./ResponseText"));
48
55
  var _ResponseToolbar = _interopRequireDefault(require("./ResponseToolbar"));
49
56
  var _ResponseToolbarIcon = _interopRequireDefault(require("./ResponseToolbarIcon"));
@@ -430,7 +430,8 @@ var CustomWidth = function CustomWidth() {
430
430
  return (0, _react2.jsx)(_index.Box, {
431
431
  width: 200
432
432
  }, (0, _react2.jsx)(_index.Text, {
433
- p: "xl"
433
+ p: "xl",
434
+ color: "text.secondary"
434
435
  }, "superlongtextinonelinewithnowhitespacessoitcanbelongerthatanywidth"));
435
436
  };
436
437
  exports.CustomWidth = CustomWidth;
@@ -4,5 +4,7 @@ declare const useTypeAnimation: ({ shouldStartAnimation, text, delay, setAnimati
4
4
  delay: any;
5
5
  setAnimationIndex: any;
6
6
  animationIndex: any;
7
- }) => string;
7
+ }) => {
8
+ currentText: string;
9
+ };
8
10
  export default useTypeAnimation;
@@ -44,7 +44,9 @@ var useTypeAnimation = function useTypeAnimation(_ref) {
44
44
  return null;
45
45
  };
46
46
  }, [currentIndex, delay, text, shouldStartAnimation, setAnimationIndex, animationIndex]);
47
- return currentText;
47
+ return {
48
+ currentText: currentText
49
+ };
48
50
  };
49
51
  var _default = useTypeAnimation;
50
52
  exports["default"] = _default;
@@ -38,14 +38,14 @@ describe('useTypeAnimation', function () {
38
38
  return (0, _useTypeAnimation["default"])(defaultProps);
39
39
  }),
40
40
  result = _renderHook.result;
41
- expect(result.current).toBe('');
41
+ expect(result.current.currentText).toBe('');
42
42
  for (var i = 0; i < text.length; i += 1) {
43
43
  (0, _reactHooks.act)(function () {
44
44
  jest.advanceTimersByTime(delay);
45
45
  });
46
- expect(result.current).toBe((0, _slice["default"])(text).call(text, 0, i + 1));
46
+ expect(result.current.currentText).toBe((0, _slice["default"])(text).call(text, 0, i + 1));
47
47
  }
48
- expect(result.current).toBe(text);
48
+ expect(result.current.currentText).toBe(text);
49
49
  });
50
50
  it('should NOT render text when shouldStartAnimation = false', function () {
51
51
  var _renderHook2 = (0, _reactHooks.renderHook)(function () {
@@ -54,13 +54,13 @@ describe('useTypeAnimation', function () {
54
54
  }));
55
55
  }),
56
56
  result = _renderHook2.result;
57
- expect(result.current).toBe('');
57
+ expect(result.current.currentText).toBe('');
58
58
  for (var i = 0; i < text.length; i += 1) {
59
59
  (0, _reactHooks.act)(function () {
60
60
  jest.advanceTimersByTime(delay);
61
61
  });
62
- expect(result.current).toBe('');
62
+ expect(result.current.currentText).toBe('');
63
63
  }
64
- expect(result.current).toBe('');
64
+ expect(result.current.currentText).toBe('');
65
65
  });
66
66
  });
@@ -0,0 +1 @@
1
+ export { default } from './useTypeAnimationWrapper';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ _Object$defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _useTypeAnimationWrapper["default"];
12
+ }
13
+ });
14
+ var _useTypeAnimationWrapper = _interopRequireDefault(require("./useTypeAnimationWrapper"));
@@ -0,0 +1,5 @@
1
+ declare const useTypeAnimationWrapper: (props: any) => {
2
+ shouldStart: boolean;
3
+ hasList: boolean;
4
+ };
5
+ export default useTypeAnimationWrapper;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
10
+ var _react = require("react");
11
+ var useTypeAnimationWrapper = function useTypeAnimationWrapper(props) {
12
+ var animationIndex = props.animationIndex,
13
+ stateIndex = props.stateIndex,
14
+ isTopLevel = props.isTopLevel,
15
+ shouldStartAnimation = props.shouldStartAnimation,
16
+ children = props.children;
17
+ var _useState = (0, _react.useState)(false),
18
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
19
+ shouldStart = _useState2[0],
20
+ setShouldStart = _useState2[1];
21
+ var _useState3 = (0, _react.useState)(false),
22
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
23
+ hasList = _useState4[0],
24
+ setHasList = _useState4[1];
25
+ (0, _react.useEffect)(function () {
26
+ var shouldSetShouldStart = animationIndex === stateIndex && isTopLevel || shouldStartAnimation === true;
27
+ if (shouldSetShouldStart) {
28
+ setShouldStart(true);
29
+ } else {
30
+ setShouldStart(false);
31
+ }
32
+ }, [animationIndex, stateIndex, isTopLevel, shouldStartAnimation]);
33
+ (0, _react.useEffect)(function () {
34
+ if (!children || children.length < 0) return;
35
+ for (var i = 0; i < children.length; i += 1) {
36
+ var _children$i;
37
+ if ((_children$i = children[i]) !== null && _children$i !== void 0 && _children$i.props && (children[i].props.as === 'ul' || children[i].props.as === 'ol')) {
38
+ setHasList(true);
39
+ }
40
+ }
41
+ }, [children]);
42
+ return {
43
+ shouldStart: shouldStart,
44
+ hasList: hasList
45
+ };
46
+ };
47
+ var _default = useTypeAnimationWrapper;
48
+ exports["default"] = _default;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+ var _reactHooks = require("@testing-library/react-hooks");
5
+ var _useTypeAnimationWrapper = _interopRequireDefault(require("./useTypeAnimationWrapper"));
6
+ var animationIndex = 0;
7
+ var stateIndex = 1;
8
+ var isTopLevel = false;
9
+ var shouldStartAnimation = false;
10
+ var children = [{
11
+ props: {
12
+ as: 'ul'
13
+ }
14
+ }, {
15
+ props: {
16
+ as: 'li'
17
+ }
18
+ }, {
19
+ props: {
20
+ as: 'ol'
21
+ }
22
+ }];
23
+ describe('useTypeAnimationWrapper', function () {
24
+ it('should not start animation if animationIndex does not match stateIndex and isTopLevel is false', function () {
25
+ var _renderHook = (0, _reactHooks.renderHook)(function () {
26
+ return (0, _useTypeAnimationWrapper["default"])({
27
+ animationIndex: animationIndex,
28
+ stateIndex: stateIndex,
29
+ isTopLevel: isTopLevel,
30
+ shouldStartAnimation: shouldStartAnimation,
31
+ children: children
32
+ });
33
+ }),
34
+ result = _renderHook.result;
35
+ expect(result.current.shouldStart).toBe(false);
36
+ });
37
+ it('should start animation if animationIndex matches stateIndex and isTopLevel is true', function () {
38
+ var _renderHook2 = (0, _reactHooks.renderHook)(function () {
39
+ return (0, _useTypeAnimationWrapper["default"])({
40
+ animationIndex: 1,
41
+ stateIndex: 1,
42
+ isTopLevel: true,
43
+ shouldStartAnimation: shouldStartAnimation,
44
+ children: children
45
+ });
46
+ }),
47
+ result = _renderHook2.result;
48
+ expect(result.current.shouldStart).toBe(true);
49
+ });
50
+ it('should start animation if shouldStartAnimation is true', function () {
51
+ var _renderHook3 = (0, _reactHooks.renderHook)(function () {
52
+ return (0, _useTypeAnimationWrapper["default"])({
53
+ animationIndex: animationIndex,
54
+ stateIndex: stateIndex,
55
+ isTopLevel: isTopLevel,
56
+ shouldStartAnimation: true,
57
+ children: children
58
+ });
59
+ }),
60
+ result = _renderHook3.result;
61
+ expect(result.current.shouldStart).toBe(true);
62
+ });
63
+ it('should detect if children contain a list', function () {
64
+ var _renderHook4 = (0, _reactHooks.renderHook)(function () {
65
+ return (0, _useTypeAnimationWrapper["default"])({
66
+ animationIndex: animationIndex,
67
+ stateIndex: stateIndex,
68
+ isTopLevel: isTopLevel,
69
+ shouldStartAnimation: shouldStartAnimation,
70
+ children: children
71
+ });
72
+ }),
73
+ result = _renderHook4.result;
74
+ expect(result.current.hasList).toBe(true);
75
+ });
76
+ it('should not detect a list if children do not contain a list', function () {
77
+ var _renderHook5 = (0, _reactHooks.renderHook)(function () {
78
+ return (0, _useTypeAnimationWrapper["default"])({
79
+ animationIndex: animationIndex,
80
+ stateIndex: stateIndex,
81
+ isTopLevel: isTopLevel,
82
+ shouldStartAnimation: shouldStartAnimation,
83
+ children: [{
84
+ props: {
85
+ as: 'div'
86
+ }
87
+ }]
88
+ });
89
+ }),
90
+ result = _renderHook5.result;
91
+ expect(result.current.hasList).toBe(false);
92
+ });
93
+ });
@@ -14,6 +14,7 @@ export { default as PromptInput } from './components/AIComponents/PromptInput';
14
14
  export { default as Response } from './components/AIComponents/Response';
15
15
  export { default as ResponseAttachment } from './components/AIComponents/Response/ResponseAttachment';
16
16
  export { default as ResponseList } from './components/AIComponents/Response/ResponseList';
17
+ export { default as ResponseMarkdown } from './components/AIComponents/Response/ResponseMarkdown';
17
18
  export { default as ResponseText } from './components/AIComponents/Response/ResponseText';
18
19
  export { default as ResponseToolbar } from './components/AIComponents/Response/ResponseToolbar';
19
20
  export { default as ResponseToolbarIcon } from './components/AIComponents/Response/ResponseToolbarIcon';
package/lib/cjs/index.js CHANGED
@@ -24,6 +24,7 @@ var _exportNames = {
24
24
  Response: true,
25
25
  ResponseAttachment: true,
26
26
  ResponseList: true,
27
+ ResponseMarkdown: true,
27
28
  ResponseText: true,
28
29
  ResponseToolbar: true,
29
30
  ResponseToolbarIcon: true,
@@ -787,6 +788,12 @@ _Object$defineProperty(exports, "ResponseList", {
787
788
  return _ResponseList["default"];
788
789
  }
789
790
  });
791
+ _Object$defineProperty(exports, "ResponseMarkdown", {
792
+ enumerable: true,
793
+ get: function get() {
794
+ return _ResponseMarkdown["default"];
795
+ }
796
+ });
790
797
  _Object$defineProperty(exports, "ResponseText", {
791
798
  enumerable: true,
792
799
  get: function get() {
@@ -1077,6 +1084,7 @@ var _PromptInput = _interopRequireDefault(require("./components/AIComponents/Pro
1077
1084
  var _Response = _interopRequireDefault(require("./components/AIComponents/Response"));
1078
1085
  var _ResponseAttachment = _interopRequireDefault(require("./components/AIComponents/Response/ResponseAttachment"));
1079
1086
  var _ResponseList = _interopRequireDefault(require("./components/AIComponents/Response/ResponseList"));
1087
+ var _ResponseMarkdown = _interopRequireDefault(require("./components/AIComponents/Response/ResponseMarkdown"));
1080
1088
  var _ResponseText = _interopRequireDefault(require("./components/AIComponents/Response/ResponseText"));
1081
1089
  var _ResponseToolbar = _interopRequireDefault(require("./components/AIComponents/Response/ResponseToolbar"));
1082
1090
  var _ResponseToolbarIcon = _interopRequireDefault(require("./components/AIComponents/Response/ResponseToolbarIcon"));