stream-chat-react 10.7.6 → 10.8.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.
- package/dist/browser.full-bundle.js +148 -31
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +4 -4
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +48 -6
- package/dist/components/ChannelList/utils.d.ts +6 -0
- package/dist/components/ChannelList/utils.d.ts.map +1 -1
- package/dist/components/ChannelList/utils.js +24 -3
- package/dist/components/MessageInput/MessageInput.d.ts +2 -0
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +2 -2
- package/dist/index.cjs.js +86 -19
- package/dist/index.cjs.js.map +1 -1
- package/dist/utils/browsers.d.ts +2 -0
- package/dist/utils/browsers.d.ts.map +1 -0
- package/dist/utils/browsers.js +5 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/AutoCompleteTextarea/Textarea.jsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/AutoCompleteTextarea/Textarea.jsx"],"names":[],"mappings":"AAmBA;IACE;;;;;;;MAOE;IA2WF;;OAEG;IACH;;;aAMC;IAlXD,wBA4BC;IAZC;;;;;;;;;;;MAWC;IAGH;;;aAOE;IAEF,2BAOE;IAEF,8CAKE;IAEF,+BAIE;IAEF;;;;;;OAMG;IACH,8CAC6E;IAE7E,qCAUE;IAEF,+BAcE;IAEF,qBAQE;IAEF,yBA6BE;IAEF,mCAqEE;IAEF,qEAuBE;IAEF,sEA2DE;IAEF,uDAQE;IAEF,mCA0CE;IAEF,6CAQE;IAYF;;OAEG;IACH,+BAQE;IAEF;;MA6CE;IAEF,mCAME;IAEF,iCA+EE;IAEF,iCASE;IAGF,yCA0BE;IAEF,6BAAmD;IAEnD,qCAiBE;IAEF;;;;;;;;MAoCE;IAEF,uCAEE;IADA,iBAA0B;IAG5B,oDA2CC;IAED,sBA2EC;IATS,oDAAsB;CAUjC"}
|
|
@@ -24,6 +24,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
24
24
|
};
|
|
25
25
|
return __assign.apply(this, arguments);
|
|
26
26
|
};
|
|
27
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
28
|
+
var t = {};
|
|
29
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
30
|
+
t[p] = s[p];
|
|
31
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
32
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
33
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
34
|
+
t[p[i]] = s[p[i]];
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
};
|
|
27
38
|
import React from 'react';
|
|
28
39
|
import PropTypes from 'prop-types';
|
|
29
40
|
import Textarea from 'react-textarea-autosize';
|
|
@@ -32,8 +43,9 @@ import { isValidElementType } from 'react-is';
|
|
|
32
43
|
import clsx from 'clsx';
|
|
33
44
|
import { List as DefaultSuggestionList } from './List';
|
|
34
45
|
import { DEFAULT_CARET_POSITION, defaultScrollToItem, errorMessage, triggerPropsCheck, } from './utils';
|
|
35
|
-
import { CommandItem } from '../CommandItem
|
|
36
|
-
import { UserItem } from '../UserItem
|
|
46
|
+
import { CommandItem } from '../CommandItem';
|
|
47
|
+
import { UserItem } from '../UserItem';
|
|
48
|
+
import { isSafari } from '../../utils/browsers';
|
|
37
49
|
var ReactTextareaAutocomplete = /** @class */ (function (_super) {
|
|
38
50
|
__extends(ReactTextareaAutocomplete, _super);
|
|
39
51
|
function ReactTextareaAutocomplete(props) {
|
|
@@ -434,7 +446,14 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
|
|
|
434
446
|
// that was actually clicked. If we clicked inside the auto-select dropdown, then
|
|
435
447
|
// that's not a blur, from the auto-select point of view, so then do nothing.
|
|
436
448
|
var el = e.relatedTarget;
|
|
437
|
-
|
|
449
|
+
// If this is a blur event in Safari, then relatedTarget is never a dropdown item, but a common parent
|
|
450
|
+
// of textarea and dropdown container. That means that dropdownRef will not contain its parent and the
|
|
451
|
+
// autocomplete will be closed before onclick handler can be invoked selecting an item.
|
|
452
|
+
// It seems that Safari has different implementation determining the relatedTarget node than Chrome and Firefox.
|
|
453
|
+
// Therefore, if focused away in Safari, the dropdown will be kept rendered until pressing Esc or selecting and item from it.
|
|
454
|
+
var focusedAwayInSafari = isSafari() && e.type === 'blur';
|
|
455
|
+
if ((_this.dropdownRef && el instanceof Node && _this.dropdownRef.contains(el)) ||
|
|
456
|
+
focusedAwayInSafari) {
|
|
438
457
|
return;
|
|
439
458
|
}
|
|
440
459
|
if (closeOnClickOutside)
|
|
@@ -540,8 +559,9 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
|
|
|
540
559
|
ReactTextareaAutocomplete.prototype.render = function () {
|
|
541
560
|
var _this = this;
|
|
542
561
|
var _a = this.props, className = _a.className, containerClassName = _a.containerClassName, containerStyle = _a.containerStyle, style = _a.style;
|
|
562
|
+
var _b = this.props.additionalTextareaProps || {}, onBlur = _b.onBlur, onChange = _b.onChange, onClick = _b.onClick, onFocus = _b.onFocus, onKeyDown = _b.onKeyDown, onScroll = _b.onScroll, onSelect = _b.onSelect, restAdditionalTextareaProps = __rest(_b, ["onBlur", "onChange", "onClick", "onFocus", "onKeyDown", "onScroll", "onSelect"]);
|
|
543
563
|
var maxRows = this.props.maxRows;
|
|
544
|
-
var
|
|
564
|
+
var _c = this.state, dataLoading = _c.dataLoading, value = _c.value;
|
|
545
565
|
if (!this.props.grow)
|
|
546
566
|
maxRows = 1;
|
|
547
567
|
// By setting defaultValue to undefined, avoid error:
|
|
@@ -551,11 +571,33 @@ var ReactTextareaAutocomplete = /** @class */ (function (_super) {
|
|
|
551
571
|
'rta--loading': dataLoading,
|
|
552
572
|
}), style: containerStyle },
|
|
553
573
|
this.renderSuggestionListContainer(),
|
|
554
|
-
React.createElement(Textarea, __assign({ "data-testid": 'message-input' }, this._cleanUpProps(), { className: clsx('rta__textarea', className), maxRows: maxRows, onBlur:
|
|
574
|
+
React.createElement(Textarea, __assign({ "data-testid": 'message-input' }, this._cleanUpProps(), { className: clsx('rta__textarea', className), maxRows: maxRows, onBlur: function (e) {
|
|
575
|
+
_this._onClickAndBlurHandler(e);
|
|
576
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
|
|
577
|
+
}, onChange: function (e) {
|
|
578
|
+
_this._changeHandler(e);
|
|
579
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
580
|
+
}, onClick: function (e) {
|
|
581
|
+
_this._onClickAndBlurHandler(e);
|
|
582
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
583
|
+
}, onFocus: function (e) {
|
|
584
|
+
var _a, _b;
|
|
585
|
+
(_b = (_a = _this.props).onFocus) === null || _b === void 0 ? void 0 : _b.call(_a, e);
|
|
586
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
|
|
587
|
+
}, onKeyDown: function (e) {
|
|
588
|
+
_this._handleKeyDown(e);
|
|
589
|
+
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
|
|
590
|
+
}, onScroll: function (e) {
|
|
591
|
+
_this._onScrollHandler(e);
|
|
592
|
+
onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
|
|
593
|
+
}, onSelect: function (e) {
|
|
594
|
+
_this._selectHandler(e);
|
|
595
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(e);
|
|
596
|
+
}, ref: function (ref) {
|
|
555
597
|
var _a;
|
|
556
598
|
(_a = _this.props) === null || _a === void 0 ? void 0 : _a.innerRef(ref);
|
|
557
599
|
_this.textareaRef = ref;
|
|
558
|
-
}, style: style, value: value },
|
|
600
|
+
}, style: style, value: value }, restAdditionalTextareaProps, { defaultValue: undefined }))));
|
|
559
601
|
};
|
|
560
602
|
ReactTextareaAutocomplete.defaultProps = {
|
|
561
603
|
closeOnClickOutside: true,
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { Channel, StreamChat } from 'stream-chat';
|
|
2
2
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
3
|
+
/**
|
|
4
|
+
* Calls channel.watch() if it was not already recently called. Waits for watch promise to resolve even if it was invoked previously.
|
|
5
|
+
* @param client
|
|
6
|
+
* @param type
|
|
7
|
+
* @param id
|
|
8
|
+
*/
|
|
3
9
|
export declare const getChannel: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(client: StreamChat<StreamChatGenerics>, type: string, id: string) => Promise<Channel<StreamChatGenerics>>;
|
|
4
10
|
export declare const MAX_QUERY_CHANNELS_LIMIT = 30;
|
|
5
11
|
declare type MoveChannelUpParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelList/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelList/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA2B,UAAU,EAAE,MAAM,aAAa,CAAC;AAGhF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAWnE;;;;;GAKG;AACH,eAAO,MAAM,UAAU,mIAIf,MAAM,MACR,MAAM,yCAaX,CAAC;AAEF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,aAAK,mBAAmB,CACtB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,aAAa,iMAgBzB,CAAC"}
|
|
@@ -44,16 +44,37 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
44
44
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
45
|
};
|
|
46
46
|
import uniqBy from 'lodash.uniqby';
|
|
47
|
+
/**
|
|
48
|
+
* prevent from duplicate invocation of channel.watch()
|
|
49
|
+
* when events 'notification.message_new' and 'notification.added_to_channel' arrive at the same time
|
|
50
|
+
*/
|
|
51
|
+
var WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL = {};
|
|
52
|
+
/**
|
|
53
|
+
* Calls channel.watch() if it was not already recently called. Waits for watch promise to resolve even if it was invoked previously.
|
|
54
|
+
* @param client
|
|
55
|
+
* @param type
|
|
56
|
+
* @param id
|
|
57
|
+
*/
|
|
47
58
|
export var getChannel = function (client, type, id) { return __awaiter(void 0, void 0, void 0, function () {
|
|
48
|
-
var channel;
|
|
59
|
+
var channel, queryPromise;
|
|
49
60
|
return __generator(this, function (_a) {
|
|
50
61
|
switch (_a.label) {
|
|
51
62
|
case 0:
|
|
52
63
|
channel = client.channel(type, id);
|
|
53
|
-
|
|
64
|
+
queryPromise = WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid];
|
|
65
|
+
if (!queryPromise) return [3 /*break*/, 2];
|
|
66
|
+
return [4 /*yield*/, queryPromise];
|
|
54
67
|
case 1:
|
|
55
68
|
_a.sent();
|
|
56
|
-
return [
|
|
69
|
+
return [3 /*break*/, 4];
|
|
70
|
+
case 2:
|
|
71
|
+
WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid] = channel.watch();
|
|
72
|
+
return [4 /*yield*/, WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid]];
|
|
73
|
+
case 3:
|
|
74
|
+
_a.sent();
|
|
75
|
+
WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid] = undefined;
|
|
76
|
+
_a.label = 4;
|
|
77
|
+
case 4: return [2 /*return*/, channel];
|
|
57
78
|
}
|
|
58
79
|
});
|
|
59
80
|
}); };
|
|
@@ -27,6 +27,8 @@ export declare type MessageInputProps<StreamChatGenerics extends DefaultStreamCh
|
|
|
27
27
|
}) => void;
|
|
28
28
|
/** If true, focuses the text input on component mount */
|
|
29
29
|
focus?: boolean;
|
|
30
|
+
/** Generates the default value for the underlying textarea element. The function's return value takes precedence before additionalTextareaProps.defaultValue. */
|
|
31
|
+
getDefaultValue?: () => string | string[];
|
|
30
32
|
/** If true, expands the text input vertically for new lines */
|
|
31
33
|
grow?: boolean;
|
|
32
34
|
/** Custom UI component handling how the message input is rendered, defaults to and accepts the same props as [MessageInputFlat](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageInput/MessageInputFlat.tsx) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -151,9 +151,9 @@ var messageInputReducer = function (state, action) {
|
|
|
151
151
|
* hook for MessageInput state
|
|
152
152
|
*/
|
|
153
153
|
export var useMessageInputState = function (props) {
|
|
154
|
-
var additionalTextareaProps = props.additionalTextareaProps, closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
|
|
154
|
+
var additionalTextareaProps = props.additionalTextareaProps, closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, getDefaultValue = props.getDefaultValue, message = props.message;
|
|
155
155
|
var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
|
|
156
|
-
var defaultValue = additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue;
|
|
156
|
+
var defaultValue = (getDefaultValue === null || getDefaultValue === void 0 ? void 0 : getDefaultValue()) || (additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue);
|
|
157
157
|
var initialStateValue = message ||
|
|
158
158
|
(Array.isArray(defaultValue)
|
|
159
159
|
? { text: defaultValue.join('') }
|
package/dist/index.cjs.js
CHANGED
|
@@ -37,6 +37,7 @@ var uniqBy = require('lodash.uniqby');
|
|
|
37
37
|
var PropTypes = require('prop-types');
|
|
38
38
|
var ReactIs = require('react-is');
|
|
39
39
|
var path$1 = require('path');
|
|
40
|
+
var _objectWithoutProperties$1 = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
40
41
|
var _extends = require('@babel/runtime/helpers/extends');
|
|
41
42
|
var _typeof = require('@babel/runtime/helpers/typeof');
|
|
42
43
|
var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
|
|
@@ -97,6 +98,7 @@ var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
|
|
|
97
98
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
98
99
|
var ReactIs__default = /*#__PURE__*/_interopDefaultLegacy(ReactIs);
|
|
99
100
|
var path__default = /*#__PURE__*/_interopDefaultLegacy(path$1);
|
|
101
|
+
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties$1);
|
|
100
102
|
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
101
103
|
var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
|
|
102
104
|
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
|
|
@@ -24209,6 +24211,13 @@ var UnMemoizedUserItem = function (_a) {
|
|
|
24209
24211
|
};
|
|
24210
24212
|
var UserItem = React__default["default"].memo(UnMemoizedUserItem);
|
|
24211
24213
|
|
|
24214
|
+
var isSafari = function () {
|
|
24215
|
+
if (typeof navigator === 'undefined')
|
|
24216
|
+
return false;
|
|
24217
|
+
return /^((?!chrome|android).)*safari/i.test(navigator.userAgent || '');
|
|
24218
|
+
};
|
|
24219
|
+
|
|
24220
|
+
var _excluded$1 = ["onBlur", "onChange", "onClick", "onFocus", "onKeyDown", "onScroll", "onSelect"];
|
|
24212
24221
|
function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
24213
24222
|
function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
24214
24223
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
|
|
@@ -24585,7 +24594,13 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
24585
24594
|
// that was actually clicked. If we clicked inside the auto-select dropdown, then
|
|
24586
24595
|
// that's not a blur, from the auto-select point of view, so then do nothing.
|
|
24587
24596
|
var el = e.relatedTarget;
|
|
24588
|
-
|
|
24597
|
+
// If this is a blur event in Safari, then relatedTarget is never a dropdown item, but a common parent
|
|
24598
|
+
// of textarea and dropdown container. That means that dropdownRef will not contain its parent and the
|
|
24599
|
+
// autocomplete will be closed before onclick handler can be invoked selecting an item.
|
|
24600
|
+
// It seems that Safari has different implementation determining the relatedTarget node than Chrome and Firefox.
|
|
24601
|
+
// Therefore, if focused away in Safari, the dropdown will be kept rendered until pressing Esc or selecting and item from it.
|
|
24602
|
+
var focusedAwayInSafari = isSafari() && e.type === 'blur';
|
|
24603
|
+
if (_this.dropdownRef && el instanceof Node && _this.dropdownRef.contains(el) || focusedAwayInSafari) {
|
|
24589
24604
|
return;
|
|
24590
24605
|
}
|
|
24591
24606
|
if (closeOnClickOutside) _this._closeAutocomplete();
|
|
@@ -24717,6 +24732,15 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
24717
24732
|
containerClassName = _this$props8.containerClassName,
|
|
24718
24733
|
containerStyle = _this$props8.containerStyle,
|
|
24719
24734
|
style = _this$props8.style;
|
|
24735
|
+
var _ref = this.props.additionalTextareaProps || {},
|
|
24736
|
+
_onBlur = _ref.onBlur,
|
|
24737
|
+
_onChange = _ref.onChange,
|
|
24738
|
+
_onClick = _ref.onClick,
|
|
24739
|
+
_onFocus = _ref.onFocus,
|
|
24740
|
+
_onKeyDown = _ref.onKeyDown,
|
|
24741
|
+
_onScroll = _ref.onScroll,
|
|
24742
|
+
_onSelect = _ref.onSelect,
|
|
24743
|
+
restAdditionalTextareaProps = _objectWithoutProperties__default["default"](_ref, _excluded$1);
|
|
24720
24744
|
var maxRows = this.props.maxRows;
|
|
24721
24745
|
var _this$state7 = this.state,
|
|
24722
24746
|
dataLoading = _this$state7.dataLoading,
|
|
@@ -24737,21 +24761,43 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
24737
24761
|
}, this._cleanUpProps(), {
|
|
24738
24762
|
className: clsx('rta__textarea', className),
|
|
24739
24763
|
maxRows: maxRows,
|
|
24740
|
-
onBlur:
|
|
24741
|
-
|
|
24742
|
-
|
|
24743
|
-
|
|
24744
|
-
|
|
24745
|
-
|
|
24746
|
-
|
|
24747
|
-
|
|
24748
|
-
|
|
24749
|
-
|
|
24750
|
-
|
|
24764
|
+
onBlur: function onBlur(e) {
|
|
24765
|
+
_this2._onClickAndBlurHandler(e);
|
|
24766
|
+
_onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
|
|
24767
|
+
},
|
|
24768
|
+
onChange: function onChange(e) {
|
|
24769
|
+
_this2._changeHandler(e);
|
|
24770
|
+
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e);
|
|
24771
|
+
},
|
|
24772
|
+
onClick: function onClick(e) {
|
|
24773
|
+
_this2._onClickAndBlurHandler(e);
|
|
24774
|
+
_onClick === null || _onClick === void 0 ? void 0 : _onClick(e);
|
|
24775
|
+
},
|
|
24776
|
+
onFocus: function onFocus(e) {
|
|
24777
|
+
var _this2$props$onFocus, _this2$props;
|
|
24778
|
+
(_this2$props$onFocus = (_this2$props = _this2.props).onFocus) === null || _this2$props$onFocus === void 0 ? void 0 : _this2$props$onFocus.call(_this2$props, e);
|
|
24779
|
+
_onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
|
|
24780
|
+
},
|
|
24781
|
+
onKeyDown: function onKeyDown(e) {
|
|
24782
|
+
_this2._handleKeyDown(e);
|
|
24783
|
+
_onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e);
|
|
24784
|
+
},
|
|
24785
|
+
onScroll: function onScroll(e) {
|
|
24786
|
+
_this2._onScrollHandler(e);
|
|
24787
|
+
_onScroll === null || _onScroll === void 0 ? void 0 : _onScroll(e);
|
|
24788
|
+
},
|
|
24789
|
+
onSelect: function onSelect(e) {
|
|
24790
|
+
_this2._selectHandler(e);
|
|
24791
|
+
_onSelect === null || _onSelect === void 0 ? void 0 : _onSelect(e);
|
|
24792
|
+
},
|
|
24793
|
+
ref: function ref(_ref2) {
|
|
24794
|
+
var _this2$props2;
|
|
24795
|
+
(_this2$props2 = _this2.props) === null || _this2$props2 === void 0 ? void 0 : _this2$props2.innerRef(_ref2);
|
|
24796
|
+
_this2.textareaRef = _ref2;
|
|
24751
24797
|
},
|
|
24752
24798
|
style: style,
|
|
24753
24799
|
value: value
|
|
24754
|
-
},
|
|
24800
|
+
}, restAdditionalTextareaProps, {
|
|
24755
24801
|
defaultValue: undefined
|
|
24756
24802
|
})));
|
|
24757
24803
|
}
|
|
@@ -30990,9 +31036,9 @@ var messageInputReducer = function (state, action) {
|
|
|
30990
31036
|
* hook for MessageInput state
|
|
30991
31037
|
*/
|
|
30992
31038
|
var useMessageInputState = function (props) {
|
|
30993
|
-
var additionalTextareaProps = props.additionalTextareaProps, closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
|
|
31039
|
+
var additionalTextareaProps = props.additionalTextareaProps, closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, getDefaultValue = props.getDefaultValue, message = props.message;
|
|
30994
31040
|
var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
|
|
30995
|
-
var defaultValue = additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue;
|
|
31041
|
+
var defaultValue = (getDefaultValue === null || getDefaultValue === void 0 ? void 0 : getDefaultValue()) || (additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue);
|
|
30996
31042
|
var initialStateValue = message ||
|
|
30997
31043
|
(Array.isArray(defaultValue)
|
|
30998
31044
|
? { text: defaultValue.join('') }
|
|
@@ -32798,16 +32844,37 @@ var useChannelUpdatedListener = function (setChannels, customHandler, forceUpdat
|
|
|
32798
32844
|
}, [customHandler]);
|
|
32799
32845
|
};
|
|
32800
32846
|
|
|
32847
|
+
/**
|
|
32848
|
+
* prevent from duplicate invocation of channel.watch()
|
|
32849
|
+
* when events 'notification.message_new' and 'notification.added_to_channel' arrive at the same time
|
|
32850
|
+
*/
|
|
32851
|
+
var WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL = {};
|
|
32852
|
+
/**
|
|
32853
|
+
* Calls channel.watch() if it was not already recently called. Waits for watch promise to resolve even if it was invoked previously.
|
|
32854
|
+
* @param client
|
|
32855
|
+
* @param type
|
|
32856
|
+
* @param id
|
|
32857
|
+
*/
|
|
32801
32858
|
var getChannel = function (client, type, id) { return __awaiter(void 0, void 0, void 0, function () {
|
|
32802
|
-
var channel;
|
|
32859
|
+
var channel, queryPromise;
|
|
32803
32860
|
return __generator(this, function (_a) {
|
|
32804
32861
|
switch (_a.label) {
|
|
32805
32862
|
case 0:
|
|
32806
32863
|
channel = client.channel(type, id);
|
|
32807
|
-
|
|
32864
|
+
queryPromise = WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid];
|
|
32865
|
+
if (!queryPromise) return [3 /*break*/, 2];
|
|
32866
|
+
return [4 /*yield*/, queryPromise];
|
|
32808
32867
|
case 1:
|
|
32809
32868
|
_a.sent();
|
|
32810
|
-
return [
|
|
32869
|
+
return [3 /*break*/, 4];
|
|
32870
|
+
case 2:
|
|
32871
|
+
WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid] = channel.watch();
|
|
32872
|
+
return [4 /*yield*/, WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid]];
|
|
32873
|
+
case 3:
|
|
32874
|
+
_a.sent();
|
|
32875
|
+
WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid] = undefined;
|
|
32876
|
+
_a.label = 4;
|
|
32877
|
+
case 4: return [2 /*return*/, channel];
|
|
32811
32878
|
}
|
|
32812
32879
|
});
|
|
32813
32880
|
}); };
|
|
@@ -33709,7 +33776,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
33709
33776
|
*/
|
|
33710
33777
|
var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
|
|
33711
33778
|
|
|
33712
|
-
var version = '10.
|
|
33779
|
+
var version = '10.8.1';
|
|
33713
33780
|
|
|
33714
33781
|
var useChat = function (_a) {
|
|
33715
33782
|
var _b, _c;
|