react-textarea-with-suggest 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/example/package.json
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"react": "^17.0.0",
|
|
7
7
|
"react-dom": "^17.0.0",
|
|
8
|
-
"react-scripts": "5.0.1",
|
|
9
8
|
"react-textarea-with-suggest": "latest"
|
|
10
9
|
},
|
|
11
10
|
"scripts": {
|
|
@@ -35,6 +34,6 @@
|
|
|
35
34
|
},
|
|
36
35
|
"devDependencies": {
|
|
37
36
|
"gh-pages": "^4.0.0",
|
|
38
|
-
"react-
|
|
37
|
+
"react-scripts": "^5.0.1"
|
|
39
38
|
}
|
|
40
39
|
}
|
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
*
|
|
8
8
|
* LICENSE MIT.
|
|
9
9
|
*/
|
|
10
|
-
import React, { HTMLProps, ChangeEvent } from "react";
|
|
10
|
+
import React, { HTMLProps, ChangeEvent, RefObject } from "react";
|
|
11
|
+
import { TextareaAutosizeProps } from "react-textarea-autosize";
|
|
11
12
|
import { CustomSuggestItemRenderer } from "../types";
|
|
12
|
-
interface TextareaSuggestProps<SuggestItemType> extends Partial<Omit<HTMLProps<HTMLTextAreaElement>, "style">> {
|
|
13
|
+
interface TextareaSuggestProps<SuggestItemType> extends Partial<Omit<TextareaAutosizeProps & HTMLProps<HTMLTextAreaElement>, "style">> {
|
|
13
14
|
className?: string;
|
|
14
15
|
autosizable?: boolean;
|
|
15
16
|
searchMarker?: string;
|
|
@@ -21,6 +22,7 @@ interface TextareaSuggestProps<SuggestItemType> extends Partial<Omit<HTMLProps<H
|
|
|
21
22
|
onChange?: (event: ChangeEvent<HTMLTextAreaElement>) => void;
|
|
22
23
|
onSearch: (newValue: string) => void;
|
|
23
24
|
customSuggestItemRenderer?: CustomSuggestItemRenderer<SuggestItemType>;
|
|
25
|
+
forwardedRef?: RefObject<HTMLTextAreaElement>;
|
|
24
26
|
}
|
|
25
|
-
export declare const TextareaWithSuggests: <SuggestItemType extends React.ReactNode>({ autosizable, value, searchMarker, searchRegexp: searchRegexpProp, suggestList, closeSuggestOnFocusOut, cancelSearchOnFocusOut, onSearch, onChange, customSuggestItemRenderer, ...props }: TextareaSuggestProps<SuggestItemType>) => JSX.Element;
|
|
27
|
+
export declare const TextareaWithSuggests: <SuggestItemType extends React.ReactNode>({ autosizable, value, searchMarker, searchRegexp: searchRegexpProp, suggestList, closeSuggestOnFocusOut, cancelSearchOnFocusOut, forwardedRef, onSearch, onChange, customSuggestItemRenderer, ...props }: TextareaSuggestProps<SuggestItemType>) => JSX.Element;
|
|
26
28
|
export {};
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("react-textarea-autosize");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(e),a=n(t),o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(t){var n=e.useRef();return e.useEffect((function(){n.current=t}),[t]),n.current}var c,l=function(e){var t=!1,n=!1;return{nativeEvent:e,currentTarget:e.currentTarget,target:e.target,bubbles:e.bubbles,cancelable:e.cancelable,defaultPrevented:e.defaultPrevented,eventPhase:e.eventPhase,isTrusted:e.isTrusted,preventDefault:function(){t=!0,e.preventDefault()},isDefaultPrevented:function(){return t},stopPropagation:function(){n=!0,e.stopPropagation()},isPropagationStopped:function(){return n},persist:function(){},timeStamp:e.timeStamp,type:e.type}},u=e.forwardRef((function(e,t){return r.default.createElement("textarea",o({},e,{ref:t}))})),s=r.default.memo((function(t){var n=t.isSelected,a=t.item,o=t.className,i=t.customSuggestItemRenderer,c=t.onItemClickHandler,l=e.useRef(!1),u=a,s=["textarea-suggest-item",n?"textarea-suggest-item_selected":"",o?"".concat(o,"__results__item"):"",n&&o?"".concat(o,"__results__item_selected"):""].filter(Boolean).join(" ");return r.default.createElement("div",{className:s,onMouseDown:function(e){if(l.current)return e.preventDefault(),e.stopPropagation(),void(l.current=!1);c(u)()},onTouchStart:function(e){l.current=!0,e.stopPropagation(),c(u)()}},i?i(u,n):r.default.createElement("div",{className:"textarea-suggest-item__info"},u))})),d=function(t){var n=t.textareaRef,a=t.values,o=void 0===a?[]:a,i=t.isHidden,c=t.className,l=t.selectedItemIndex,u=t.customSuggestItemRenderer,d=t.onItemClickHandler,v=e.useMemo((function(){var e,t;return(null===(t=null===(e=null==n?void 0:n.current)||void 0===e?void 0:e.getBoundingClientRect)||void 0===t?void 0:t.call(e))||{}}),[null==n?void 0:n.current]),f=v.width,p=void 0===f?0:f,m=v.left,g=void 0===m?0:m;return!i&&(null==o?void 0:o.length)&&(null==n?void 0:n.current)?r.default.createElement("div",{className:"textarea-suggest__results ".concat(c?"".concat(c,"__results"):""),style:{position:"absolute",width:p,left:g}},o.map((function(e,t){return r.default.createElement(s,{key:t,className:c,item:e,isSelected:t===l,onItemClickHandler:d,customSuggestItemRenderer:u})}))):null};!function(e){e.ArrowUp="ArrowUp",e.ArrowDown="ArrowDown",e.Enter="Enter",e.Escape="Escape"}(c||(c={}));var v=[c.ArrowUp,c.ArrowDown,c.Enter,c.Escape],f=[" ","\n","\r"];exports.default=function(t){var n=t.autosizable,s=void 0!==n&&n,p=t.value,m=void 0===p?"":p,g=t.searchMarker,b=void 0===g?"@":g,w=t.searchRegexp,h=t.suggestList,y=void 0===h?[]:h,k=t.closeSuggestOnFocusOut,x=void 0!==k&&k,O=t.cancelSearchOnFocusOut,E=void 0!==O&&O,S=t.
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("react-textarea-autosize");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(e),a=n(t),o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(t){var n=e.useRef();return e.useEffect((function(){n.current=t}),[t]),n.current}var c,l=function(e){var t=!1,n=!1;return{nativeEvent:e,currentTarget:e.currentTarget,target:e.target,bubbles:e.bubbles,cancelable:e.cancelable,defaultPrevented:e.defaultPrevented,eventPhase:e.eventPhase,isTrusted:e.isTrusted,preventDefault:function(){t=!0,e.preventDefault()},isDefaultPrevented:function(){return t},stopPropagation:function(){n=!0,e.stopPropagation()},isPropagationStopped:function(){return n},persist:function(){},timeStamp:e.timeStamp,type:e.type}},u=e.forwardRef((function(e,t){return r.default.createElement("textarea",o({},e,{ref:t}))})),s=r.default.memo((function(t){var n=t.isSelected,a=t.item,o=t.className,i=t.customSuggestItemRenderer,c=t.onItemClickHandler,l=e.useRef(!1),u=a,s=["textarea-suggest-item",n?"textarea-suggest-item_selected":"",o?"".concat(o,"__results__item"):"",n&&o?"".concat(o,"__results__item_selected"):""].filter(Boolean).join(" ");return r.default.createElement("div",{className:s,onMouseDown:function(e){if(l.current)return e.preventDefault(),e.stopPropagation(),void(l.current=!1);c(u)()},onTouchStart:function(e){l.current=!0,e.stopPropagation(),c(u)()}},i?i(u,n):r.default.createElement("div",{className:"textarea-suggest-item__info"},u))})),d=function(t){var n=t.textareaRef,a=t.values,o=void 0===a?[]:a,i=t.isHidden,c=t.className,l=t.selectedItemIndex,u=t.customSuggestItemRenderer,d=t.onItemClickHandler,v=e.useMemo((function(){var e,t;return(null===(t=null===(e=null==n?void 0:n.current)||void 0===e?void 0:e.getBoundingClientRect)||void 0===t?void 0:t.call(e))||{}}),[null==n?void 0:n.current]),f=v.width,p=void 0===f?0:f,m=v.left,g=void 0===m?0:m;return!i&&(null==o?void 0:o.length)&&(null==n?void 0:n.current)?r.default.createElement("div",{className:"textarea-suggest__results ".concat(c?"".concat(c,"__results"):""),style:{position:"absolute",width:p,left:g}},o.map((function(e,t){return r.default.createElement(s,{key:t,className:c,item:e,isSelected:t===l,onItemClickHandler:d,customSuggestItemRenderer:u})}))):null};!function(e){e.ArrowUp="ArrowUp",e.ArrowDown="ArrowDown",e.Enter="Enter",e.Escape="Escape"}(c||(c={}));var v=[c.ArrowUp,c.ArrowDown,c.Enter,c.Escape],f=[" ","\n","\r"];exports.default=function(t){var n=t.autosizable,s=void 0!==n&&n,p=t.value,m=void 0===p?"":p,g=t.searchMarker,b=void 0===g?"@":g,w=t.searchRegexp,h=t.suggestList,y=void 0===h?[]:h,k=t.closeSuggestOnFocusOut,x=void 0!==k&&k,O=t.cancelSearchOnFocusOut,E=void 0!==O&&O,S=t.forwardedRef,P=void 0===S?void 0:S,_=t.onSearch,I=t.onChange,R=t.customSuggestItemRenderer,j=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}(t,["autosizable","value","searchMarker","searchRegexp","suggestList","closeSuggestOnFocusOut","cancelSearchOnFocusOut","forwardedRef","onSearch","onChange","customSuggestItemRenderer"]),D=e.useState(m),z=D[0],C=D[1],T=e.useState(null==m?void 0:m.includes(b)),A=T[0],M=T[1],N=e.useState(!0),q=N[0],F=N[1],H=e.useState(void 0),B=H[0],U=H[1],K=i(z),L=i(m),G=P||e.useRef(null),J=s?a.default:u,Q=e.useMemo((function(){return w?new RegExp(w):new RegExp("".concat(b,"([a-z0-9-_.]+[a-z0-9])"),"gim")}),[w]);e.useEffect((function(){if(b.length>1)throw new TypeError("Max length of searchMarker is 1 symbol. Please change your searchMarker to char")}),[]),e.useEffect((function(){m&&K!==m&&L!==m&&(C(m),Y(void 0,m))}),[z,m,K,L]);var V=e.useCallback((function(e){var t,n=e.code,r=A&&!q&&y.length;if(null===(t=j.onKeyDown)||void 0===t||t.call(j,e),r&&v.includes(n))switch(e.stopPropagation(),e.nativeEvent.stopImmediatePropagation(),n){case c.ArrowUp:return e.preventDefault(),U((function(e){return void 0===e||0===e?y.length-1:e-1}));case c.ArrowDown:return e.preventDefault(),U((function(e){return void 0===e||e===y.length-1?0:e+1}));case c.Enter:return void(void 0!==B&&(e.preventDefault(),Z(y[B])()));case c.Escape:M(!1),U(void 0)}}),[j.onKeyDown,B,y,A,q]),W=e.useCallback((function(e){var t;x&&F(!0),E&&M(!1),null===(t=j.onBlur)||void 0===t||t.call(j,e)}),[x,E,j.onBlur]),X=e.useCallback((function(e){var t;q&&F(!1),null===(t=j.onFocus)||void 0===t||t.call(j,e)}),[x,E,j.onFocus]),Y=function(e,t){var n,r,a;void 0===t&&(t="");var i=e?void 0===(null===(n=e.currentTarget)||void 0===n?void 0:n.value)?z:(null===(r=e.currentTarget)||void 0===r?void 0:r.value)||"":t,c=!!e&&(void 0===e.isTrusted||e.isTrusted),u=null===(a=G.current)||void 0===a?void 0:a.selectionEnd,s=u?i.slice(u-1,u):i.slice(-1);if(C(i),s===b&&(t&&F(!1),M(!0)),i.includes(b)&&!f.includes(s)||!A||M(!1),s!==b&&A){var d=i.slice(0,u),v=d.slice(d.lastIndexOf(b)).match(Q),p=v?v[0].slice(1):s;_(p)}if(!e&&G.current&&(G.current.value=i),e&&c)return null==I?void 0:I(e);if(e&&!c)return null==I?void 0:I(o(o({},e),{currentTarget:G.current,target:G.current}));var m=function(e,t){var n=new Event(t||"change",{bubbles:!0});return Object.defineProperty(n,"target",{writable:!1,value:e}),l(n)}(G.current);return null==I?void 0:I(m)},Z=e.useCallback((function(e){return function(){var t,n,r=null===(t=G.current)||void 0===t?void 0:t.selectionEnd,a=z.slice(0,r).lastIndexOf(b),o=z.slice(a);if(-1!==a){var i=(o.includes(" ")?o.indexOf(" "):z.length)+a;o.lastIndexOf(b)>0&&(i=o.lastIndexOf(b)+a),(!i||i<a)&&(i=z.length);var c=z.slice(0,a||0)+z.slice(a).replace(z.slice(a,i),"".concat(b).concat(e," "));if(function(){if("undefined"==typeof navigator||"undefined"==typeof window)return!1;var e,t=!1;return e=navigator.userAgent||navigator.vendor||"opera"in window&&window.opera,(/(android|bb\d+|meego).+mobile|tablet|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/gi.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))&&(t=!0),t}()){var l=c.slice(a).indexOf(" ")+a+1;null===(n=G.current)||void 0===n||n.setSelectionRange(l,l)}G.current&&(!function(e,t){var n,r,a=null===(n=Object.getOwnPropertyDescriptor(e,"value"))||void 0===n?void 0:n.set,o=Object.getPrototypeOf(e),i=null===(r=Object.getOwnPropertyDescriptor(o,"value"))||void 0===r?void 0:r.set;a&&a!==i?null==i||i.call(e,t):null==a||a.call(e,t),e.dispatchEvent(new Event("input",{bubbles:!0}))}(G.current,c),setTimeout((function(){var e;return null===(e=G.current)||void 0===e?void 0:e.focus()}))),U(void 0),M(!1),C(c)}}}),[G,z]);return r.default.createElement("div",{className:"textarea-suggest"},r.default.createElement(J,o({},j,{onKeyDown:V,onBlur:W,onFocus:X,ref:G,onChange:Y,value:z||m})),r.default.createElement(d,{className:j.className,textareaRef:G,values:y,selectedItemIndex:B,isHidden:q||!A,customSuggestItemRenderer:R,onItemClickHandler:Z}))};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-textarea-with-suggest",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Textarea with suggest for React app",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -13,11 +13,15 @@
|
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
15
|
"prettier": "prettier --write .",
|
|
16
|
+
"prettier:check": "prettier --check .",
|
|
16
17
|
"build:debug": "npm install && npm run build && rm -rf node_modules",
|
|
17
18
|
"build": "rollup -c",
|
|
18
19
|
"start": "rollup -c -w",
|
|
19
20
|
"deploy:demo": "cd ./example && rm -rf node_modules && rm package-lock.json && npm i && npm run deploy && cd ../",
|
|
20
|
-
"test": "jest --coverage --"
|
|
21
|
+
"test": "jest --coverage --",
|
|
22
|
+
"pre-commit": "npm run prettier:check",
|
|
23
|
+
"pre-push": "npm run test",
|
|
24
|
+
"prepare": "husky install"
|
|
21
25
|
},
|
|
22
26
|
"license": "MIT",
|
|
23
27
|
"eslintConfig": {
|
|
@@ -80,15 +84,12 @@
|
|
|
80
84
|
"@types/react": "^18.0.26",
|
|
81
85
|
"babel-loader": "^8.0.6",
|
|
82
86
|
"css-loader": "^6.7.3",
|
|
87
|
+
"husky": "^8.0.0",
|
|
83
88
|
"jest": "^29.3.1",
|
|
84
89
|
"jest-environment-jsdom": "^29.3.1",
|
|
85
90
|
"prettier": "2.7.1",
|
|
86
91
|
"rollup": "^2.79.1",
|
|
87
92
|
"rollup-plugin-css-only": "^4.3.0",
|
|
88
|
-
"typescript": "^4.9.4"
|
|
89
|
-
"webpack": "^5.75.0",
|
|
90
|
-
"webpack-cli": "^5.0.1",
|
|
91
|
-
"webpack-dev-server": "^4.11.1",
|
|
92
|
-
"webpack-merge": "^4.2.1"
|
|
93
|
+
"typescript": "^4.9.4"
|
|
93
94
|
}
|
|
94
95
|
}
|