@datarobot/design-system 28.4.0 → 28.6.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.
Files changed (40) hide show
  1. package/cjs/chat/chat-message-body.js +9 -4
  2. package/cjs/chat/hocs.d.ts +1 -1
  3. package/cjs/chat/hocs.js +21 -22
  4. package/cjs/chat/index.d.ts +2 -0
  5. package/cjs/chat/index.js +14 -0
  6. package/cjs/checkbox/checkbox.js +5 -3
  7. package/cjs/text-editor/inline-text-editor.d.ts +3 -1
  8. package/cjs/text-editor/inline-text-editor.js +6 -2
  9. package/cjs/text-editor/text-editor-constants.d.ts +0 -2
  10. package/cjs/text-editor/text-editor-constants.js +0 -8
  11. package/cjs/text-editor/text-editor-content.d.ts +2 -1
  12. package/cjs/text-editor/text-editor-content.js +22 -2
  13. package/cjs/text-editor/text-editor-header.js +2 -9
  14. package/cjs/text-editor/text-editor-helpers.d.ts +1 -0
  15. package/cjs/text-editor/text-editor-helpers.js +22 -17
  16. package/cjs/text-editor/text-editor.d.ts +5 -1
  17. package/cjs/text-editor/text-editor.js +31 -6
  18. package/esm/chat/chat-message-body.js +9 -4
  19. package/esm/chat/hocs.d.ts +1 -1
  20. package/esm/chat/hocs.js +21 -22
  21. package/esm/chat/index.d.ts +2 -0
  22. package/esm/chat/index.js +2 -0
  23. package/esm/checkbox/checkbox.js +5 -3
  24. package/esm/text-editor/inline-text-editor.d.ts +3 -1
  25. package/esm/text-editor/inline-text-editor.js +6 -2
  26. package/esm/text-editor/text-editor-constants.d.ts +0 -2
  27. package/esm/text-editor/text-editor-constants.js +0 -6
  28. package/esm/text-editor/text-editor-content.d.ts +2 -1
  29. package/esm/text-editor/text-editor-content.js +22 -2
  30. package/esm/text-editor/text-editor-header.js +3 -10
  31. package/esm/text-editor/text-editor-helpers.d.ts +1 -0
  32. package/esm/text-editor/text-editor-helpers.js +22 -18
  33. package/esm/text-editor/text-editor.d.ts +5 -1
  34. package/esm/text-editor/text-editor.js +33 -8
  35. package/js/bundle/bundle.js +182 -130
  36. package/js/bundle/bundle.min.js +1 -1
  37. package/js/bundle/index.d.ts +22 -5
  38. package/package.json +1 -1
  39. package/styles/index.css +78 -20
  40. package/styles/index.min.css +1 -1
