@neo4j-ndl/react 4.16.11 → 4.17.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/lib/cjs/ai/file-tag/FileTag.js +7 -1
- package/lib/cjs/ai/file-tag/FileTag.js.map +1 -1
- package/lib/cjs/ai/image-tag/ImageTag.js +7 -1
- package/lib/cjs/ai/image-tag/ImageTag.js.map +1 -1
- package/lib/cjs/ai/prompt/Prompt.js +43 -11
- package/lib/cjs/ai/prompt/Prompt.js.map +1 -1
- package/lib/cjs/ai/prompt/focusTextareaFromPromptWrapper.js +85 -0
- package/lib/cjs/ai/prompt/focusTextareaFromPromptWrapper.js.map +1 -0
- package/lib/cjs/icons/generated/custom/DatabaseCheck.js +30 -0
- package/lib/cjs/icons/generated/custom/DatabaseCheck.js.map +1 -0
- package/lib/cjs/icons/generated/custom/index.js +5 -3
- package/lib/cjs/icons/generated/custom/index.js.map +1 -1
- package/lib/esm/ai/file-tag/FileTag.js +7 -1
- package/lib/esm/ai/file-tag/FileTag.js.map +1 -1
- package/lib/esm/ai/image-tag/ImageTag.js +7 -1
- package/lib/esm/ai/image-tag/ImageTag.js.map +1 -1
- package/lib/esm/ai/prompt/Prompt.js +43 -11
- package/lib/esm/ai/prompt/Prompt.js.map +1 -1
- package/lib/esm/ai/prompt/focusTextareaFromPromptWrapper.js +81 -0
- package/lib/esm/ai/prompt/focusTextareaFromPromptWrapper.js.map +1 -0
- package/lib/esm/icons/generated/custom/DatabaseCheck.js +28 -0
- package/lib/esm/icons/generated/custom/DatabaseCheck.js.map +1 -0
- package/lib/esm/icons/generated/custom/index.js +1 -0
- package/lib/esm/icons/generated/custom/index.js.map +1 -1
- package/lib/types/ai/file-tag/FileTag.d.ts.map +1 -1
- package/lib/types/ai/image-tag/ImageTag.d.ts.map +1 -1
- package/lib/types/ai/prompt/Prompt.d.ts.map +1 -1
- package/lib/types/ai/prompt/focusTextareaFromPromptWrapper.d.ts +28 -0
- package/lib/types/ai/prompt/focusTextareaFromPromptWrapper.d.ts.map +1 -0
- package/lib/types/icons/generated/custom/DatabaseCheck.d.ts +29 -0
- package/lib/types/icons/generated/custom/DatabaseCheck.d.ts.map +1 -0
- package/lib/types/icons/generated/custom/index.d.ts +1 -0
- package/lib/types/icons/generated/custom/index.d.ts.map +1 -1
- package/package.json +6 -3
|
@@ -38,6 +38,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
38
38
|
*/
|
|
39
39
|
const react_1 = require("@neo4j-ndl/react");
|
|
40
40
|
const classnames_1 = __importDefault(require("classnames"));
|
|
41
|
+
const react_2 = require("react");
|
|
41
42
|
const XMarkIconOutline_1 = require("../../icons/generated/heroIcons/XMarkIconOutline");
|
|
42
43
|
/**
|
|
43
44
|
* The component is used to display a file in a chat, or in a prompt.
|
|
@@ -50,9 +51,14 @@ const FileTag = (_a) => {
|
|
|
50
51
|
const Component = isRemovable !== true ? 'button' : 'div';
|
|
51
52
|
const classes = (0, classnames_1.default)('ndl-ai-file-tag', className);
|
|
52
53
|
const file = `${fileName}.${fileType}`;
|
|
54
|
+
const [isRemoveActive, setIsRemoveActive] = (0, react_2.useState)(false);
|
|
53
55
|
return ((0, jsx_runtime_1.jsxs)(react_1.Tooltip, { type: "simple", placement: "bottom", hoverDelay: { close: 0, open: 500 }, children: [(0, jsx_runtime_1.jsx)(react_1.Tooltip.Trigger, { hasButtonWrapper: true, children: (0, jsx_runtime_1.jsxs)(Component, Object.assign({ ref: ref, className: classes, style: style }, (isRemovable ? {} : { onClick }), restProps, htmlAttributes, { children: [(0, jsx_runtime_1.jsx)("div", { className: "ndl-ai-file-tag-leading", children: isLoading ? (0, jsx_runtime_1.jsx)(react_1.LoadingSpinner, { size: "medium" }) : icon }), (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-file-tag-content", children: [(0, jsx_runtime_1.jsx)("span", { className: "ndl-ai-file-tag-content-title", children: fileName }), (0, jsx_runtime_1.jsx)("span", { className: "ndl-ai-file-tag-content-type", children: fileType === null || fileType === void 0 ? void 0 : fileType.toUpperCase() })] }), isRemovable && ((0, jsx_runtime_1.jsx)(react_1.CleanIconButton, { onClick: onClick, description: null, htmlAttributes: {
|
|
54
56
|
'aria-label': `Remove ${file}`,
|
|
55
|
-
|
|
57
|
+
onBlur: () => setIsRemoveActive(false),
|
|
58
|
+
onFocus: () => setIsRemoveActive(true),
|
|
59
|
+
onMouseEnter: () => setIsRemoveActive(true),
|
|
60
|
+
onMouseLeave: () => setIsRemoveActive(false),
|
|
61
|
+
}, size: "small", className: "ndl-ai-file-tag-remove", children: (0, jsx_runtime_1.jsx)(XMarkIconOutline_1.XMarkIconOutline, {}) }))] })) }), (0, jsx_runtime_1.jsx)(react_1.Tooltip.Content, { children: isRemoveActive ? `Remove ${file}` : file })] }));
|
|
56
62
|
};
|
|
57
63
|
exports.FileTag = FileTag;
|
|
58
64
|
//# sourceMappingURL=FileTag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileTag.js","sourceRoot":"","sources":["../../../../src/ai/file-tag/FileTag.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4CAA4E;AAC5E,4DAAoC;
|
|
1
|
+
{"version":3,"file":"FileTag.js","sourceRoot":"","sources":["../../../../src/ai/file-tag/FileTag.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4CAA4E;AAC5E,4DAAoC;AACpC,iCAAiC;AAGjC,uFAAoF;AAiBpF;;;;;GAKG;AACH,MAAM,OAAO,GAAG,CAAC,EAY8B,EAAE,EAAE;QAZlC,EACf,OAAO,EACP,WAAW,GAAG,KAAK,EACnB,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,KAAK,EACL,cAAc,EACd,GAAG,EACH,SAAS,GAAG,KAAK,OAE4B,EAD1C,SAAS,cAXG,sHAYhB,CADa;IAEZ,MAAM,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACvC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5D,OAAO,CACL,wBAAC,eAAO,IACN,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,QAAQ,EAClB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,aAEnC,uBAAC,eAAO,CAAC,OAAO,IAAC,gBAAgB,kBAC/B,wBAAC,SAAS,kBACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,IACR,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAEhC,SAAS,EACT,cAAc,eAElB,gCAAK,SAAS,EAAC,yBAAyB,YACrC,SAAS,CAAC,CAAC,CAAC,uBAAC,sBAAc,IAAC,IAAI,EAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,GAChD,EACN,iCAAK,SAAS,EAAC,yBAAyB,aACtC,iCAAM,SAAS,EAAC,+BAA+B,YAAE,QAAQ,GAAQ,EACjE,iCAAM,SAAS,EAAC,8BAA8B,YAC3C,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAE,GACnB,IACH,EACL,WAAW,IAAI,CACd,uBAAC,uBAAe,IACd,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE;gCACd,YAAY,EAAE,UAAU,IAAI,EAAE;gCAC9B,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;gCACtC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;gCACtC,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;gCAC3C,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;6BAC7C,EACD,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,wBAAwB,YAElC,uBAAC,mCAAgB,KAAG,GACJ,CACnB,KACS,GACI,EAClB,uBAAC,eAAO,CAAC,OAAO,cACb,cAAc,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GACzB,IACV,CACX,CAAC;AACJ,CAAC,CAAC;AAEO,0BAAO","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CleanIconButton, LoadingSpinner, Tooltip } from '@neo4j-ndl/react';\nimport classNames from 'classnames';\nimport { useState } from 'react';\n\nimport { type CommonProps } from '../../_common/types';\nimport { XMarkIconOutline } from '../../icons/generated/heroIcons/XMarkIconOutline';\n\ntype FileTagProps = {\n /** The icon that represents the file type */\n icon: React.ReactNode;\n /** The name of the file */\n fileName: string;\n /** The type of the file, e.g. 'pdf', 'docx', 'txt', etc. */\n fileType: string;\n /** Callback function triggered either when the file tag is clicked, or when the remove button is clicked (if isRemovable is true) */\n onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n /** Whether the file tag is removable */\n isRemovable?: boolean;\n /** Whether the file tag is loading */\n isLoading?: boolean;\n};\n\n/**\n * The component is used to display a file in a chat, or in a prompt.\n * It can be removable and it can be loading.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst FileTag = ({\n onClick,\n isRemovable = false,\n fileName,\n fileType,\n icon,\n className,\n style,\n htmlAttributes,\n ref,\n isLoading = false,\n ...restProps\n}: CommonProps<React.ElementType, FileTagProps>) => {\n const Component = isRemovable !== true ? 'button' : 'div';\n const classes = classNames('ndl-ai-file-tag', className);\n\n const file = `${fileName}.${fileType}`;\n const [isRemoveActive, setIsRemoveActive] = useState(false);\n\n return (\n <Tooltip\n type=\"simple\"\n placement=\"bottom\"\n hoverDelay={{ close: 0, open: 500 }}\n >\n <Tooltip.Trigger hasButtonWrapper>\n <Component\n ref={ref}\n className={classes}\n style={style}\n {...(isRemovable ? {} : { onClick })}\n // what is read by screen readers here?\n {...restProps}\n {...htmlAttributes}\n >\n <div className=\"ndl-ai-file-tag-leading\">\n {isLoading ? <LoadingSpinner size=\"medium\" /> : icon}\n </div>\n <div className=\"ndl-ai-file-tag-content\">\n <span className=\"ndl-ai-file-tag-content-title\">{fileName}</span>\n <span className=\"ndl-ai-file-tag-content-type\">\n {fileType?.toUpperCase()}\n </span>\n </div>\n {isRemovable && (\n <CleanIconButton\n onClick={onClick}\n description={null}\n htmlAttributes={{\n 'aria-label': `Remove ${file}`,\n onBlur: () => setIsRemoveActive(false),\n onFocus: () => setIsRemoveActive(true),\n onMouseEnter: () => setIsRemoveActive(true),\n onMouseLeave: () => setIsRemoveActive(false),\n }}\n size=\"small\"\n className=\"ndl-ai-file-tag-remove\"\n >\n <XMarkIconOutline />\n </CleanIconButton>\n )}\n </Component>\n </Tooltip.Trigger>\n <Tooltip.Content>\n {isRemoveActive ? `Remove ${file}` : file}\n </Tooltip.Content>\n </Tooltip>\n );\n};\n\nexport { FileTag };\n"]}
|
|
@@ -38,6 +38,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
38
38
|
*/
|
|
39
39
|
const react_1 = require("@neo4j-ndl/react");
|
|
40
40
|
const classnames_1 = __importDefault(require("classnames"));
|
|
41
|
+
const react_2 = require("react");
|
|
41
42
|
const XMarkIconOutline_1 = require("../../icons/generated/heroIcons/XMarkIconOutline");
|
|
42
43
|
/**
|
|
43
44
|
* The component is used to display an image in a chat, or in a prompt.
|
|
@@ -50,9 +51,14 @@ const ImageTag = (_a) => {
|
|
|
50
51
|
const Component = isRemovable !== true ? 'button' : 'div';
|
|
51
52
|
const classes = (0, classnames_1.default)('ndl-ai-image-tag', className);
|
|
52
53
|
const image = `${fileName}.${fileType}`;
|
|
54
|
+
const [isRemoveActive, setIsRemoveActive] = (0, react_2.useState)(false);
|
|
53
55
|
return ((0, jsx_runtime_1.jsxs)(react_1.Tooltip, { type: "simple", placement: "bottom", hoverDelay: { close: 0, open: 500 }, children: [(0, jsx_runtime_1.jsx)(react_1.Tooltip.Trigger, { hasButtonWrapper: true, children: (0, jsx_runtime_1.jsxs)(Component, Object.assign({ ref: ref, className: classes, style: style }, (isRemovable ? {} : { onClick }), restProps, htmlAttributes, { children: [(0, jsx_runtime_1.jsx)("img", { src: src, alt: alt }), isRemovable && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "ndl-ai-image-tag-remove-wrapper" }), (0, jsx_runtime_1.jsx)(react_1.CleanIconButton, { onClick: onClick, description: null, htmlAttributes: {
|
|
54
56
|
'aria-label': `Remove ${image}`,
|
|
55
|
-
|
|
57
|
+
onBlur: () => setIsRemoveActive(false),
|
|
58
|
+
onFocus: () => setIsRemoveActive(true),
|
|
59
|
+
onMouseEnter: () => setIsRemoveActive(true),
|
|
60
|
+
onMouseLeave: () => setIsRemoveActive(false),
|
|
61
|
+
}, size: "small", className: "ndl-ai-image-tag-remove", children: (0, jsx_runtime_1.jsx)(XMarkIconOutline_1.XMarkIconOutline, {}) })] })), isLoading && ((0, jsx_runtime_1.jsx)("div", { className: "ndl-ai-image-tag-loading-overlay", children: (0, jsx_runtime_1.jsx)(react_1.LoadingSpinner, { size: "medium" }) }))] })) }), (0, jsx_runtime_1.jsx)(react_1.Tooltip.Content, { children: isRemoveActive ? `Remove ${image}` : image })] }));
|
|
56
62
|
};
|
|
57
63
|
exports.ImageTag = ImageTag;
|
|
58
64
|
//# sourceMappingURL=ImageTag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageTag.js","sourceRoot":"","sources":["../../../../src/ai/image-tag/ImageTag.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4CAA4E;AAC5E,4DAAoC;
|
|
1
|
+
{"version":3,"file":"ImageTag.js","sourceRoot":"","sources":["../../../../src/ai/image-tag/ImageTag.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4CAA4E;AAC5E,4DAAoC;AACpC,iCAAiC;AAGjC,uFAAoF;AAmBpF;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,CAAC,EAa8B,EAAE,EAAE;QAblC,EAChB,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,OAAO,EACP,WAAW,GAAG,KAAK,EACnB,SAAS,GAAG,KAAK,EACjB,GAAG,EACH,SAAS,EACT,KAAK,EACL,cAAc,OAEgC,EAD3C,SAAS,cAZI,4HAajB,CADa;IAEZ,MAAM,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAE1D,MAAM,KAAK,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACxC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5D,OAAO,CACL,wBAAC,eAAO,IACN,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,QAAQ,EAClB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,aAEnC,uBAAC,eAAO,CAAC,OAAO,IAAC,gBAAgB,kBAC/B,wBAAC,SAAS,kBACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,IACR,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAEhC,SAAS,EACT,cAAc,eAElB,gCAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAI,EAC1B,WAAW,IAAI,CACd,6DACE,gCAAK,SAAS,EAAC,iCAAiC,GAAG,EACnD,uBAAC,uBAAe,IACd,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE;wCACd,YAAY,EAAE,UAAU,KAAK,EAAE;wCAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;wCACtC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;wCACtC,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;wCAC3C,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;qCAC7C,EACD,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,yBAAyB,YAEnC,uBAAC,mCAAgB,KAAG,GACJ,IACjB,CACJ,EACA,SAAS,IAAI,CACZ,gCAAK,SAAS,EAAC,kCAAkC,YAC/C,uBAAC,sBAAc,IAAC,IAAI,EAAC,QAAQ,GAAG,GAC5B,CACP,KACS,GACI,EAClB,uBAAC,eAAO,CAAC,OAAO,cACb,cAAc,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,GAC3B,IACV,CACX,CAAC;AACJ,CAAC,CAAC;AAEO,4BAAQ","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CleanIconButton, LoadingSpinner, Tooltip } from '@neo4j-ndl/react';\nimport classNames from 'classnames';\nimport { useState } from 'react';\n\nimport { type CommonProps } from '../../_common/types';\nimport { XMarkIconOutline } from '../../icons/generated/heroIcons/XMarkIconOutline';\n\ntype ImageTagProps = {\n /** The source of the image */\n src: string;\n /** The alt text of the image */\n alt: string;\n /** The name of the image */\n fileName: string;\n /** The type of the image, e.g. 'jpg', 'png', 'gif', etc. */\n fileType: string;\n /** Callback function triggered either when the image tag is clicked, or when the remove button is clicked (if isRemovable is true) */\n onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n /** Whether the image tag is removable */\n isRemovable?: boolean;\n /** Whether the image tag is loading */\n isLoading?: boolean;\n};\n\n/**\n * The component is used to display an image in a chat, or in a prompt.\n * It can be removable and it can be loading.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst ImageTag = ({\n src,\n fileName,\n fileType,\n alt,\n onClick,\n isRemovable = false,\n isLoading = false,\n ref,\n className,\n style,\n htmlAttributes,\n ...restProps\n}: CommonProps<React.ElementType, ImageTagProps>) => {\n const Component = isRemovable !== true ? 'button' : 'div';\n const classes = classNames('ndl-ai-image-tag', className);\n\n const image = `${fileName}.${fileType}`;\n const [isRemoveActive, setIsRemoveActive] = useState(false);\n\n return (\n <Tooltip\n type=\"simple\"\n placement=\"bottom\"\n hoverDelay={{ close: 0, open: 500 }}\n >\n <Tooltip.Trigger hasButtonWrapper>\n <Component\n ref={ref}\n className={classes}\n style={style}\n {...(isRemovable ? {} : { onClick })}\n // what is read by screen readers here?\n {...restProps}\n {...htmlAttributes}\n >\n <img src={src} alt={alt} />\n {isRemovable && (\n <>\n <div className=\"ndl-ai-image-tag-remove-wrapper\" />\n <CleanIconButton\n onClick={onClick}\n description={null}\n htmlAttributes={{\n 'aria-label': `Remove ${image}`,\n onBlur: () => setIsRemoveActive(false),\n onFocus: () => setIsRemoveActive(true),\n onMouseEnter: () => setIsRemoveActive(true),\n onMouseLeave: () => setIsRemoveActive(false),\n }}\n size=\"small\"\n className=\"ndl-ai-image-tag-remove\"\n >\n <XMarkIconOutline />\n </CleanIconButton>\n </>\n )}\n {isLoading && (\n <div className=\"ndl-ai-image-tag-loading-overlay\">\n <LoadingSpinner size=\"medium\" />\n </div>\n )}\n </Component>\n </Tooltip.Trigger>\n <Tooltip.Content>\n {isRemoveActive ? `Remove ${image}` : image}\n </Tooltip.Content>\n </Tooltip>\n );\n};\n\nexport { ImageTag };\n"]}
|
|
@@ -43,6 +43,13 @@ const ArrowSend_1 = __importDefault(require("../../icons/generated/custom/ArrowS
|
|
|
43
43
|
const ArrowSmallUpIconOutline_1 = require("../../icons/generated/heroIcons/ArrowSmallUpIconOutline");
|
|
44
44
|
const StopCircleIconOutline_1 = require("../../icons/generated/heroIcons/StopCircleIconOutline");
|
|
45
45
|
const XMarkIconOutline_1 = require("../../icons/generated/heroIcons/XMarkIconOutline");
|
|
46
|
+
const focusTextareaFromPromptWrapper_1 = require("./focusTextareaFromPromptWrapper");
|
|
47
|
+
const hasPromptContent = (inputValue) => {
|
|
48
|
+
if (typeof inputValue !== 'string') {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return inputValue.trim().length > 0;
|
|
52
|
+
};
|
|
46
53
|
/**
|
|
47
54
|
* The component is used to display the prompt input for an LLM.
|
|
48
55
|
* It includes a textarea for the user to enter their prompt and a submit button.
|
|
@@ -51,6 +58,7 @@ const XMarkIconOutline_1 = require("../../icons/generated/heroIcons/XMarkIconOut
|
|
|
51
58
|
* @alpha - Changes to this component may be breaking.
|
|
52
59
|
*/
|
|
53
60
|
const PromptComponent = (_a) => {
|
|
61
|
+
var _b;
|
|
54
62
|
var { value, onChange, maxRows = 5, isDisabled = false, isRunningPrompt = false, onSubmitPrompt, onCancelPrompt, isSubmitDisabled = false, headerContent, topContent, bottomContent, bottomTrailingContent, disclaimer = 'All information should be verified.', className, style, htmlAttributes, ref, textareaProps } = _a, restProps = __rest(_a, ["value", "onChange", "maxRows", "isDisabled", "isRunningPrompt", "onSubmitPrompt", "onCancelPrompt", "isSubmitDisabled", "headerContent", "topContent", "bottomContent", "bottomTrailingContent", "disclaimer", "className", "style", "htmlAttributes", "ref", "textareaProps"]);
|
|
55
63
|
const classes = (0, classnames_1.default)('ndl-ai-prompt', className, {
|
|
56
64
|
'ndl-disabled': isDisabled,
|
|
@@ -66,6 +74,11 @@ const PromptComponent = (_a) => {
|
|
|
66
74
|
const element = textareaAboveRef.current;
|
|
67
75
|
const maxHeight = parseFloat(getComputedStyle(element).maxHeight.replace('px', ''));
|
|
68
76
|
const scrollHeight = element.scrollHeight;
|
|
77
|
+
// Computed max-height can be non-numeric (e.g. "none"), so bail safely.
|
|
78
|
+
if (!Number.isFinite(maxHeight)) {
|
|
79
|
+
element.classList.remove('ndl-can-scroll');
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
69
82
|
if (scrollHeight > maxHeight) {
|
|
70
83
|
element.classList.add('ndl-can-scroll');
|
|
71
84
|
}
|
|
@@ -103,7 +116,17 @@ const PromptComponent = (_a) => {
|
|
|
103
116
|
(0, react_2.useEffect)(() => {
|
|
104
117
|
if (textareaRef.current !== null) {
|
|
105
118
|
const computed = window.getComputedStyle(textareaRef.current);
|
|
106
|
-
|
|
119
|
+
const parsedLineHeight = Number.parseFloat(computed.lineHeight);
|
|
120
|
+
if (Number.isFinite(parsedLineHeight) && parsedLineHeight > 0) {
|
|
121
|
+
setLineHeight(parsedLineHeight);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Fallback for cases where line-height is reported as "normal".
|
|
125
|
+
const parsedFontSize = Number.parseFloat(computed.fontSize);
|
|
126
|
+
setLineHeight(Number.isFinite(parsedFontSize) && parsedFontSize > 0
|
|
127
|
+
? parsedFontSize * 1.2
|
|
128
|
+
: 16);
|
|
129
|
+
}
|
|
107
130
|
}
|
|
108
131
|
}, []);
|
|
109
132
|
const adjustTextareaHeight = (0, react_2.useCallback)(() => {
|
|
@@ -130,16 +153,24 @@ const PromptComponent = (_a) => {
|
|
|
130
153
|
adjustTextareaHeight();
|
|
131
154
|
onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
132
155
|
};
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
156
|
+
const handleSubmitClick = (e) => {
|
|
157
|
+
var _a;
|
|
158
|
+
if (hasPromptContent((_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.value)) {
|
|
159
|
+
onSubmitPrompt === null || onSubmitPrompt === void 0 ? void 0 : onSubmitPrompt(e);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ ref: ref, className: classes, style: style }, restProps, htmlAttributes, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-wrapper", children: [Boolean(headerContent) && ((0, jsx_runtime_1.jsx)("div", { className: "ndl-ai-prompt-header", children: headerContent })), (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-wrapper-inner", onMouseDownCapture: focusTextareaFromPromptWrapper_1.focusTextareaFromPromptWrapper, children: [Boolean(topContent) && ((0, jsx_runtime_1.jsx)("div", { className: "ndl-ai-prompt-textarea-above", ref: textareaAboveRef, children: topContent })), (0, jsx_runtime_1.jsx)("textarea", Object.assign({ placeholder: "Ask anything", className: "ndl-ai-prompt-textarea", rows: 1, onChange: handleInput, value: value, ref: textareaRef, disabled: isDisabled, "aria-label": (_b = textareaProps === null || textareaProps === void 0 ? void 0 : textareaProps['aria-label']) !== null && _b !== void 0 ? _b : 'Prompt input', onKeyDown: (e) => {
|
|
163
|
+
const nativeEvent = e.nativeEvent;
|
|
164
|
+
const isComposing = nativeEvent.isComposing === true;
|
|
165
|
+
if (e.key === 'Enter' && !isComposing && !e.shiftKey) {
|
|
137
166
|
e.preventDefault();
|
|
138
|
-
if (
|
|
167
|
+
if (hasPromptContent(e.currentTarget.value) &&
|
|
168
|
+
isSubmitDisabled !== true &&
|
|
169
|
+
isRunningPrompt !== true) {
|
|
139
170
|
onSubmitPrompt === null || onSubmitPrompt === void 0 ? void 0 : onSubmitPrompt(e);
|
|
140
171
|
}
|
|
141
172
|
}
|
|
142
|
-
} }, textareaProps)), (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-textarea-below", children: [Boolean(bottomContent) && ((0, jsx_runtime_1.jsx)("div", { className: "ndl-ai-prompt-textarea-below-leading", children: bottomContent })), (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-textarea-below-trailing", children: [bottomTrailingContent, (0, jsx_runtime_1.jsx)(SubmitPromptButton, { isDisabled: isSubmitDisabled, isRunningPrompt: isRunningPrompt, onSubmit:
|
|
173
|
+
} }, textareaProps)), (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-textarea-below", children: [Boolean(bottomContent) && ((0, jsx_runtime_1.jsx)("div", { className: "ndl-ai-prompt-textarea-below-leading", children: bottomContent })), (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-textarea-below-trailing", children: [bottomTrailingContent, (0, jsx_runtime_1.jsx)(SubmitPromptButton, { isDisabled: isSubmitDisabled, isRunningPrompt: isRunningPrompt, onSubmit: handleSubmitClick, onCancel: onCancelPrompt })] })] })] })] }), Boolean(disclaimer) && ((0, jsx_runtime_1.jsx)(react_1.Typography, { variant: "body-small", className: "ndl-ai-prompt-footer", children: disclaimer }))] })));
|
|
143
174
|
};
|
|
144
175
|
const SubmitPromptButton = ({ onSubmit, onCancel, isDisabled, isRunningPrompt, }) => {
|
|
145
176
|
return ((0, jsx_runtime_1.jsx)(react_1.CleanIconButton, { className: "ndl-ai-prompt-submit-button", description: isRunningPrompt === true ? 'Stop' : 'Send', size: "small", isDisabled: isDisabled, onClick: isRunningPrompt === true ? onCancel : onSubmit, children: isRunningPrompt === true ? ((0, jsx_runtime_1.jsx)(StopCircleIconOutline_1.StopCircleIconOutline, {})) : ((0, jsx_runtime_1.jsx)(ArrowSmallUpIconOutline_1.ArrowSmallUpIconOutline, {})) }));
|
|
@@ -158,9 +189,10 @@ const AgentSelect = ({ value, options = [], onChange }) => {
|
|
|
158
189
|
const ContextTag = ({ children, onClose }) => {
|
|
159
190
|
const textRef = (0, react_2.useRef)(null);
|
|
160
191
|
const [isTooltipOpen, setIsTooltipOpen] = (0, react_2.useState)(false);
|
|
161
|
-
|
|
192
|
+
const [isRemoveActive, setIsRemoveActive] = (0, react_2.useState)(false);
|
|
193
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Tooltip, { type: "simple", isOpen: isTooltipOpen || isRemoveActive, onOpenChange: (isOpen) => {
|
|
162
194
|
var _a, _b;
|
|
163
|
-
if (isOpen) {
|
|
195
|
+
if (isOpen && !isRemoveActive) {
|
|
164
196
|
const isTruncated = ((_a = textRef.current) === null || _a === void 0 ? void 0 : _a.scrollWidth) &&
|
|
165
197
|
((_b = textRef.current) === null || _b === void 0 ? void 0 : _b.clientWidth) &&
|
|
166
198
|
textRef.current.scrollWidth > textRef.current.clientWidth;
|
|
@@ -168,10 +200,10 @@ const ContextTag = ({ children, onClose }) => {
|
|
|
168
200
|
setIsTooltipOpen(true);
|
|
169
201
|
}
|
|
170
202
|
}
|
|
171
|
-
else {
|
|
203
|
+
else if (!isRemoveActive) {
|
|
172
204
|
setIsTooltipOpen(false);
|
|
173
205
|
}
|
|
174
|
-
}, hoverDelay: { close: 0, open: 500 }, children: [(0, jsx_runtime_1.jsx)(react_1.Tooltip.Trigger, { hasButtonWrapper: true, children: (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-context-tag", children: [(0, jsx_runtime_1.jsx)(ArrowSend_1.default, { className: "ndl-ai-prompt-context-tag-icon" }), (0, jsx_runtime_1.jsx)(react_1.Typography, { variant: "body-medium", className: "ndl-ai-prompt-context-tag-text", ref: textRef, children: children }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: onClose, "aria-label": `Remove
|
|
206
|
+
}, hoverDelay: { close: 0, open: 500 }, children: [(0, jsx_runtime_1.jsx)(react_1.Tooltip.Trigger, { hasButtonWrapper: true, children: (0, jsx_runtime_1.jsxs)("div", { className: "ndl-ai-prompt-context-tag", children: [(0, jsx_runtime_1.jsx)(ArrowSend_1.default, { className: "ndl-ai-prompt-context-tag-icon" }), (0, jsx_runtime_1.jsx)(react_1.Typography, { variant: "body-medium", className: "ndl-ai-prompt-context-tag-text", ref: textRef, children: children }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: onClose, "aria-label": `Remove ${children}`, onMouseEnter: () => setIsRemoveActive(true), onMouseLeave: () => setIsRemoveActive(false), onFocus: () => setIsRemoveActive(true), onBlur: () => setIsRemoveActive(false), className: "ndl-ai-prompt-context-tag-close-button", children: (0, jsx_runtime_1.jsx)(XMarkIconOutline_1.XMarkIconOutline, { className: "ndl-ai-prompt-context-tag-icon" }) })] }) }), (0, jsx_runtime_1.jsx)(react_1.Tooltip.Content, { children: isRemoveActive ? `Remove ${children}` : children })] }));
|
|
175
207
|
};
|
|
176
208
|
const Prompt = Object.assign(PromptComponent, {
|
|
177
209
|
ContextTag: ContextTag,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../../src/ai/prompt/Prompt.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n CleanIconButton,\n DropdownButton,\n Menu,\n Tooltip,\n Typography,\n} from '@neo4j-ndl/react';\nimport classNames from 'classnames';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { CommonProps, HtmlAttributes } from '../../_common/types';\nimport ArrowSendIcon from '../../icons/generated/custom/ArrowSend';\nimport { ArrowSmallUpIconOutline } from '../../icons/generated/heroIcons/ArrowSmallUpIconOutline';\nimport { StopCircleIconOutline } from '../../icons/generated/heroIcons/StopCircleIconOutline';\nimport { XMarkIconOutline } from '../../icons/generated/heroIcons/XMarkIconOutline';\n\ntype PromptProps = {\n /** The prompt text */\n value?: React.ComponentPropsWithoutRef<'textarea'>['value'];\n /** Callback function called when the prompt text changes */\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n /** Maximum number of rows the textarea can expand to */\n maxRows?: number;\n /** Whether the textarea is disabled */\n isDisabled?: boolean;\n /** Whether the submit button is disabled */\n isSubmitDisabled?: boolean;\n /** Whether the submit button is \"running\". Shows a stop icon when true. */\n isRunningPrompt?: boolean;\n /** Callback function called when the submit button is clicked */\n onSubmitPrompt?: (\n e:\n | React.KeyboardEvent<HTMLTextAreaElement>\n | React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => void;\n /** Callback function called when the cancel button is clicked */\n onCancelPrompt?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n /** Content to display above the input card, e.g. a status message while a prompt is running */\n headerContent?: React.ReactNode;\n /** Content to display above the textarea */\n topContent?: React.ReactNode;\n /** Content to display below the textarea, on the leading side */\n bottomContent?: React.ReactNode;\n /** Content to display below the textarea, on the trailing side next to the submit button */\n bottomTrailingContent?: React.ReactNode;\n /** Disclaimer to display below the component */\n disclaimer?: React.ReactNode;\n /** Props for the textarea element */\n textareaProps?: HtmlAttributes<'textarea'>;\n};\n\n/**\n * The component is used to display the prompt input for an LLM.\n * It includes a textarea for the user to enter their prompt and a submit button.\n * It can also display content above and below the textarea, like uploaded files or a select for changing agents.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst PromptComponent = ({\n value,\n onChange,\n maxRows = 5,\n isDisabled = false,\n isRunningPrompt = false,\n onSubmitPrompt,\n onCancelPrompt,\n isSubmitDisabled = false,\n headerContent,\n topContent,\n bottomContent,\n bottomTrailingContent,\n disclaimer = 'All information should be verified.',\n className,\n style,\n htmlAttributes,\n ref,\n textareaProps,\n ...restProps\n}: CommonProps<'div', PromptProps>) => {\n const classes = classNames('ndl-ai-prompt', className, {\n 'ndl-disabled': isDisabled,\n });\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const textareaAboveRef = useRef<HTMLDivElement>(null);\n const [lineHeight, setLineHeight] = useState(0);\n\n /** File overflow stuff */\n useEffect(() => {\n let rafId: number | null = null;\n\n const checkOverflow = () => {\n if (textareaAboveRef.current !== null) {\n const element = textareaAboveRef.current;\n const maxHeight = parseFloat(\n getComputedStyle(element).maxHeight.replace('px', ''),\n );\n const scrollHeight = element.scrollHeight;\n\n if (scrollHeight > maxHeight) {\n element.classList.add('ndl-can-scroll');\n } else {\n element.classList.remove('ndl-can-scroll');\n }\n }\n };\n\n const debouncedCheck = () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n rafId = requestAnimationFrame(checkOverflow);\n };\n\n // Initial check\n checkOverflow();\n\n const resizeObserver = new ResizeObserver(debouncedCheck);\n const mutationObserver = new MutationObserver(debouncedCheck);\n\n if (textareaAboveRef.current !== null) {\n resizeObserver.observe(textareaAboveRef.current);\n mutationObserver.observe(textareaAboveRef.current, {\n childList: true,\n subtree: true,\n });\n }\n\n return () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n };\n }, []);\n\n /** Textarea stuff */\n useEffect(() => {\n if (textareaRef.current !== null) {\n const computed = window.getComputedStyle(textareaRef.current);\n setLineHeight(parseInt(computed.lineHeight));\n }\n }, []);\n\n const adjustTextareaHeight = useCallback(() => {\n const ta = textareaRef.current;\n\n if (ta !== null && lineHeight > 0) {\n // Reset height so scrollHeight measures correctly\n ta.style.height = 'auto';\n\n const maxHeight = lineHeight * maxRows;\n\n if (ta.scrollHeight <= maxHeight) {\n ta.style.overflowY = 'hidden';\n ta.style.height = `${ta.scrollHeight + 12}px`;\n } else {\n ta.style.overflowY = 'auto';\n ta.style.height = `${maxHeight + 12}px`;\n }\n }\n }, [lineHeight, maxRows]);\n\n // Adjust height when prompt value changes (including when cleared)\n useEffect(() => {\n adjustTextareaHeight();\n }, [value, adjustTextareaHeight]);\n\n const handleInput = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n adjustTextareaHeight();\n onChange?.(e);\n };\n\n return (\n <div\n ref={ref}\n className={classes}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n <div className=\"ndl-ai-prompt-wrapper\">\n {Boolean(headerContent) && (\n <div className=\"ndl-ai-prompt-header\">{headerContent}</div>\n )}\n <div className=\"ndl-ai-prompt-wrapper-inner\">\n {Boolean(topContent) && (\n <div\n className=\"ndl-ai-prompt-textarea-above\"\n ref={textareaAboveRef}\n >\n {topContent}\n </div>\n )}\n <textarea\n placeholder=\"Ask anything\"\n className=\"ndl-ai-prompt-textarea\"\n rows={1}\n onChange={handleInput}\n value={value}\n ref={textareaRef}\n disabled={isDisabled}\n onKeyDown={(e) => {\n if (\n e.key === 'Enter' &&\n !e.shiftKey &&\n isSubmitDisabled !== true\n ) {\n e.preventDefault();\n\n if (isRunningPrompt !== true) {\n onSubmitPrompt?.(e);\n }\n }\n }}\n {...textareaProps}\n />\n <div className=\"ndl-ai-prompt-textarea-below\">\n {Boolean(bottomContent) && (\n <div className=\"ndl-ai-prompt-textarea-below-leading\">\n {bottomContent}\n </div>\n )}\n <div className=\"ndl-ai-prompt-textarea-below-trailing\">\n {bottomTrailingContent}\n <SubmitPromptButton\n isDisabled={isSubmitDisabled}\n isRunningPrompt={isRunningPrompt}\n onSubmit={onSubmitPrompt}\n onCancel={onCancelPrompt}\n />\n </div>\n </div>\n </div>\n </div>\n {Boolean(disclaimer) && (\n <Typography variant=\"body-small\" className=\"ndl-ai-prompt-footer\">\n {disclaimer}\n </Typography>\n )}\n </div>\n );\n};\n\nconst SubmitPromptButton = ({\n onSubmit,\n onCancel,\n isDisabled,\n isRunningPrompt,\n}: {\n isDisabled?: boolean;\n isRunningPrompt?: boolean;\n onSubmit?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n onCancel?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n}) => {\n return (\n <CleanIconButton\n className=\"ndl-ai-prompt-submit-button\"\n description={isRunningPrompt === true ? 'Stop' : 'Send'}\n size=\"small\"\n isDisabled={isDisabled}\n onClick={isRunningPrompt === true ? onCancel : onSubmit}\n >\n {isRunningPrompt === true ? (\n <StopCircleIconOutline />\n ) : (\n <ArrowSmallUpIconOutline />\n )}\n </CleanIconButton>\n );\n};\n\ntype AgentSelectProps = {\n value: { label: React.ReactNode; value: string };\n options: Array<{ label: React.ReactNode; value: string }>;\n onChange: (option: { label: React.ReactNode; value: string }) => void;\n};\n\nconst AgentSelect = ({ value, options = [], onChange }: AgentSelectProps) => {\n const anchorRef = useRef<HTMLButtonElement>(null);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const displayLabel = value?.label ?? options[0]?.label ?? '';\n\n const handleItemClick = (option: {\n label: React.ReactNode;\n value: string;\n }) => {\n onChange?.(option);\n setIsMenuOpen(false);\n };\n\n return (\n <>\n <DropdownButton\n size=\"small\"\n className=\"ndl-ai-prompt-dropdown-button\"\n onClick={() => setIsMenuOpen((old) => !old)}\n isOpen={isMenuOpen}\n ref={anchorRef}\n >\n {displayLabel}\n </DropdownButton>\n <Menu\n isOpen={isMenuOpen}\n onClose={() => setIsMenuOpen(false)}\n anchorRef={anchorRef}\n placement=\"top-start-bottom-start\"\n >\n {options.map((option) => (\n <Menu.RadioItem\n key={option.value}\n title={option.label}\n isChecked={value?.value === option.value}\n onClick={() => handleItemClick(option)}\n />\n ))}\n </Menu>\n </>\n );\n};\n\ntype ContextTagProps = {\n children?: string;\n onClose: () => void;\n};\n\nconst ContextTag = ({ children, onClose }: ContextTagProps) => {\n const textRef = useRef<HTMLSpanElement>(null);\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n\n return (\n <Tooltip\n type=\"simple\"\n isOpen={isTooltipOpen}\n onOpenChange={(isOpen) => {\n if (isOpen) {\n const isTruncated =\n textRef.current?.scrollWidth &&\n textRef.current?.clientWidth &&\n textRef.current.scrollWidth > textRef.current.clientWidth;\n if (isTruncated) {\n setIsTooltipOpen(true);\n }\n } else {\n setIsTooltipOpen(false);\n }\n }}\n hoverDelay={{ close: 0, open: 500 }}\n >\n <Tooltip.Trigger hasButtonWrapper>\n <div className=\"ndl-ai-prompt-context-tag\">\n <ArrowSendIcon className=\"ndl-ai-prompt-context-tag-icon\" />\n <Typography\n variant=\"body-medium\"\n className=\"ndl-ai-prompt-context-tag-text\"\n ref={textRef}\n >\n {children}\n </Typography>\n\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={`Remove context: ${children}`}\n className=\"ndl-ai-prompt-context-tag-close-button\"\n >\n <XMarkIconOutline className=\"ndl-ai-prompt-context-tag-icon\" />\n </button>\n </div>\n </Tooltip.Trigger>\n <Tooltip.Content>{children}</Tooltip.Content>\n </Tooltip>\n );\n};\n\nconst Prompt = Object.assign(PromptComponent, {\n ContextTag: ContextTag,\n Select: AgentSelect,\n});\n\nexport { Prompt };\n"]}
|
|
1
|
+
{"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../../src/ai/prompt/Prompt.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n CleanIconButton,\n DropdownButton,\n Menu,\n Tooltip,\n Typography,\n} from '@neo4j-ndl/react';\nimport classNames from 'classnames';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { CommonProps, HtmlAttributes } from '../../_common/types';\nimport ArrowSendIcon from '../../icons/generated/custom/ArrowSend';\nimport { ArrowSmallUpIconOutline } from '../../icons/generated/heroIcons/ArrowSmallUpIconOutline';\nimport { StopCircleIconOutline } from '../../icons/generated/heroIcons/StopCircleIconOutline';\nimport { XMarkIconOutline } from '../../icons/generated/heroIcons/XMarkIconOutline';\nimport { focusTextareaFromPromptWrapper } from './focusTextareaFromPromptWrapper';\n\nconst hasPromptContent = (inputValue: unknown): boolean => {\n if (typeof inputValue !== 'string') {\n return false;\n }\n\n return inputValue.trim().length > 0;\n};\n\ntype PromptProps = {\n /** The prompt text */\n value?: React.ComponentPropsWithoutRef<'textarea'>['value'];\n /** Callback function called when the prompt text changes */\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n /** Maximum number of rows the textarea can expand to */\n maxRows?: number;\n /** Whether the textarea is disabled */\n isDisabled?: boolean;\n /** Whether the submit button is disabled */\n isSubmitDisabled?: boolean;\n /** Whether the submit button is \"running\". Shows a stop icon when true. */\n isRunningPrompt?: boolean;\n /** Callback function called when the submit button is clicked */\n onSubmitPrompt?: (\n e:\n | React.KeyboardEvent<HTMLTextAreaElement>\n | React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => void;\n /** Callback function called when the cancel button is clicked */\n onCancelPrompt?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n /** Content to display above the input card, e.g. a status message while a prompt is running */\n headerContent?: React.ReactNode;\n /** Content to display above the textarea */\n topContent?: React.ReactNode;\n /** Content to display below the textarea, on the leading side */\n bottomContent?: React.ReactNode;\n /** Content to display below the textarea, on the trailing side next to the submit button */\n bottomTrailingContent?: React.ReactNode;\n /** Disclaimer to display below the component */\n disclaimer?: React.ReactNode;\n /** Props for the textarea element */\n textareaProps?: HtmlAttributes<'textarea'>;\n};\n\n/**\n * The component is used to display the prompt input for an LLM.\n * It includes a textarea for the user to enter their prompt and a submit button.\n * It can also display content above and below the textarea, like uploaded files or a select for changing agents.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst PromptComponent = ({\n value,\n onChange,\n maxRows = 5,\n isDisabled = false,\n isRunningPrompt = false,\n onSubmitPrompt,\n onCancelPrompt,\n isSubmitDisabled = false,\n headerContent,\n topContent,\n bottomContent,\n bottomTrailingContent,\n disclaimer = 'All information should be verified.',\n className,\n style,\n htmlAttributes,\n ref,\n textareaProps,\n ...restProps\n}: CommonProps<'div', PromptProps>) => {\n const classes = classNames('ndl-ai-prompt', className, {\n 'ndl-disabled': isDisabled,\n });\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const textareaAboveRef = useRef<HTMLDivElement>(null);\n const [lineHeight, setLineHeight] = useState(0);\n\n /** File overflow stuff */\n useEffect(() => {\n let rafId: number | null = null;\n\n const checkOverflow = () => {\n if (textareaAboveRef.current !== null) {\n const element = textareaAboveRef.current;\n const maxHeight = parseFloat(\n getComputedStyle(element).maxHeight.replace('px', ''),\n );\n const scrollHeight = element.scrollHeight;\n\n // Computed max-height can be non-numeric (e.g. \"none\"), so bail safely.\n if (!Number.isFinite(maxHeight)) {\n element.classList.remove('ndl-can-scroll');\n return;\n }\n\n if (scrollHeight > maxHeight) {\n element.classList.add('ndl-can-scroll');\n } else {\n element.classList.remove('ndl-can-scroll');\n }\n }\n };\n\n const debouncedCheck = () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n rafId = requestAnimationFrame(checkOverflow);\n };\n\n // Initial check\n checkOverflow();\n\n const resizeObserver = new ResizeObserver(debouncedCheck);\n const mutationObserver = new MutationObserver(debouncedCheck);\n\n if (textareaAboveRef.current !== null) {\n resizeObserver.observe(textareaAboveRef.current);\n mutationObserver.observe(textareaAboveRef.current, {\n childList: true,\n subtree: true,\n });\n }\n\n return () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n };\n }, []);\n\n /** Textarea stuff */\n useEffect(() => {\n if (textareaRef.current !== null) {\n const computed = window.getComputedStyle(textareaRef.current);\n const parsedLineHeight = Number.parseFloat(computed.lineHeight);\n\n if (Number.isFinite(parsedLineHeight) && parsedLineHeight > 0) {\n setLineHeight(parsedLineHeight);\n } else {\n // Fallback for cases where line-height is reported as \"normal\".\n const parsedFontSize = Number.parseFloat(computed.fontSize);\n setLineHeight(\n Number.isFinite(parsedFontSize) && parsedFontSize > 0\n ? parsedFontSize * 1.2\n : 16,\n );\n }\n }\n }, []);\n\n const adjustTextareaHeight = useCallback(() => {\n const ta = textareaRef.current;\n\n if (ta !== null && lineHeight > 0) {\n // Reset height so scrollHeight measures correctly\n ta.style.height = 'auto';\n\n const maxHeight = lineHeight * maxRows;\n\n if (ta.scrollHeight <= maxHeight) {\n ta.style.overflowY = 'hidden';\n ta.style.height = `${ta.scrollHeight + 12}px`;\n } else {\n ta.style.overflowY = 'auto';\n ta.style.height = `${maxHeight + 12}px`;\n }\n }\n }, [lineHeight, maxRows]);\n\n // Adjust height when prompt value changes (including when cleared)\n useEffect(() => {\n adjustTextareaHeight();\n }, [value, adjustTextareaHeight]);\n\n const handleInput = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n adjustTextareaHeight();\n onChange?.(e);\n };\n\n const handleSubmitClick = (\n e: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n if (hasPromptContent(textareaRef.current?.value)) {\n onSubmitPrompt?.(e);\n }\n };\n\n return (\n <div\n ref={ref}\n className={classes}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n <div className=\"ndl-ai-prompt-wrapper\">\n {Boolean(headerContent) && (\n <div className=\"ndl-ai-prompt-header\">{headerContent}</div>\n )}\n <div\n className=\"ndl-ai-prompt-wrapper-inner\"\n onMouseDownCapture={focusTextareaFromPromptWrapper}\n >\n {Boolean(topContent) && (\n <div\n className=\"ndl-ai-prompt-textarea-above\"\n ref={textareaAboveRef}\n >\n {topContent}\n </div>\n )}\n <textarea\n placeholder=\"Ask anything\"\n className=\"ndl-ai-prompt-textarea\"\n rows={1}\n onChange={handleInput}\n value={value}\n ref={textareaRef}\n disabled={isDisabled}\n aria-label={textareaProps?.['aria-label'] ?? 'Prompt input'}\n onKeyDown={(e) => {\n const nativeEvent = e.nativeEvent as KeyboardEvent;\n const isComposing = nativeEvent.isComposing === true;\n\n if (e.key === 'Enter' && !isComposing && !e.shiftKey) {\n e.preventDefault();\n\n if (\n hasPromptContent(e.currentTarget.value) &&\n isSubmitDisabled !== true &&\n isRunningPrompt !== true\n ) {\n onSubmitPrompt?.(e);\n }\n }\n }}\n {...textareaProps}\n />\n <div className=\"ndl-ai-prompt-textarea-below\">\n {Boolean(bottomContent) && (\n <div className=\"ndl-ai-prompt-textarea-below-leading\">\n {bottomContent}\n </div>\n )}\n <div className=\"ndl-ai-prompt-textarea-below-trailing\">\n {bottomTrailingContent}\n <SubmitPromptButton\n isDisabled={isSubmitDisabled}\n isRunningPrompt={isRunningPrompt}\n onSubmit={handleSubmitClick}\n onCancel={onCancelPrompt}\n />\n </div>\n </div>\n </div>\n </div>\n {Boolean(disclaimer) && (\n <Typography variant=\"body-small\" className=\"ndl-ai-prompt-footer\">\n {disclaimer}\n </Typography>\n )}\n </div>\n );\n};\n\nconst SubmitPromptButton = ({\n onSubmit,\n onCancel,\n isDisabled,\n isRunningPrompt,\n}: {\n isDisabled?: boolean;\n isRunningPrompt?: boolean;\n onSubmit?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n onCancel?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n}) => {\n return (\n <CleanIconButton\n className=\"ndl-ai-prompt-submit-button\"\n description={isRunningPrompt === true ? 'Stop' : 'Send'}\n size=\"small\"\n isDisabled={isDisabled}\n onClick={isRunningPrompt === true ? onCancel : onSubmit}\n >\n {isRunningPrompt === true ? (\n <StopCircleIconOutline />\n ) : (\n <ArrowSmallUpIconOutline />\n )}\n </CleanIconButton>\n );\n};\n\ntype AgentSelectProps = {\n value: { label: React.ReactNode; value: string };\n options: Array<{ label: React.ReactNode; value: string }>;\n onChange: (option: { label: React.ReactNode; value: string }) => void;\n};\n\nconst AgentSelect = ({ value, options = [], onChange }: AgentSelectProps) => {\n const anchorRef = useRef<HTMLButtonElement>(null);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const displayLabel = value?.label ?? options[0]?.label ?? '';\n\n const handleItemClick = (option: {\n label: React.ReactNode;\n value: string;\n }) => {\n onChange?.(option);\n setIsMenuOpen(false);\n };\n\n return (\n <>\n <DropdownButton\n size=\"small\"\n className=\"ndl-ai-prompt-dropdown-button\"\n onClick={() => setIsMenuOpen((old) => !old)}\n isOpen={isMenuOpen}\n ref={anchorRef}\n >\n {displayLabel}\n </DropdownButton>\n <Menu\n isOpen={isMenuOpen}\n onClose={() => setIsMenuOpen(false)}\n anchorRef={anchorRef}\n placement=\"top-start-bottom-start\"\n >\n {options.map((option) => (\n <Menu.RadioItem\n key={option.value}\n title={option.label}\n isChecked={value?.value === option.value}\n onClick={() => handleItemClick(option)}\n />\n ))}\n </Menu>\n </>\n );\n};\n\ntype ContextTagProps = {\n children?: string;\n onClose: () => void;\n};\n\nconst ContextTag = ({ children, onClose }: ContextTagProps) => {\n const textRef = useRef<HTMLSpanElement>(null);\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n const [isRemoveActive, setIsRemoveActive] = useState(false);\n\n return (\n <Tooltip\n type=\"simple\"\n isOpen={isTooltipOpen || isRemoveActive}\n onOpenChange={(isOpen) => {\n if (isOpen && !isRemoveActive) {\n const isTruncated =\n textRef.current?.scrollWidth &&\n textRef.current?.clientWidth &&\n textRef.current.scrollWidth > textRef.current.clientWidth;\n if (isTruncated) {\n setIsTooltipOpen(true);\n }\n } else if (!isRemoveActive) {\n setIsTooltipOpen(false);\n }\n }}\n hoverDelay={{ close: 0, open: 500 }}\n >\n <Tooltip.Trigger hasButtonWrapper>\n <div className=\"ndl-ai-prompt-context-tag\">\n <ArrowSendIcon className=\"ndl-ai-prompt-context-tag-icon\" />\n <Typography\n variant=\"body-medium\"\n className=\"ndl-ai-prompt-context-tag-text\"\n ref={textRef}\n >\n {children}\n </Typography>\n\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={`Remove ${children}`}\n onMouseEnter={() => setIsRemoveActive(true)}\n onMouseLeave={() => setIsRemoveActive(false)}\n onFocus={() => setIsRemoveActive(true)}\n onBlur={() => setIsRemoveActive(false)}\n className=\"ndl-ai-prompt-context-tag-close-button\"\n >\n <XMarkIconOutline className=\"ndl-ai-prompt-context-tag-icon\" />\n </button>\n </div>\n </Tooltip.Trigger>\n <Tooltip.Content>\n {isRemoveActive ? `Remove ${children}` : children}\n </Tooltip.Content>\n </Tooltip>\n );\n};\n\nconst Prompt = Object.assign(PromptComponent, {\n ContextTag: ContextTag,\n Select: AgentSelect,\n});\n\nexport { Prompt };\n"]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) "Neo4j"
|
|
5
|
+
* Neo4j Sweden AB [http://neo4j.com]
|
|
6
|
+
*
|
|
7
|
+
* This file is part of Neo4j.
|
|
8
|
+
*
|
|
9
|
+
* Neo4j is free software: you can redistribute it and/or modify
|
|
10
|
+
* it under the terms of the GNU General Public License as published by
|
|
11
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
* (at your option) any later version.
|
|
13
|
+
*
|
|
14
|
+
* This program is distributed in the hope that it will be useful,
|
|
15
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
* GNU General Public License for more details.
|
|
18
|
+
*
|
|
19
|
+
* You should have received a copy of the GNU General Public License
|
|
20
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.focusTextareaFromPromptWrapper = void 0;
|
|
24
|
+
const MAX_POINTER_MOVE_PX = 3;
|
|
25
|
+
const NON_FOCUSABLE_TARGET_SELECTOR = [
|
|
26
|
+
'textarea',
|
|
27
|
+
'button',
|
|
28
|
+
'a',
|
|
29
|
+
'input',
|
|
30
|
+
'select',
|
|
31
|
+
'[role="button"]',
|
|
32
|
+
'.ndl-ai-prompt-context-tag',
|
|
33
|
+
'.ndl-ai-file-tag',
|
|
34
|
+
'.ndl-ai-image-tag',
|
|
35
|
+
].join(',');
|
|
36
|
+
/**
|
|
37
|
+
* Focuses the prompt textarea when users click the non-interactive wrapper.
|
|
38
|
+
*
|
|
39
|
+
* This keeps keyboard input in sync with the visible focused state.
|
|
40
|
+
*/
|
|
41
|
+
const focusTextareaFromPromptWrapper = (event) => {
|
|
42
|
+
if (event.button !== 0) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const container = event.currentTarget;
|
|
46
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
47
|
+
const textarea = container.querySelector('textarea');
|
|
48
|
+
if (textarea === null) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Do not override focus/behavior when users click interactive controls.
|
|
52
|
+
if (target === null || target === void 0 ? void 0 : target.closest(NON_FOCUSABLE_TARGET_SELECTOR)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
let didMove = false;
|
|
56
|
+
const startX = event.clientX;
|
|
57
|
+
const startY = event.clientY;
|
|
58
|
+
const cleanup = () => {
|
|
59
|
+
window.removeEventListener('mousemove', handleMouseMove);
|
|
60
|
+
window.removeEventListener('mouseup', handleMouseUp);
|
|
61
|
+
};
|
|
62
|
+
const handleMouseMove = (moveEvent) => {
|
|
63
|
+
if (Math.abs(moveEvent.clientX - startX) > MAX_POINTER_MOVE_PX ||
|
|
64
|
+
Math.abs(moveEvent.clientY - startY) > MAX_POINTER_MOVE_PX) {
|
|
65
|
+
didMove = true;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const handleMouseUp = (upEvent) => {
|
|
69
|
+
cleanup();
|
|
70
|
+
if (didMove) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const upTarget = upEvent.target instanceof HTMLElement ? upEvent.target : null;
|
|
74
|
+
if (upTarget === null ||
|
|
75
|
+
!container.contains(upTarget) ||
|
|
76
|
+
upTarget.closest(NON_FOCUSABLE_TARGET_SELECTOR)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
textarea.focus();
|
|
80
|
+
};
|
|
81
|
+
window.addEventListener('mousemove', handleMouseMove);
|
|
82
|
+
window.addEventListener('mouseup', handleMouseUp);
|
|
83
|
+
};
|
|
84
|
+
exports.focusTextareaFromPromptWrapper = focusTextareaFromPromptWrapper;
|
|
85
|
+
//# sourceMappingURL=focusTextareaFromPromptWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusTextareaFromPromptWrapper.js","sourceRoot":"","sources":["../../../../src/ai/prompt/focusTextareaFromPromptWrapper.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAIH,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,6BAA6B,GAAG;IACpC,UAAU;IACV,QAAQ;IACR,GAAG;IACH,OAAO;IACP,QAAQ;IACR,iBAAiB;IACjB,4BAA4B;IAC5B,kBAAkB;IAClB,mBAAmB;CACpB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;;;GAIG;AACI,MAAM,8BAA8B,GAEvC,CAAC,KAAK,EAAE,EAAE;IACZ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAErD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,wEAAwE;IACxE,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,6BAA6B,CAAC,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;IAE7B,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,SAAqB,EAAE,EAAE;QAChD,IACE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,mBAAmB;YAC1D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,mBAAmB,EAC1D,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,OAAmB,EAAE,EAAE;QAC5C,OAAO,EAAE,CAAC;QAEV,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhE,IACE,QAAQ,KAAK,IAAI;YACjB,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7B,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAC/C,CAAC;YACD,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACpD,CAAC,CAAC;AA7DW,QAAA,8BAA8B,kCA6DzC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport type { MouseEventHandler } from 'react';\n\nconst MAX_POINTER_MOVE_PX = 3;\nconst NON_FOCUSABLE_TARGET_SELECTOR = [\n 'textarea',\n 'button',\n 'a',\n 'input',\n 'select',\n '[role=\"button\"]',\n '.ndl-ai-prompt-context-tag',\n '.ndl-ai-file-tag',\n '.ndl-ai-image-tag',\n].join(',');\n\n/**\n * Focuses the prompt textarea when users click the non-interactive wrapper.\n *\n * This keeps keyboard input in sync with the visible focused state.\n */\nexport const focusTextareaFromPromptWrapper: MouseEventHandler<\n HTMLDivElement\n> = (event) => {\n if (event.button !== 0) {\n return;\n }\n\n const container = event.currentTarget;\n const target = event.target instanceof HTMLElement ? event.target : null;\n const textarea = container.querySelector('textarea');\n\n if (textarea === null) {\n return;\n }\n\n // Do not override focus/behavior when users click interactive controls.\n if (target?.closest(NON_FOCUSABLE_TARGET_SELECTOR)) {\n return;\n }\n\n let didMove = false;\n const startX = event.clientX;\n const startY = event.clientY;\n\n const cleanup = () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (\n Math.abs(moveEvent.clientX - startX) > MAX_POINTER_MOVE_PX ||\n Math.abs(moveEvent.clientY - startY) > MAX_POINTER_MOVE_PX\n ) {\n didMove = true;\n }\n };\n\n const handleMouseUp = (upEvent: MouseEvent) => {\n cleanup();\n\n if (didMove) {\n return;\n }\n\n const upTarget =\n upEvent.target instanceof HTMLElement ? upEvent.target : null;\n\n if (\n upTarget === null ||\n !container.contains(upTarget) ||\n upTarget.closest(NON_FOCUSABLE_TARGET_SELECTOR)\n ) {\n return;\n }\n\n textarea.focus();\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n};\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) "Neo4j"
|
|
7
|
+
* Neo4j Sweden AB [http://neo4j.com]
|
|
8
|
+
*
|
|
9
|
+
* This file is part of Neo4j.
|
|
10
|
+
*
|
|
11
|
+
* Neo4j is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* This program is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU General Public License
|
|
22
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
// THIS FILE IS GENERATED BY BUILD TOOL
|
|
25
|
+
// DO NOT EDIT IT MANUAL
|
|
26
|
+
const wrapIcon_1 = require("../../wrapIcon");
|
|
27
|
+
const SvgDatabaseCheckBase = (props) => ((0, jsx_runtime_1.jsx)("svg", Object.assign({ viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props, { children: (0, jsx_runtime_1.jsx)("path", { d: "M18.5 4.60774C18.5 6.71067 15.1421 8.41543 11 8.41543C6.85786 8.41543 3.5 6.71067 3.5 4.60774M18.5 4.60774C18.5 2.50481 15.1421 0.800049 11 0.800049C6.85786 0.800049 3.5 2.50481 3.5 4.60774M18.5 4.60774V8.06928M3.5 4.60774V14.9924C3.5 17.0953 6.5 19 10 19M3.5 4.60774V8.06928M18.5 11V8.06928M10 15.5C6.5 15.5 3.5 13.6337 3.5 11.5308V8.06928M18.5 8.06928C18.5 10.1722 15.1421 11.877 11 11.877C6.85786 11.877 3.5 10.1722 3.5 8.06928M16 18.875L17.125 20L19 17.375M22 18.5C22 20.9853 19.9853 23 17.5 23C15.0147 23 13 20.9853 13 18.5C13 16.0148 15.0147 14 17.5 14C19.9853 14 22 16.0148 22 18.5Z", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" }) })));
|
|
28
|
+
const SvgDatabaseCheck = (0, wrapIcon_1.wrapIcon)(SvgDatabaseCheckBase);
|
|
29
|
+
exports.default = SvgDatabaseCheck;
|
|
30
|
+
//# sourceMappingURL=DatabaseCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseCheck.js","sourceRoot":"","sources":["../../../../../src/icons/generated/custom/DatabaseCheck.tsx"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,uCAAuC;AACvC,wBAAwB;AACxB,6CAA0C;AAE1C,MAAM,oBAAoB,GAAG,CAAC,KAA8B,EAAE,EAAE,CAAC,CAC/D,8CACE,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,IAC9B,KAAK,cAET,iCACE,CAAC,EAAC,+kBAA+kB,EACjlB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,GAAG,EAChB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,IACE,CACP,CAAC;AACF,MAAM,gBAAgB,GAAG,IAAA,mBAAQ,EAAC,oBAAoB,CAAC,CAAC;AACxD,kBAAe,gBAAgB,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n// THIS FILE IS GENERATED BY BUILD TOOL\n// DO NOT EDIT IT MANUAL\nimport { wrapIcon } from '../../wrapIcon';\nimport { SVGProps } from 'react';\nconst SvgDatabaseCheckBase = (props: SVGProps<SVGSVGElement>) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M18.5 4.60774C18.5 6.71067 15.1421 8.41543 11 8.41543C6.85786 8.41543 3.5 6.71067 3.5 4.60774M18.5 4.60774C18.5 2.50481 15.1421 0.800049 11 0.800049C6.85786 0.800049 3.5 2.50481 3.5 4.60774M18.5 4.60774V8.06928M3.5 4.60774V14.9924C3.5 17.0953 6.5 19 10 19M3.5 4.60774V8.06928M18.5 11V8.06928M10 15.5C6.5 15.5 3.5 13.6337 3.5 11.5308V8.06928M18.5 8.06928C18.5 10.1722 15.1421 11.877 11 11.877C6.85786 11.877 3.5 10.1722 3.5 8.06928M16 18.875L17.125 20L19 17.375M22 18.5C22 20.9853 19.9853 23 17.5 23C15.0147 23 13 20.9853 13 18.5C13 16.0148 15.0147 14 17.5 14C19.9853 14 22 16.0148 22 18.5Z\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\nconst SvgDatabaseCheck = wrapIcon(SvgDatabaseCheckBase);\nexport default SvgDatabaseCheck;\n"]}
|
|
@@ -23,9 +23,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
exports.
|
|
28
|
-
exports.VisualizeBloomIcon = exports.VerticalBarIcon = exports.UserShieldIcon = exports.UnderlineIcon = exports.TriangleIcon = exports.ThreePanelIcon = exports.TextIcon = exports.TextFormatIcon = void 0;
|
|
26
|
+
exports.HierarchyTwoIcon = exports.HierarchyOneIcon = exports.HeartbeatIcon = exports.HeadsetIcon = exports.HandIcon = exports.GraphCrossIcon = exports.GraphBuilderIcon = exports.GlobePinIcon = exports.GithubIcon = exports.FunnelNavigateIcon = exports.FontSizeIcon = exports.FolderBookmarkIcon = exports.FloppyDiskIcon = exports.FitToScreenIcon = exports.ExternalLinkIcon = exports.ExploreIcon = exports.ExpandIcon = exports.ExpandLayersIcon = exports.DragIcon = exports.DocumentRefreshIcon = exports.DocumentIntelligenceIcon = exports.DividerSquareDashIcon = exports.DesktopSaveIcon = exports.DeploymentsIcon = exports.DatabaseSignalIcon = exports.DatabaseRoleIcon = exports.DatabasePlusIcon = exports.DatabasePlugIcon = exports.DatabaseCrossIcon = exports.DatabaseCheckIcon = exports.DataScienceIcon = exports.DataGridCrossIcon = exports.CurlyBracketsIcon = exports.ConfigureIcon = exports.CollapseLayersIcon = exports.CloudCrossIcon = exports.CloudCheckIcon = exports.CircleIcon = exports.ChipIcon = exports.CellDoubleClickIcon = exports.CellClickIcon = exports.BooleanIcon = exports.BoldIcon = exports.ArrowSendIcon = exports.AppearanceIcon = exports.AppGalleryIcon = exports.AlignTopIcon = exports.AlignCenterIcon = exports.AlignBottomIcon = exports.AddNodeIcon = void 0;
|
|
27
|
+
exports.SquareDashIcon = exports.SingleValueIcon = exports.ShrinkIcon = exports.SelectIcon = exports.RotateIcon = exports.RhombusIcon = exports.ResizeCornerIcon = exports.RelationshipClickIcon = exports.RelationshipAddIcon = exports.QuoteIcon = exports.QueryIcon = exports.QueryStreamIcon = exports.PresentationIcon = exports.PlanViewIcon = exports.PinIcon = exports.PanelRightIcon = exports.PanelRightExpandedIcon = exports.PanelRightCollapsedIcon = exports.PanelLeftIcon = exports.PanelLeftExpandedIcon = exports.PanelLeftExpandIcon = exports.PanelLeftCollapsedIcon = exports.PanelLeftCollapseIcon = exports.PanelBottomIcon = exports.OpenQueryTabIcon = exports.NomLevelIcon = exports.NodeClickIcon = exports.NodeAddIcon = exports.Neo4JLogoWhiteIcon = exports.Neo4JLogoColorIcon = exports.Neo4JLogoBlackIcon = exports.Neo4JIconWhiteIcon = exports.Neo4JIconColorIcon = exports.Neo4JIconBlackIcon = exports.Neo4JAiNeutralIcon = exports.MenuArrowRightIcon = exports.MenuArrowLeftIcon = exports.MemoryCardIcon = exports.MarkdownIcon = exports.MagnifyingGlassResetIcon = exports.LocationTargetIcon = exports.ListNumberIcon = exports.ListCheckIcon = exports.LayoutThreeSectionsIcon = exports.LayoutRightIcon = exports.LayoutLeftIcon = exports.LayoutBottomIcon = exports.LassoIcon = exports.ItalicIcon = exports.HorizontalBarIcon = void 0;
|
|
28
|
+
exports.VisualizeBloomIcon = exports.VerticalBarIcon = exports.UserShieldIcon = exports.UnderlineIcon = exports.TriangleIcon = exports.ThreePanelIcon = exports.TextIcon = exports.TextFormatIcon = exports.SquareIcon = void 0;
|
|
29
29
|
// THIS FILE IS GENERATED BY BUILD TOOL
|
|
30
30
|
// DO NOT EDIT IT MANUAL
|
|
31
31
|
var AddNode_1 = require("./AddNode");
|
|
@@ -68,6 +68,8 @@ var DataGridCross_1 = require("./DataGridCross");
|
|
|
68
68
|
Object.defineProperty(exports, "DataGridCrossIcon", { enumerable: true, get: function () { return __importDefault(DataGridCross_1).default; } });
|
|
69
69
|
var DataScience_1 = require("./DataScience");
|
|
70
70
|
Object.defineProperty(exports, "DataScienceIcon", { enumerable: true, get: function () { return __importDefault(DataScience_1).default; } });
|
|
71
|
+
var DatabaseCheck_1 = require("./DatabaseCheck");
|
|
72
|
+
Object.defineProperty(exports, "DatabaseCheckIcon", { enumerable: true, get: function () { return __importDefault(DatabaseCheck_1).default; } });
|
|
71
73
|
var DatabaseCross_1 = require("./DatabaseCross");
|
|
72
74
|
Object.defineProperty(exports, "DatabaseCrossIcon", { enumerable: true, get: function () { return __importDefault(DatabaseCross_1).default; } });
|
|
73
75
|
var DatabasePlug_1 = require("./DatabasePlug");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/icons/generated/custom/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n// THIS FILE IS GENERATED BY BUILD TOOL\n// DO NOT EDIT IT MANUAL\nexport { default as AddNodeIcon } from './AddNode';\nexport { default as AlignBottomIcon } from './AlignBottom';\nexport { default as AlignCenterIcon } from './AlignCenter';\nexport { default as AlignTopIcon } from './AlignTop';\nexport { default as AppGalleryIcon } from './AppGallery';\nexport { default as AppearanceIcon } from './Appearance';\nexport { default as ArrowSendIcon } from './ArrowSend';\nexport { default as BoldIcon } from './Bold';\nexport { default as BooleanIcon } from './Boolean';\nexport { default as CellClickIcon } from './CellClick';\nexport { default as CellDoubleClickIcon } from './CellDoubleClick';\nexport { default as ChipIcon } from './Chip';\nexport { default as CircleIcon } from './Circle';\nexport { default as CloudCheckIcon } from './CloudCheck';\nexport { default as CloudCrossIcon } from './CloudCross';\nexport { default as CollapseLayersIcon } from './CollapseLayers';\nexport { default as ConfigureIcon } from './Configure';\nexport { default as CurlyBracketsIcon } from './CurlyBrackets';\nexport { default as DataGridCrossIcon } from './DataGridCross';\nexport { default as DataScienceIcon } from './DataScience';\nexport { default as DatabaseCrossIcon } from './DatabaseCross';\nexport { default as DatabasePlugIcon } from './DatabasePlug';\nexport { default as DatabasePlusIcon } from './DatabasePlus';\nexport { default as DatabaseRoleIcon } from './DatabaseRole';\nexport { default as DatabaseSignalIcon } from './DatabaseSignal';\nexport { default as DeploymentsIcon } from './Deployments';\nexport { default as DesktopSaveIcon } from './DesktopSave';\nexport { default as DividerSquareDashIcon } from './DividerSquareDash';\nexport { default as DocumentIntelligenceIcon } from './DocumentIntelligence';\nexport { default as DocumentRefreshIcon } from './DocumentRefresh';\nexport { default as DragIcon } from './Drag';\nexport { default as ExpandLayersIcon } from './ExpandLayers';\nexport { default as ExpandIcon } from './Expand';\nexport { default as ExploreIcon } from './Explore';\nexport { default as ExternalLinkIcon } from './ExternalLink';\nexport { default as FitToScreenIcon } from './FitToScreen';\nexport { default as FloppyDiskIcon } from './FloppyDisk';\nexport { default as FolderBookmarkIcon } from './FolderBookmark';\nexport { default as FontSizeIcon } from './FontSize';\nexport { default as FunnelNavigateIcon } from './FunnelNavigate';\nexport { default as GithubIcon } from './Github';\nexport { default as GlobePinIcon } from './GlobePin';\nexport { default as GraphBuilderIcon } from './GraphBuilder';\nexport { default as GraphCrossIcon } from './GraphCross';\nexport { default as HandIcon } from './Hand';\nexport { default as HeadsetIcon } from './Headset';\nexport { default as HeartbeatIcon } from './Heartbeat';\nexport { default as HierarchyOneIcon } from './HierarchyOne';\nexport { default as HierarchyTwoIcon } from './HierarchyTwo';\nexport { default as HorizontalBarIcon } from './HorizontalBar';\nexport { default as ItalicIcon } from './Italic';\nexport { default as LassoIcon } from './Lasso';\nexport { default as LayoutBottomIcon } from './LayoutBottom';\nexport { default as LayoutLeftIcon } from './LayoutLeft';\nexport { default as LayoutRightIcon } from './LayoutRight';\nexport { default as LayoutThreeSectionsIcon } from './LayoutThreeSections';\nexport { default as ListCheckIcon } from './ListCheck';\nexport { default as ListNumberIcon } from './ListNumber';\nexport { default as LocationTargetIcon } from './LocationTarget';\nexport { default as MagnifyingGlassResetIcon } from './MagnifyingGlassReset';\nexport { default as MarkdownIcon } from './Markdown';\nexport { default as MemoryCardIcon } from './MemoryCard';\nexport { default as MenuArrowLeftIcon } from './MenuArrowLeft';\nexport { default as MenuArrowRightIcon } from './MenuArrowRight';\nexport { default as Neo4JAiNeutralIcon } from './Neo4JAiNeutral';\nexport { default as Neo4JIconBlackIcon } from './Neo4JIconBlack';\nexport { default as Neo4JIconColorIcon } from './Neo4JIconColor';\nexport { default as Neo4JIconWhiteIcon } from './Neo4JIconWhite';\nexport { default as Neo4JLogoBlackIcon } from './Neo4JLogoBlack';\nexport { default as Neo4JLogoColorIcon } from './Neo4JLogoColor';\nexport { default as Neo4JLogoWhiteIcon } from './Neo4JLogoWhite';\nexport { default as NodeAddIcon } from './NodeAdd';\nexport { default as NodeClickIcon } from './NodeClick';\nexport { default as NomLevelIcon } from './NomLevel';\nexport { default as OpenQueryTabIcon } from './OpenQueryTab';\nexport { default as PanelBottomIcon } from './PanelBottom';\nexport { default as PanelLeftCollapseIcon } from './PanelLeftCollapse';\nexport { default as PanelLeftCollapsedIcon } from './PanelLeftCollapsed';\nexport { default as PanelLeftExpandIcon } from './PanelLeftExpand';\nexport { default as PanelLeftExpandedIcon } from './PanelLeftExpanded';\nexport { default as PanelLeftIcon } from './PanelLeft';\nexport { default as PanelRightCollapsedIcon } from './PanelRightCollapsed';\nexport { default as PanelRightExpandedIcon } from './PanelRightExpanded';\nexport { default as PanelRightIcon } from './PanelRight';\nexport { default as PinIcon } from './Pin';\nexport { default as PlanViewIcon } from './PlanView';\nexport { default as PresentationIcon } from './Presentation';\nexport { default as QueryStreamIcon } from './QueryStream';\nexport { default as QueryIcon } from './Query';\nexport { default as QuoteIcon } from './Quote';\nexport { default as RelationshipAddIcon } from './RelationshipAdd';\nexport { default as RelationshipClickIcon } from './RelationshipClick';\nexport { default as ResizeCornerIcon } from './ResizeCorner';\nexport { default as RhombusIcon } from './Rhombus';\nexport { default as RotateIcon } from './Rotate';\nexport { default as SelectIcon } from './Select';\nexport { default as ShrinkIcon } from './Shrink';\nexport { default as SingleValueIcon } from './SingleValue';\nexport { default as SquareDashIcon } from './SquareDash';\nexport { default as SquareIcon } from './Square';\nexport { default as TextFormatIcon } from './TextFormat';\nexport { default as TextIcon } from './Text';\nexport { default as ThreePanelIcon } from './ThreePanel';\nexport { default as TriangleIcon } from './Triangle';\nexport { default as UnderlineIcon } from './Underline';\nexport { default as UserShieldIcon } from './UserShield';\nexport { default as VerticalBarIcon } from './VerticalBar';\nexport { default as VisualizeBloomIcon } from './VisualizeBloom';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/icons/generated/custom/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;AAEH,uCAAuC;AACvC,wBAAwB;AACxB,qCAAmD;AAA1C,uHAAA,OAAO,OAAe;AAC/B,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,uCAAqD;AAA5C,yHAAA,OAAO,OAAgB;AAChC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,+BAA6C;AAApC,iHAAA,OAAO,OAAY;AAC5B,qCAAmD;AAA1C,uHAAA,OAAO,OAAe;AAC/B,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,qDAAmE;AAA1D,uIAAA,OAAO,OAAuB;AACvC,+BAA6C;AAApC,iHAAA,OAAO,OAAY;AAC5B,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,iDAA+D;AAAtD,mIAAA,OAAO,OAAqB;AACrC,iDAA+D;AAAtD,mIAAA,OAAO,OAAqB;AACrC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,iDAA+D;AAAtD,mIAAA,OAAO,OAAqB;AACrC,iDAA+D;AAAtD,mIAAA,OAAO,OAAqB;AACrC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,yDAAuE;AAA9D,2IAAA,OAAO,OAAyB;AACzC,+DAA6E;AAApE,iJAAA,OAAO,OAA4B;AAC5C,qDAAmE;AAA1D,uIAAA,OAAO,OAAuB;AACvC,+BAA6C;AAApC,iHAAA,OAAO,OAAY;AAC5B,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,qCAAmD;AAA1C,uHAAA,OAAO,OAAe;AAC/B,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,uCAAqD;AAA5C,yHAAA,OAAO,OAAgB;AAChC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,uCAAqD;AAA5C,yHAAA,OAAO,OAAgB;AAChC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,+BAA6C;AAApC,iHAAA,OAAO,OAAY;AAC5B,qCAAmD;AAA1C,uHAAA,OAAO,OAAe;AAC/B,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,iDAA+D;AAAtD,mIAAA,OAAO,OAAqB;AACrC,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,iCAA+C;AAAtC,mHAAA,OAAO,OAAa;AAC7B,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,6DAA2E;AAAlE,+IAAA,OAAO,OAA2B;AAC3C,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,+DAA6E;AAApE,iJAAA,OAAO,OAA4B;AAC5C,uCAAqD;AAA5C,yHAAA,OAAO,OAAgB;AAChC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,iDAA+D;AAAtD,mIAAA,OAAO,OAAqB;AACrC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB;AACtC,qCAAmD;AAA1C,uHAAA,OAAO,OAAe;AAC/B,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,uCAAqD;AAA5C,yHAAA,OAAO,OAAgB;AAChC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,yDAAuE;AAA9D,2IAAA,OAAO,OAAyB;AACzC,2DAAyE;AAAhE,6IAAA,OAAO,OAA0B;AAC1C,qDAAmE;AAA1D,uIAAA,OAAO,OAAuB;AACvC,yDAAuE;AAA9D,2IAAA,OAAO,OAAyB;AACzC,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,6DAA2E;AAAlE,+IAAA,OAAO,OAA2B;AAC3C,2DAAyE;AAAhE,6IAAA,OAAO,OAA0B;AAC1C,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,6BAA2C;AAAlC,+GAAA,OAAO,OAAW;AAC3B,uCAAqD;AAA5C,yHAAA,OAAO,OAAgB;AAChC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,iCAA+C;AAAtC,mHAAA,OAAO,OAAa;AAC7B,iCAA+C;AAAtC,mHAAA,OAAO,OAAa;AAC7B,qDAAmE;AAA1D,uIAAA,OAAO,OAAuB;AACvC,yDAAuE;AAA9D,2IAAA,OAAO,OAAyB;AACzC,+CAA6D;AAApD,iIAAA,OAAO,OAAoB;AACpC,qCAAmD;AAA1C,uHAAA,OAAO,OAAe;AAC/B,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,mCAAiD;AAAxC,qHAAA,OAAO,OAAc;AAC9B,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,+BAA6C;AAApC,iHAAA,OAAO,OAAY;AAC5B,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,uCAAqD;AAA5C,yHAAA,OAAO,OAAgB;AAChC,yCAAuD;AAA9C,2HAAA,OAAO,OAAiB;AACjC,2CAAyD;AAAhD,6HAAA,OAAO,OAAkB;AAClC,6CAA2D;AAAlD,+HAAA,OAAO,OAAmB;AACnC,mDAAiE;AAAxD,qIAAA,OAAO,OAAsB","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n// THIS FILE IS GENERATED BY BUILD TOOL\n// DO NOT EDIT IT MANUAL\nexport { default as AddNodeIcon } from './AddNode';\nexport { default as AlignBottomIcon } from './AlignBottom';\nexport { default as AlignCenterIcon } from './AlignCenter';\nexport { default as AlignTopIcon } from './AlignTop';\nexport { default as AppGalleryIcon } from './AppGallery';\nexport { default as AppearanceIcon } from './Appearance';\nexport { default as ArrowSendIcon } from './ArrowSend';\nexport { default as BoldIcon } from './Bold';\nexport { default as BooleanIcon } from './Boolean';\nexport { default as CellClickIcon } from './CellClick';\nexport { default as CellDoubleClickIcon } from './CellDoubleClick';\nexport { default as ChipIcon } from './Chip';\nexport { default as CircleIcon } from './Circle';\nexport { default as CloudCheckIcon } from './CloudCheck';\nexport { default as CloudCrossIcon } from './CloudCross';\nexport { default as CollapseLayersIcon } from './CollapseLayers';\nexport { default as ConfigureIcon } from './Configure';\nexport { default as CurlyBracketsIcon } from './CurlyBrackets';\nexport { default as DataGridCrossIcon } from './DataGridCross';\nexport { default as DataScienceIcon } from './DataScience';\nexport { default as DatabaseCheckIcon } from './DatabaseCheck';\nexport { default as DatabaseCrossIcon } from './DatabaseCross';\nexport { default as DatabasePlugIcon } from './DatabasePlug';\nexport { default as DatabasePlusIcon } from './DatabasePlus';\nexport { default as DatabaseRoleIcon } from './DatabaseRole';\nexport { default as DatabaseSignalIcon } from './DatabaseSignal';\nexport { default as DeploymentsIcon } from './Deployments';\nexport { default as DesktopSaveIcon } from './DesktopSave';\nexport { default as DividerSquareDashIcon } from './DividerSquareDash';\nexport { default as DocumentIntelligenceIcon } from './DocumentIntelligence';\nexport { default as DocumentRefreshIcon } from './DocumentRefresh';\nexport { default as DragIcon } from './Drag';\nexport { default as ExpandLayersIcon } from './ExpandLayers';\nexport { default as ExpandIcon } from './Expand';\nexport { default as ExploreIcon } from './Explore';\nexport { default as ExternalLinkIcon } from './ExternalLink';\nexport { default as FitToScreenIcon } from './FitToScreen';\nexport { default as FloppyDiskIcon } from './FloppyDisk';\nexport { default as FolderBookmarkIcon } from './FolderBookmark';\nexport { default as FontSizeIcon } from './FontSize';\nexport { default as FunnelNavigateIcon } from './FunnelNavigate';\nexport { default as GithubIcon } from './Github';\nexport { default as GlobePinIcon } from './GlobePin';\nexport { default as GraphBuilderIcon } from './GraphBuilder';\nexport { default as GraphCrossIcon } from './GraphCross';\nexport { default as HandIcon } from './Hand';\nexport { default as HeadsetIcon } from './Headset';\nexport { default as HeartbeatIcon } from './Heartbeat';\nexport { default as HierarchyOneIcon } from './HierarchyOne';\nexport { default as HierarchyTwoIcon } from './HierarchyTwo';\nexport { default as HorizontalBarIcon } from './HorizontalBar';\nexport { default as ItalicIcon } from './Italic';\nexport { default as LassoIcon } from './Lasso';\nexport { default as LayoutBottomIcon } from './LayoutBottom';\nexport { default as LayoutLeftIcon } from './LayoutLeft';\nexport { default as LayoutRightIcon } from './LayoutRight';\nexport { default as LayoutThreeSectionsIcon } from './LayoutThreeSections';\nexport { default as ListCheckIcon } from './ListCheck';\nexport { default as ListNumberIcon } from './ListNumber';\nexport { default as LocationTargetIcon } from './LocationTarget';\nexport { default as MagnifyingGlassResetIcon } from './MagnifyingGlassReset';\nexport { default as MarkdownIcon } from './Markdown';\nexport { default as MemoryCardIcon } from './MemoryCard';\nexport { default as MenuArrowLeftIcon } from './MenuArrowLeft';\nexport { default as MenuArrowRightIcon } from './MenuArrowRight';\nexport { default as Neo4JAiNeutralIcon } from './Neo4JAiNeutral';\nexport { default as Neo4JIconBlackIcon } from './Neo4JIconBlack';\nexport { default as Neo4JIconColorIcon } from './Neo4JIconColor';\nexport { default as Neo4JIconWhiteIcon } from './Neo4JIconWhite';\nexport { default as Neo4JLogoBlackIcon } from './Neo4JLogoBlack';\nexport { default as Neo4JLogoColorIcon } from './Neo4JLogoColor';\nexport { default as Neo4JLogoWhiteIcon } from './Neo4JLogoWhite';\nexport { default as NodeAddIcon } from './NodeAdd';\nexport { default as NodeClickIcon } from './NodeClick';\nexport { default as NomLevelIcon } from './NomLevel';\nexport { default as OpenQueryTabIcon } from './OpenQueryTab';\nexport { default as PanelBottomIcon } from './PanelBottom';\nexport { default as PanelLeftCollapseIcon } from './PanelLeftCollapse';\nexport { default as PanelLeftCollapsedIcon } from './PanelLeftCollapsed';\nexport { default as PanelLeftExpandIcon } from './PanelLeftExpand';\nexport { default as PanelLeftExpandedIcon } from './PanelLeftExpanded';\nexport { default as PanelLeftIcon } from './PanelLeft';\nexport { default as PanelRightCollapsedIcon } from './PanelRightCollapsed';\nexport { default as PanelRightExpandedIcon } from './PanelRightExpanded';\nexport { default as PanelRightIcon } from './PanelRight';\nexport { default as PinIcon } from './Pin';\nexport { default as PlanViewIcon } from './PlanView';\nexport { default as PresentationIcon } from './Presentation';\nexport { default as QueryStreamIcon } from './QueryStream';\nexport { default as QueryIcon } from './Query';\nexport { default as QuoteIcon } from './Quote';\nexport { default as RelationshipAddIcon } from './RelationshipAdd';\nexport { default as RelationshipClickIcon } from './RelationshipClick';\nexport { default as ResizeCornerIcon } from './ResizeCorner';\nexport { default as RhombusIcon } from './Rhombus';\nexport { default as RotateIcon } from './Rotate';\nexport { default as SelectIcon } from './Select';\nexport { default as ShrinkIcon } from './Shrink';\nexport { default as SingleValueIcon } from './SingleValue';\nexport { default as SquareDashIcon } from './SquareDash';\nexport { default as SquareIcon } from './Square';\nexport { default as TextFormatIcon } from './TextFormat';\nexport { default as TextIcon } from './Text';\nexport { default as ThreePanelIcon } from './ThreePanel';\nexport { default as TriangleIcon } from './Triangle';\nexport { default as UnderlineIcon } from './Underline';\nexport { default as UserShieldIcon } from './UserShield';\nexport { default as VerticalBarIcon } from './VerticalBar';\nexport { default as VisualizeBloomIcon } from './VisualizeBloom';\n"]}
|