@@ -44136,15 +44136,20 @@ function ChatMessageBodyBase(_ref) {
44136
44136
  onBlur: onBlur,
44137
44137
  "aria-label": readOnly ? undefined : textBoxAriaLabel,
44138
44138
  onDOMBeforeInput: function onDOMBeforeInput(event) {
44139
- var _event$data$length, _event$data;
44140
44139
  // we have logic to prevent entering text longer than maxLength in hocs.ts
44141
44140
  // but there we prevent it only from updating slate inner state, html input still
44142
44141
  // adds entered text to the DOM input field causing buggy behavior: https://datarobot.atlassian.net/browse/TESTLIO-2963
44143
44142
  // preventing default from the onDOMBeforeInput won't add new character to the DOM input field.
44144
- // we still won't to leave logic in hocs.ts as a fallback + it also covers copy+paste logic which doesn't trigger onDOMBeforeInput
44145
- var existingMentionsCount = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.getMentionsCount)(editor.children);
44146
- if (slate__WEBPACK_IMPORTED_MODULE_2__.Editor.string(editor, []).length + existingMentionsCount + ((_event$data$length = event === null || event === void 0 || (_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.length) !== null && _event$data$length !== void 0 ? _event$data$length : 0) > maxLength) {
44147
- event.preventDefault();
44143
+ // we still want to leave logic in hocs.ts because it covers copy+paste case, as for some reason
44144
+ // under certain circumstances onDOMBeforeInput stops being triggering for copy+paste so having there is safer
44145
+
44146
+ // we want to always allow deleting text
44147
+ if (!event.inputType.startsWith('delete')) {
44148
+ var _event$data$length, _event$data;
44149
+ var existingMentionsCount = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.getMentionsCount)(editor.children);
44150
+ if (!!event.data && slate__WEBPACK_IMPORTED_MODULE_2__.Editor.string(editor, []).length + existingMentionsCount + ((_event$data$length = event === null || event === void 0 || (_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.length) !== null && _event$data$length !== void 0 ? _event$data$length : 0) > maxLength) {
44151
+ event.preventDefault();
44152
+ }
44148
44153
  }
44149
44154
  }
44150
44155
  })), hasMentionsSupport && isFocused && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dropdown__WEBPACK_IMPORTED_MODULE_5__.PopperDropdownWrapper, {
@@ -44562,32 +44567,32 @@ var MENTION_SEARCH_FIELDS = [MENTION_SEARCH_FIELD];
44562
44567
 
44563
44568
  var withMaxLength = function withMaxLength(maxLength) {
44564
44569
  return function Plugin(editor) {
44565
- var insertText = editor.insertText,
44566
- insertData = editor.insertData;
44567
-
44568
- // we are preventing inserting text if it exceeds maxLength in onDOMBeforeInput event handler in Editor component
44569
- // but I'd leave it here as well for safety in case onDOMBeforeInput stops working for some reason + we still need
44570
- // insertData to handle copy+paste logic which doesn't trigger onDOMBeforeInput
44571
- editor.insertText = function (text) {
44572
- var existingMentionsCount = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getMentionsCount)(editor.children);
44573
- if (slate__WEBPACK_IMPORTED_MODULE_0__.Editor.string(editor, []).length + existingMentionsCount < maxLength) {
44574
- insertText(text);
44575
- }
44576
- };
44577
- editor.insertData = function (data) {
44578
- var existingMentionsCount = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getMentionsCount)(editor.children);
44579
- var text = data.getData('text/plain');
44580
- var html = data.getData('text/html');
44581
- var parsedHtml = new DOMParser().parseFromString(html, 'text/html');
44582
- var mentionNodes = parsedHtml.querySelectorAll('.mention');
44583
- var mentionsText = Array.from(mentionNodes).map(function (node) {
44584
- return node.innerText;
44585
- }).join('');
44586
- var itemsLengthToBeInserted = mentionNodes.length ? text.length - mentionsText.length : text.length;
44587
- if (slate__WEBPACK_IMPORTED_MODULE_0__.Editor.string(editor, []).length + itemsLengthToBeInserted + existingMentionsCount <= maxLength) {
44588
- insertData(data);
44589
- }
44590
- };
44570
+ var insertData = editor.insertData;
44571
+
44572
+ // usual text insertion prevention is handled in onDOMBeforeInput event on the Editable component
44573
+ // this case prevents copy-paste of text that would exceed the maxLength
44574
+ // copy-paste could have been also handled in onDOMBeforeInput, but for
44575
+ // some reason sometimes Slate stops triggering onDOMBeforeInput for copy-paste ¯\_(ツ)_/¯
44576
+ if (maxLength) {
44577
+ editor.insertData = function (data) {
44578
+ var _data$getData;
44579
+ var existingMentionsCount = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getMentionsCount)(editor.children);
44580
+ // other methods for inserting text does not take into account new lines, so when copy-pasting
44581
+ // we should also remove them, otherwise there is a bug when entered text cannot be cut and pasted
44582
+ // because on paste text length is considered longer due to \n characters
44583
+ var text = (_data$getData = data.getData('text/plain')) === null || _data$getData === void 0 ? void 0 : _data$getData.replace(/\n/g, '');
44584
+ var html = data.getData('text/html');
44585
+ var parsedHtml = new DOMParser().parseFromString(html, 'text/html');
44586
+ var mentionNodes = parsedHtml.querySelectorAll('.mention');
44587
+ var mentionsText = Array.from(mentionNodes).map(function (node) {
44588
+ return node.innerText;
44589
+ }).join('');
44590
+ var itemsLengthToBeInserted = mentionNodes.length ? text.length - mentionsText.length : text.length;
44591
+ if (slate__WEBPACK_IMPORTED_MODULE_0__.Editor.string(editor, []).length + itemsLengthToBeInserted + existingMentionsCount <= maxLength) {
44592
+ insertData(data);
44593
+ }
44594
+ };
44595
+ }
44591
44596
  return editor;
44592
44597
  };
44593
44598
  };
@@ -44617,15 +44622,21 @@ var withMentions = function withMentions(editor) {
44617
44622
 
44618
44623
  "use strict";
44619
44624
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
44625
+ /* harmony export */ CharactersCounter: () => (/* reexport safe */ _characters_counter__WEBPACK_IMPORTED_MODULE_1__.CharactersCounter),
44620
44626
  /* harmony export */ Chat: () => (/* reexport safe */ _chat__WEBPACK_IMPORTED_MODULE_0__.Chat),
44621
- /* harmony export */ DEFAULT_VALUE: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_VALUE),
44622
- /* harmony export */ NEW_ITEM_KEY: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_2__.NEW_ITEM_KEY),
44623
- /* harmony export */ isMentionElement: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_1__.isMentionElement),
44624
- /* harmony export */ resetNodes: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_1__.resetNodes)
44627
+ /* harmony export */ DEFAULT_VALUE: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_VALUE),
44628
+ /* harmony export */ NEW_ITEM_KEY: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_4__.NEW_ITEM_KEY),
44629
+ /* harmony export */ isMentionElement: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_2__.isMentionElement),
44630
+ /* harmony export */ resetNodes: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_2__.resetNodes),
44631
+ /* harmony export */ withMaxLength: () => (/* reexport safe */ _hocs__WEBPACK_IMPORTED_MODULE_3__.withMaxLength)
44625
44632
  /* harmony export */ });
44626
44633
  /* harmony import */ var _chat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chat */ "./src/components/chat/chat.tsx");
44627
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./src/components/chat/utils.ts");
44628
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/components/chat/constants.ts");
44634
+ /* harmony import */ var _characters_counter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./characters-counter */ "./src/components/chat/characters-counter.tsx");
44635
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/components/chat/utils.ts");
44636
+ /* harmony import */ var _hocs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hocs */ "./src/components/chat/hocs.ts");
44637
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ "./src/components/chat/constants.ts");
44638
+
44639
+
44629
44640
 
44630
44641
 
44631
44642
 
@@ -44956,7 +44967,9 @@ var Checkbox = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(fu
44956
44967
  }));
44957
44968
  if (!hasParentTooltip) {
44958
44969
  if (isTruncatable) {
44959
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, checkboxInput, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_truncate_with_tooltip__WEBPACK_IMPORTED_MODULE_3__.TruncateWithTooltip, {
44970
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
44971
+ className: "checkbox-wrapper"
44972
+ }, checkboxInput, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_truncate_with_tooltip__WEBPACK_IMPORTED_MODULE_3__.TruncateWithTooltip, {
44960
44973
  tooltipDocsLink: tooltipDocsLink,
44961
44974
  tooltipText: getDefaultTooltipText(),
44962
44975
  tooltipPlacement: tooltipPlacement
@@ -44967,12 +44980,14 @@ var Checkbox = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(fu
44967
44980
  placement: _tooltip__WEBPACK_IMPORTED_MODULE_4__.TOOLTIP_PLACEMENT_TYPES.TOP || tooltipPlacement,
44968
44981
  content: tooltipText
44969
44982
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
44970
- className: "checkbox-tooltip-container",
44983
+ className: "checkbox-wrapper checkbox-tooltip-container",
44971
44984
  "test-id": "checkbox-tooltip-container"
44972
44985
  }, checkboxInput, label));
44973
44986
  }
44974
44987
  }
44975
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, checkboxInput, label);
44988
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
44989
+ className: "checkbox-wrapper"
44990
+ }, checkboxInput, label);
44976
44991
  });
44977
44992
  Checkbox.displayName = 'Checkbox';
44978
44993
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Checkbox);
@@ -63770,6 +63785,7 @@ __webpack_require__.r(__webpack_exports__);
63770
63785
  /* harmony export */ CardHeader: () => (/* reexport safe */ _custom_card__WEBPACK_IMPORTED_MODULE_22__.CardHeader),
63771
63786
  /* harmony export */ CardLabel: () => (/* reexport safe */ _custom_card__WEBPACK_IMPORTED_MODULE_22__.CardLabel),
63772
63787
  /* harmony export */ CardTitle: () => (/* reexport safe */ _custom_card__WEBPACK_IMPORTED_MODULE_22__.CardTitle),
63788
+ /* harmony export */ CharactersCounter: () => (/* reexport safe */ _chat__WEBPACK_IMPORTED_MODULE_13__.CharactersCounter),
63773
63789
  /* harmony export */ ChartLegend: () => (/* reexport safe */ _chart_legend__WEBPACK_IMPORTED_MODULE_12__.ChartLegend),
63774
63790
  /* harmony export */ ChartLegendItem: () => (/* reexport safe */ _chart_legend__WEBPACK_IMPORTED_MODULE_12__.ChartLegendItem),
63775
63791
  /* harmony export */ ChartLegendItemGlyph: () => (/* reexport safe */ _chart_legend__WEBPACK_IMPORTED_MODULE_12__.ChartLegendItemGlyph),
@@ -64095,6 +64111,7 @@ __webpack_require__.r(__webpack_exports__);
64095
64111
  /* harmony export */ useTreeNavigation: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_45__.useTreeNavigation),
64096
64112
  /* harmony export */ useTreeNodeNavigation: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_45__.useTreeNodeNavigation),
64097
64113
  /* harmony export */ withExpandableContent: () => (/* reexport safe */ _table__WEBPACK_IMPORTED_MODULE_86__.withExpandableContent),
64114
+ /* harmony export */ withMaxLength: () => (/* reexport safe */ _chat__WEBPACK_IMPORTED_MODULE_13__.withMaxLength),
64098
64115
  /* harmony export */ withTableCellCheckboxes: () => (/* reexport safe */ _table__WEBPACK_IMPORTED_MODULE_86__.withTableCellCheckboxes),
64099
64116
  /* harmony export */ withTableDataSorting: () => (/* reexport safe */ _table__WEBPACK_IMPORTED_MODULE_86__.withTableDataSorting),
64100
64117
  /* harmony export */ withTableRowSelection: () => (/* reexport safe */ _table__WEBPACK_IMPORTED_MODULE_86__.withTableRowSelection),
@@ -79649,7 +79666,9 @@ function InlineTextEditor(_ref) {
79649
79666
  onSave = _ref.onSave,
79650
79667
  _ref$autoFocus = _ref.autoFocus,
79651
79668
  autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus,
79652
- deleteEditorContentButtonAriaLabel = _ref.deleteEditorContentButtonAriaLabel;
79669
+ deleteEditorContentButtonAriaLabel = _ref.deleteEditorContentButtonAriaLabel,
79670
+ maxLength = _ref.maxLength,
79671
+ getCharactersCounterString = _ref.getCharactersCounterString;
79653
79672
  var _useTranslation = (0,_hooks_use_translation__WEBPACK_IMPORTED_MODULE_6__.useTranslation)(),
79654
79673
  t = _useTranslation.t;
79655
79674
  var initialTitle = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
@@ -79727,7 +79746,9 @@ function InlineTextEditor(_ref) {
79727
79746
  height: height,
79728
79747
  testId: "inline-text-editor-edit",
79729
79748
  contentAriaLabel: ariaLabel || titleValue,
79730
- deleteEditorContentButtonAriaLabel: deleteEditorContentButtonAriaLabel !== null && deleteEditorContentButtonAriaLabel !== void 0 ? deleteEditorContentButtonAriaLabel : t('Delete Editor Content')
79749
+ deleteEditorContentButtonAriaLabel: deleteEditorContentButtonAriaLabel !== null && deleteEditorContentButtonAriaLabel !== void 0 ? deleteEditorContentButtonAriaLabel : t('Delete Editor Content'),
79750
+ maxLength: maxLength,
79751
+ getCharactersCounterString: getCharactersCounterString
79731
79752
  }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", _extends({
79732
79753
  "test-id": "inline-text-editor-view-container",
79733
79754
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('inline-text-editor-view-container', isFlex && 'is-flex')
@@ -79757,9 +79778,7 @@ function InlineTextEditor(_ref) {
79757
79778
  /* harmony export */ TEXT_EDITOR_DEFAULT_TOOLS: () => (/* binding */ TEXT_EDITOR_DEFAULT_TOOLS),
79758
79779
  /* harmony export */ TEXT_EDITOR_DEFAULT_VALUE: () => (/* binding */ TEXT_EDITOR_DEFAULT_VALUE),
79759
79780
  /* harmony export */ TEXT_EDITOR_TOOLS: () => (/* binding */ TEXT_EDITOR_TOOLS),
79760
- /* harmony export */ TOOLBAR_POSITION: () => (/* binding */ TOOLBAR_POSITION),
79761
- /* harmony export */ instanceOfContent: () => (/* binding */ instanceOfContent),
79762
- /* harmony export */ instanceOfContentChild: () => (/* binding */ instanceOfContentChild)
79781
+ /* harmony export */ TOOLBAR_POSITION: () => (/* binding */ TOOLBAR_POSITION)
79763
79782
  /* harmony export */ });
79764
79783
  var MARK_TYPES = {
79765
79784
  BOLD: 'bold',
@@ -79794,12 +79813,6 @@ var TEXT_EDITOR_TOOLS = {
79794
79813
  CODE: 'code',
79795
79814
  CLEAR_FORMATTING: 'clear-formatting'
79796
79815
  };
79797
- function instanceOfContentChild(obj) {
79798
- return 'text' in obj;
79799
- }
79800
- function instanceOfContent(obj) {
79801
- return !('text' in obj);
79802
- }
79803
79816
  var TEXT_EDITOR_DEFAULT_VALUE = [{
79804
79817
  type: BLOCK_TYPES.REGULAR_TEXT,
79805
79818
  children: [{
@@ -79842,12 +79855,14 @@ var HEADER_TITLE_MAX_LENGTH = 50;
79842
79855
  /* unused harmony export Placeholder */
79843
79856
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
79844
79857
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
79845
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
79846
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
79847
- /* harmony import */ var _text_editor_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./text-editor-context */ "./src/components/text-editor/text-editor-context.ts");
79848
- /* harmony import */ var _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./text-editor-constants */ "./src/components/text-editor/text-editor-constants.ts");
79849
- /* harmony import */ var _text_editor_content_less__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./text-editor-content.less */ "./src/components/text-editor/text-editor-content.less");
79850
- /* harmony import */ var _text_editor_content_less__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_text_editor_content_less__WEBPACK_IMPORTED_MODULE_4__);
79858
+ /* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! slate */ "slate");
79859
+ /* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(slate__WEBPACK_IMPORTED_MODULE_1__);
79860
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
79861
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
79862
+ /* harmony import */ var _text_editor_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./text-editor-context */ "./src/components/text-editor/text-editor-context.ts");
79863
+ /* harmony import */ var _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./text-editor-constants */ "./src/components/text-editor/text-editor-constants.ts");
79864
+ /* harmony import */ var _text_editor_content_less__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text-editor-content.less */ "./src/components/text-editor/text-editor-content.less");
79865
+ /* harmony import */ var _text_editor_content_less__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_text_editor_content_less__WEBPACK_IMPORTED_MODULE_5__);
79851
79866
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
79852
79867
  var _excluded = ["opacity"];
79853
79868
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -79863,39 +79878,40 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
79863
79878
 
79864
79879
 
79865
79880
 
79881
+
79866
79882
  var Element = function Element(_ref) {
79867
79883
  var attributes = _ref.attributes,
79868
79884
  children = _ref.children,
79869
79885
  element = _ref.element;
79870
79886
  switch (element.type) {
79871
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.HEADLINE_LARGE:
79887
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.HEADLINE_LARGE:
79872
79888
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", _extends({}, attributes, {
79873
79889
  className: "large-text-header",
79874
79890
  "test-id": "large-text"
79875
79891
  }), children);
79876
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.HEADLINE_MEDIUM:
79892
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.HEADLINE_MEDIUM:
79877
79893
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", _extends({}, attributes, {
79878
79894
  className: "medium-text-header",
79879
79895
  "test-id": "medium-text"
79880
79896
  }), children);
79881
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.HEADLINE_SMALL:
79897
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.HEADLINE_SMALL:
79882
79898
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", _extends({}, attributes, {
79883
79899
  className: "small-text-header",
79884
79900
  "test-id": "small-text"
79885
79901
  }), children);
79886
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.BULLETED_LIST:
79902
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.BULLETED_LIST:
79887
79903
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", _extends({}, attributes, {
79888
79904
  className: "list",
79889
79905
  "test-id": "bulleted-list"
79890
79906
  }), children);
79891
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.NUMBERED_LIST:
79907
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.NUMBERED_LIST:
79892
79908
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ol", _extends({}, attributes, {
79893
79909
  className: "list",
79894
79910
  "test-id": "numbered-list"
79895
79911
  }), children);
79896
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.LIST_ITEM:
79912
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.LIST_ITEM:
79897
79913
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", attributes, children);
79898
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.LINK:
79914
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.LINK:
79899
79915
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", _extends({}, attributes, {
79900
79916
  target: "_blank",
79901
79917
  rel: "noreferrer",
@@ -79903,7 +79919,7 @@ var Element = function Element(_ref) {
79903
79919
  href: element.url,
79904
79920
  "test-id": "anchor-link"
79905
79921
  }), children);
79906
- case _text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.BLOCK_TYPES.CODE:
79922
+ case _text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.BLOCK_TYPES.CODE:
79907
79923
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
79908
79924
  className: "code-block",
79909
79925
  "test-id": "code-block"
@@ -79920,25 +79936,25 @@ var Leaf = function Leaf(_ref2) {
79920
79936
  children = _ref2.children,
79921
79937
  leaf = _ref2.leaf;
79922
79938
  var node = children;
79923
- if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.MARK_TYPES.BOLD]) {
79939
+ if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.MARK_TYPES.BOLD]) {
79924
79940
  node = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
79925
79941
  className: "bold",
79926
79942
  "test-id": "bold-text"
79927
79943
  }, node);
79928
79944
  }
79929
- if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.MARK_TYPES.ITALIC]) {
79945
+ if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.MARK_TYPES.ITALIC]) {
79930
79946
  node = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
79931
79947
  className: "italic",
79932
79948
  "test-id": "italic-text"
79933
79949
  }, node);
79934
79950
  }
79935
- if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.MARK_TYPES.UNDERLINE]) {
79951
+ if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.MARK_TYPES.UNDERLINE]) {
79936
79952
  node = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
79937
79953
  className: "underlined",
79938
79954
  "test-id": "underlined-text"
79939
79955
  }, node);
79940
79956
  }
79941
- if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_3__.MARK_TYPES.SUPERSCRIPT]) {
79957
+ if (leaf[_text_editor_constants__WEBPACK_IMPORTED_MODULE_4__.MARK_TYPES.SUPERSCRIPT]) {
79942
79958
  node = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
79943
79959
  className: "superscript",
79944
79960
  "test-id": "superscript-text"
@@ -79981,10 +79997,13 @@ function TextEditorContent(_ref4) {
79981
79997
  _ref4$onBlur = _ref4.onBlur,
79982
79998
  onBlur = _ref4$onBlur === void 0 ? function () {} : _ref4$onBlur,
79983
79999
  _ref4$onFocus = _ref4.onFocus,
79984
- onFocus = _ref4$onFocus === void 0 ? function () {} : _ref4$onFocus;
79985
- var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_text_editor_context__WEBPACK_IMPORTED_MODULE_2__["default"]),
80000
+ onFocus = _ref4$onFocus === void 0 ? function () {} : _ref4$onFocus,
80001
+ maxLength = _ref4.maxLength;
80002
+ var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_text_editor_context__WEBPACK_IMPORTED_MODULE_3__["default"]),
79986
80003
  slateReact = _useContext.slateReact;
79987
- var Editable = slateReact.Editable;
80004
+ var Editable = slateReact.Editable,
80005
+ useSlate = slateReact.useSlate;
80006
+ var editor = useSlate();
79988
80007
  /* eslint-disable-next-line testing-library/render-result-naming-convention */
79989
80008
  var ElementNode = elementRender;
79990
80009
  /* eslint-disable-next-line testing-library/render-result-naming-convention */
@@ -80007,7 +80026,7 @@ function TextEditorContent(_ref4) {
80007
80026
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Placeholder, props);
80008
80027
  }, []);
80009
80028
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
80010
- className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('text-editor-content', {
80029
+ className: classnames__WEBPACK_IMPORTED_MODULE_2___default()('text-editor-content', {
80011
80030
  'is-scrollable': isScrollable
80012
80031
  }),
80013
80032
  "test-id": testId
@@ -80020,7 +80039,23 @@ function TextEditorContent(_ref4) {
80020
80039
  renderElement: renderElement,
80021
80040
  renderLeaf: renderLeaf,
80022
80041
  onBlur: onBlur,
80023
- onFocus: onFocus
80042
+ onFocus: onFocus,
80043
+ onDOMBeforeInput: function onDOMBeforeInput(event) {
80044
+ // NOTE: copy-paste events handled in withMaxLength() plugin because Slate under some
80045
+ // circumstances stops triggering onDOMBeforeInput event for copy-paste ¯\_(ツ)_/¯
80046
+
80047
+ // no need to do any calculations if maxLength is not set or if it's a delete event
80048
+ if (maxLength && !event.inputType.startsWith('delete')) {
80049
+ var currentTextLength = slate__WEBPACK_IMPORTED_MODULE_1__.Editor.string(editor, []).length;
80050
+ var newText = '';
80051
+ if (!!event.data) {
80052
+ newText = event.data;
80053
+ }
80054
+ if (currentTextLength + newText.length > maxLength) {
80055
+ event.preventDefault();
80056
+ }
80057
+ }
80058
+ }
80024
80059
  }, ariaAttrs)));
80025
80060
  }
80026
80061
 
@@ -80076,12 +80111,6 @@ var TextEditorContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default(
80076
80111
  /* harmony import */ var _text_editor_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./text-editor-service */ "./src/components/text-editor/text-editor-service.ts");
80077
80112
  /* harmony import */ var _text_editor_header_less__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./text-editor-header.less */ "./src/components/text-editor/text-editor-header.less");
80078
80113
  /* harmony import */ var _text_editor_header_less__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_text_editor_header_less__WEBPACK_IMPORTED_MODULE_8__);
80079
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
80080
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
80081
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
80082
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
80083
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
80084
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
80085
80114
 
80086
80115
 
80087
80116
 
@@ -80110,10 +80139,6 @@ function TextEditorHeader(_ref) {
80110
80139
  inputAriaLabel = _ref.inputAriaLabel;
80111
80140
  var _useTranslation = (0,_hooks_use_translation__WEBPACK_IMPORTED_MODULE_2__.useTranslation)(),
80112
80141
  t = _useTranslation.t;
80113
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
80114
- _useState2 = _slicedToArray(_useState, 2),
80115
- isDelete = _useState2[0],
80116
- setIsDelete = _useState2[1];
80117
80142
  var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_text_editor_context__WEBPACK_IMPORTED_MODULE_6__["default"]),
80118
80143
  slate = _useContext.slate,
80119
80144
  slateReact = _useContext.slateReact;
@@ -80122,13 +80147,6 @@ function TextEditorHeader(_ref) {
80122
80147
  var editor = slateReact.useSlate();
80123
80148
  var hasReadOnlyTitle = title && !isEditable;
80124
80149
  var hasEditableTitle = isEditable && onChangeTitle;
80125
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
80126
- if (isDelete) {
80127
- onChangeTitle('');
80128
- onDelete();
80129
- setIsDelete(false);
80130
- }
80131
- }, [isDelete]);
80132
80150
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("header", {
80133
80151
  className: "text-editor-header",
80134
80152
  "test-id": "text-editor-header"
@@ -80151,7 +80169,8 @@ function TextEditorHeader(_ref) {
80151
80169
  onClick: function onClick() {
80152
80170
  textEditorService.deleteContent(editor);
80153
80171
  ReactEditor.focus(editor);
80154
- setIsDelete(true);
80172
+ onChangeTitle('');
80173
+ onDelete();
80155
80174
  },
80156
80175
  accentType: _button__WEBPACK_IMPORTED_MODULE_3__.ACCENT_TYPES.ROUND_ICON,
80157
80176
  tooltipText: t('Delete'),
@@ -80174,6 +80193,7 @@ function TextEditorHeader(_ref) {
80174
80193
  "use strict";
80175
80194
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
80176
80195
  /* harmony export */ convertTextToTextEditorValue: () => (/* binding */ convertTextToTextEditorValue),
80196
+ /* harmony export */ getTextEditorValueLength: () => (/* binding */ getTextEditorValueLength),
80177
80197
  /* harmony export */ hasGreaterTextEditorLinesThan: () => (/* binding */ hasGreaterTextEditorLinesThan),
80178
80198
  /* harmony export */ isEmptyTextEditorValue: () => (/* binding */ isEmptyTextEditorValue),
80179
80199
  /* harmony export */ isLongerTextEditorValueThan: () => (/* binding */ isLongerTextEditorValueThan)
@@ -80208,35 +80228,18 @@ function isLongerTextEditorValueThan(value) {
80208
80228
  try {
80209
80229
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
80210
80230
  var record = _step.value;
80211
- if ((0,_text_editor_constants__WEBPACK_IMPORTED_MODULE_1__.instanceOfContentChild)(record) && !!record.text) {
80212
- length += record.text.length;
80213
- }
80214
- if ((0,_text_editor_constants__WEBPACK_IMPORTED_MODULE_1__.instanceOfContent)(record) && !!record.children) {
80215
- var _iterator2 = _createForOfIteratorHelper(record.children),
80216
- _step2;
80217
- try {
80218
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
80219
- var childRecord = _step2.value;
80220
- if (!!childRecord.text) {
80221
- length += childRecord.text.length;
80222
- }
80223
-
80224
- // We already know the result
80225
- if (length > maxLength) {
80226
- break;
80227
- }
80228
- }
80229
- } catch (err) {
80230
- _iterator2.e(err);
80231
- } finally {
80232
- _iterator2.f();
80233
- }
80234
- }
80235
-
80236
- // We already know the result
80231
+ // if we reached maxLength - no need to continue
80237
80232
  if (length > maxLength) {
80238
80233
  break;
80239
80234
  }
80235
+ // if this is leaf node that has text - sum it up
80236
+ if (record.hasOwnProperty('text') && !!record.text) {
80237
+ var _text$length, _text;
80238
+ length += (_text$length = record === null || record === void 0 || (_text = record.text) === null || _text === void 0 ? void 0 : _text.length) !== null && _text$length !== void 0 ? _text$length : 0;
80239
+ } else if (record.hasOwnProperty('children') && !!record.children) {
80240
+ // if this is a node that has children - calculate length of children
80241
+ length += getTextEditorValueLength(record.children);
80242
+ }
80240
80243
  }
80241
80244
  } catch (err) {
80242
80245
  _iterator.e(err);
@@ -80245,6 +80248,29 @@ function isLongerTextEditorValueThan(value) {
80245
80248
  }
80246
80249
  return length > maxLength;
80247
80250
  }
80251
+ function getTextEditorValueLength(value) {
80252
+ var length = 0;
80253
+ var _iterator2 = _createForOfIteratorHelper(value),
80254
+ _step2;
80255
+ try {
80256
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
80257
+ var record = _step2.value;
80258
+ // if this is leaf node that has text - sum it up
80259
+ if (record.hasOwnProperty('text') && !!record.text) {
80260
+ var _text$length2, _text2;
80261
+ length += (_text$length2 = record === null || record === void 0 || (_text2 = record.text) === null || _text2 === void 0 ? void 0 : _text2.length) !== null && _text$length2 !== void 0 ? _text$length2 : 0;
80262
+ } else if (record.hasOwnProperty('children') && !!record.children) {
80263
+ // if this is a node that has children - iterate through them via recursion
80264
+ length += getTextEditorValueLength(record.children);
80265
+ }
80266
+ }
80267
+ } catch (err) {
80268
+ _iterator2.e(err);
80269
+ } finally {
80270
+ _iterator2.f();
80271
+ }
80272
+ return length;
80273
+ }
80248
80274
 
80249
80275
  /**
80250
80276
  * @param {Array} value - the type of value is defined with TextEditorValue
@@ -81450,7 +81476,7 @@ function TextEditorToolbar(_ref) {
81450
81476
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
81451
81477
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
81452
81478
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
81453
- /* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lodash-es/isEqual */ "../../node_modules/lodash-es/isEqual.js");
81479
+ /* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! lodash-es/isEqual */ "../../node_modules/lodash-es/isEqual.js");
81454
81480
  /* harmony import */ var slate_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! slate-history */ "slate-history");
81455
81481
  /* harmony import */ var slate_history__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(slate_history__WEBPACK_IMPORTED_MODULE_2__);
81456
81482
  /* harmony import */ var _form_field__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../form-field */ "./src/components/form-field/index.ts");
@@ -81463,8 +81489,10 @@ function TextEditorToolbar(_ref) {
81463
81489
  /* harmony import */ var _text_editor_loader__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text-editor-loader */ "./src/components/text-editor/text-editor-loader.tsx");
81464
81490
  /* harmony import */ var _text_editor_constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./text-editor-constants */ "./src/components/text-editor/text-editor-constants.ts");
81465
81491
  /* harmony import */ var _text_editor_hooks__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./text-editor-hooks */ "./src/components/text-editor/text-editor-hooks.ts");
81466
- /* harmony import */ var _text_editor_less__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./text-editor.less */ "./src/components/text-editor/text-editor.less");
81467
- /* harmony import */ var _text_editor_less__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_text_editor_less__WEBPACK_IMPORTED_MODULE_13__);
81492
+ /* harmony import */ var _text_editor_helpers__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./text-editor-helpers */ "./src/components/text-editor/text-editor-helpers.ts");
81493
+ /* harmony import */ var _hooks_use_translation__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../hooks/use-translation */ "./src/components/hooks/use-translation/index.ts");
81494
+ /* harmony import */ var _text_editor_less__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./text-editor.less */ "./src/components/text-editor/text-editor.less");
81495
+ /* harmony import */ var _text_editor_less__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_text_editor_less__WEBPACK_IMPORTED_MODULE_15__);
81468
81496
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
81469
81497
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
81470
81498
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -81492,6 +81520,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
81492
81520
 
81493
81521
 
81494
81522
 
81523
+
81524
+
81495
81525
  function TextEditorComponent(_ref) {
81496
81526
  var name = _ref.name,
81497
81527
  type = _ref.type,
@@ -81532,7 +81562,11 @@ function TextEditorComponent(_ref) {
81532
81562
  _onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
81533
81563
  deleteEditorContentButtonAriaLabel = _ref.deleteEditorContentButtonAriaLabel,
81534
81564
  _ref$id = _ref.id,
81535
- id = _ref$id === void 0 ? '' : _ref$id;
81565
+ id = _ref$id === void 0 ? '' : _ref$id,
81566
+ maxLength = _ref.maxLength,
81567
+ getCharactersCounterString = _ref.getCharactersCounterString;
81568
+ var _useTranslation = (0,_hooks_use_translation__WEBPACK_IMPORTED_MODULE_14__.useTranslation)(),
81569
+ t = _useTranslation.t;
81536
81570
  var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_text_editor_context__WEBPACK_IMPORTED_MODULE_6__["default"]),
81537
81571
  slate = _useContext.slate,
81538
81572
  slateReact = _useContext.slateReact;
@@ -81542,13 +81576,21 @@ function TextEditorComponent(_ref) {
81542
81576
  createEditor = slate.createEditor;
81543
81577
  var withReact = slateReact.withReact,
81544
81578
  Slate = slateReact.Slate;
81579
+ var getCharactersCounterStringText = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (count) {
81580
+ if (getCharactersCounterString) {
81581
+ return getCharactersCounterString(count);
81582
+ }
81583
+ return t('{{count}} characters remaining', {
81584
+ count: count
81585
+ });
81586
+ }, [getCharactersCounterString]);
81545
81587
  var editor = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
81546
- return (0,_hooks_with_links__WEBPACK_IMPORTED_MODULE_9__["default"])((0,slate_history__WEBPACK_IMPORTED_MODULE_2__.withHistory)(withReact(createEditor())));
81547
- }, []);
81588
+ return (0,_chat__WEBPACK_IMPORTED_MODULE_4__.withMaxLength)(maxLength)((0,_hooks_with_links__WEBPACK_IMPORTED_MODULE_9__["default"])((0,slate_history__WEBPACK_IMPORTED_MODULE_2__.withHistory)(withReact(createEditor()))));
81589
+ }, [maxLength]);
81548
81590
  var selection = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
81549
81591
  var slateValue = value || initialValue || _text_editor_constants__WEBPACK_IMPORTED_MODULE_11__.TEXT_EDITOR_DEFAULT_VALUE;
81550
81592
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
81551
- if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_14__["default"])(editor.children, slateValue)) {
81593
+ if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_16__["default"])(editor.children, slateValue)) {
81552
81594
  // Update the cached value inside the editor
81553
81595
  (0,_chat__WEBPACK_IMPORTED_MODULE_4__.resetNodes)(editor, slateValue);
81554
81596
  }
@@ -81612,7 +81654,8 @@ function TextEditorComponent(_ref) {
81612
81654
  hasDeleteButton: header.hasDeleteButton,
81613
81655
  onDelete: header.onDelete,
81614
81656
  deleteEditorContentButtonAriaLabel: deleteEditorContentButtonAriaLabel,
81615
- inputAriaLabel: header.inputAriaLabel
81657
+ inputAriaLabel: header.inputAriaLabel,
81658
+ maxLength: header.maxLength
81616
81659
  }), toolbarPosition === _text_editor_constants__WEBPACK_IMPORTED_MODULE_11__.TOOLBAR_POSITION.TOP && toolbarMemo, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_text_editor_content__WEBPACK_IMPORTED_MODULE_8__["default"], {
81617
81660
  placeholder: placeholder,
81618
81661
  readOnly: readOnly,
@@ -81622,8 +81665,13 @@ function TextEditorComponent(_ref) {
81622
81665
  leafRender: leafRender,
81623
81666
  onBlur: saveSelection,
81624
81667
  onFocus: recoverSelection,
81625
- ariaAttrs: ariaAttrs
81626
- }), toolbarPosition === _text_editor_constants__WEBPACK_IMPORTED_MODULE_11__.TOOLBAR_POSITION.BOTTOM && toolbarMemo)), validity && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_form_field__WEBPACK_IMPORTED_MODULE_3__.ValidityMessages, {
81668
+ ariaAttrs: ariaAttrs,
81669
+ maxLength: maxLength
81670
+ }), toolbarPosition === _text_editor_constants__WEBPACK_IMPORTED_MODULE_11__.TOOLBAR_POSITION.BOTTOM && toolbarMemo)), maxLength && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_chat__WEBPACK_IMPORTED_MODULE_4__.CharactersCounter, {
81671
+ currLength: (0,_text_editor_helpers__WEBPACK_IMPORTED_MODULE_13__.getTextEditorValueLength)(slateValue),
81672
+ maxLength: maxLength,
81673
+ getCharactersCounterString: getCharactersCounterStringText
81674
+ }), validity && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_form_field__WEBPACK_IMPORTED_MODULE_3__.ValidityMessages, {
81627
81675
  validity: validity,
81628
81676
  validationTestId: "".concat(name, "-validity"),
81629
81677
  fieldId: id
@@ -81693,7 +81741,9 @@ function TextEditor(_ref2) {
81693
81741
  linkInputLabelText = _ref2.linkInputLabelText,
81694
81742
  deleteEditorContentButtonAriaLabel = _ref2.deleteEditorContentButtonAriaLabel,
81695
81743
  _ref2$id = _ref2.id,
81696
- id = _ref2$id === void 0 ? '' : _ref2$id;
81744
+ id = _ref2$id === void 0 ? '' : _ref2$id,
81745
+ maxLength = _ref2.maxLength,
81746
+ getCharactersCounterString = _ref2.getCharactersCounterString;
81697
81747
  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
81698
81748
  _useState2 = _slicedToArray(_useState, 2),
81699
81749
  isFocused = _useState2[0],
@@ -81757,7 +81807,9 @@ function TextEditor(_ref2) {
81757
81807
  leafRender: leafRender,
81758
81808
  onChange: onChange,
81759
81809
  deleteEditorContentButtonAriaLabel: deleteEditorContentButtonAriaLabel,
81760
- id: id
81810
+ id: id,
81811
+ maxLength: maxLength,
81812
+ getCharactersCounterString: getCharactersCounterString
81761
81813
  })));
81762
81814
  }
81763
81815