airdcpp-webui 2.12.1-beta.4 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/index.html +1 -1
  2. package/dist/js/{236.c033545917799459b3a4.chunk.js → 236.6b4fd58c10a23138b7d8.chunk.js} +2 -2
  3. package/dist/js/236.6b4fd58c10a23138b7d8.chunk.js.gz +0 -0
  4. package/dist/js/236.6b4fd58c10a23138b7d8.chunk.js.map +1 -0
  5. package/dist/js/{hubs.51fd0b03ed33f0a82f58.chunk.js → hubs.c21b941c411425d4852f.chunk.js} +2 -2
  6. package/dist/js/hubs.c21b941c411425d4852f.chunk.js.gz +0 -0
  7. package/dist/js/hubs.c21b941c411425d4852f.chunk.js.map +1 -0
  8. package/dist/js/main.7a746a54efc4bf96cd20.entry.js +3 -0
  9. package/dist/js/{main.0f999b49d5abcf2b50b2.entry.js.LICENSE.txt → main.7a746a54efc4bf96cd20.entry.js.LICENSE.txt} +3 -3
  10. package/dist/js/main.7a746a54efc4bf96cd20.entry.js.gz +0 -0
  11. package/dist/js/main.7a746a54efc4bf96cd20.entry.js.map +1 -0
  12. package/dist/js/{messages.3cd02d9105ea80abf5df.chunk.js → messages.6ed02d7d7ec7e06a93f2.chunk.js} +2 -2
  13. package/dist/js/messages.6ed02d7d7ec7e06a93f2.chunk.js.gz +0 -0
  14. package/dist/js/{messages.3cd02d9105ea80abf5df.chunk.js.map → messages.6ed02d7d7ec7e06a93f2.chunk.js.map} +1 -1
  15. package/dist/js/settings.a509b3c48b03452b6783.chunk.js +2 -0
  16. package/dist/js/settings.a509b3c48b03452b6783.chunk.js.gz +0 -0
  17. package/dist/js/settings.a509b3c48b03452b6783.chunk.js.map +1 -0
  18. package/dist/sw.js +1 -1
  19. package/dist/sw.js.gz +0 -0
  20. package/package.json +1 -1
  21. package/dist/js/236.c033545917799459b3a4.chunk.js.gz +0 -0
  22. package/dist/js/236.c033545917799459b3a4.chunk.js.map +0 -1
  23. package/dist/js/hubs.51fd0b03ed33f0a82f58.chunk.js.gz +0 -0
  24. package/dist/js/hubs.51fd0b03ed33f0a82f58.chunk.js.map +0 -1
  25. package/dist/js/main.0f999b49d5abcf2b50b2.entry.js +0 -3
  26. package/dist/js/main.0f999b49d5abcf2b50b2.entry.js.gz +0 -0
  27. package/dist/js/main.0f999b49d5abcf2b50b2.entry.js.map +0 -1
  28. package/dist/js/messages.3cd02d9105ea80abf5df.chunk.js.gz +0 -0
  29. package/dist/js/settings.10689d2c4c40b7e4b769.chunk.js +0 -2
  30. package/dist/js/settings.10689d2c4c40b7e4b769.chunk.js.gz +0 -0
  31. package/dist/js/settings.10689d2c4c40b7e4b769.chunk.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/236.6b4fd58c10a23138b7d8.chunk.js","mappings":"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S,sBACR,CACDD,KAAM,KACNC,QAAS,wBACR,CACDD,KAAM,IACNC,QAAS,idACR,CACDD,KAAM,IACNC,QAAS,uHACR,CACDD,KAAM,KACNC,QAAS,wBACR,CACDD,KAAM,IACNC,QAAS,oJACR,CACDD,KAAM,IACNC,QAAS,8EACR,CACDD,KAAM,IACNC,QAAS,oNACR,CACDD,KAAM,IACNC,QAAS,0MACR,CACDD,KAAM,IACNC,QAAS,keACR,CACDD,KAAM,KACNC,QAAS,wBACR,CACDD,KAAM,KACNC,QAAS,gDACR,CACDD,KAAM,KACNC,QAAS,wBACR,CACDD,KAAM,KACNC,QAAS,wBACR,CACDD,KAAM,KACNC,QAAS,uCACR,CACDD,KAAM,KACNC,QAAS,wBACR,CACDD,KAAM,IACNC,QAAS,mIACR,CACDD,KAAM,IACNC,QAAS,wLACR,CACDD,KAAM,IACNC,QAAS,sNACR,CACDD,KAAM,KACNC,QAAS,mCACR,CACDD,KAAM,IACNC,QAAS,4aACR,CACDD,KAAM,IACNC,QAAS,6FACR,CACDD,KAAM,IACNC,QAAS,qNACR,CACDD,KAAM,IACNC,QAAS,yNACR,CACDD,KAAM,KACNC,QAAS,sBACR,CACDD,KAAM,IACNC,QAAS,oRACR,CACDD,KAAM,KACNC,QAAS,sBACR,CACDD,KAAM,IACNC,QAAS,0FACR,CACDD,KAAM,IACNC,QAAS,+MACR,CACDD,KAAM,IACNC,QAAS,kQACR,CACDD,KAAM,KACNC,QAAS,sBACR,CACDD,KAAM,IACNC,QAAS,uHACR,CACDD,KAAM,IACNC,QAAS,8PACR,CACDD,KAAM,KACNC,QAAS,sBACR,CACDD,KAAM,IACNC,QAAS,+kBACR,CACDD,KAAM,KACNC,QAAS,sBACR,CACDD,KAAM,KACNC,QAAS,sBACR,CACDD,KAAM,KACNC,QAAS,sBACR,CACDD,KAAM,KACNC,QAAS,wBACR,CACDD,KAAM,IACNC,QAAS,uJACR,CACDD,KAAM,IACNC,QAAS,8FACR,CACDD,KAAM,IACNC,QAAS,mPACR,CACDD,KAAM,IACNC,QAAS,gQACR,CACDD,KAAM,KACN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","sources":["webpack://airdcpp-webui/./node_modules/attr-accept/dist/es/index.js","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/chat.css","webpack://airdcpp-webui/./src/actions/ui/decorators/ChatActionDecorator.ts","webpack://airdcpp-webui/./src/components/EncryptionState.tsx","webpack://airdcpp-webui/./src/components/file-preview/decorators/MediaFileDecorator.tsx","webpack://airdcpp-webui/./src/components/file-preview/AudioFile.tsx","webpack://airdcpp-webui/./src/components/file-preview/ImageFile.tsx","webpack://airdcpp-webui/./src/components/file-preview/TextFile.tsx","webpack://airdcpp-webui/./src/components/file-preview/VideoFile.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/components/RecentLayout.tsx","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://airdcpp-webui/./node_modules/substyle/es6/utils.js","webpack://airdcpp-webui/./node_modules/substyle/es6/filterKeys.js","webpack://airdcpp-webui/./node_modules/substyle/es6/pickStyles.js","webpack://airdcpp-webui/./node_modules/substyle/es6/defaultPropsDecorator.js","webpack://airdcpp-webui/./node_modules/substyle/es6/PropsDecoratorProvider.js","webpack://airdcpp-webui/./node_modules/substyle/es6/coerceSelection.js","webpack://airdcpp-webui/./node_modules/substyle/es6/memoize.js","webpack://airdcpp-webui/./node_modules/substyle/es6/createSubstyle.js","webpack://airdcpp-webui/./node_modules/substyle/es6/index.js","webpack://airdcpp-webui/./node_modules/substyle/es6/useStyles.js","webpack://airdcpp-webui/./node_modules/substyle/es6/inline.js","webpack://airdcpp-webui/./node_modules/react-mentions/dist/react-mentions.esm.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://airdcpp-webui/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://airdcpp-webui/./node_modules/tslib/tslib.es6.mjs","webpack://airdcpp-webui/./node_modules/file-selector/dist/es5/file.js","webpack://airdcpp-webui/./node_modules/file-selector/dist/es5/file-selector.js","webpack://airdcpp-webui/./node_modules/react-dropzone/dist/es/utils/index.js","webpack://airdcpp-webui/./node_modules/react-dropzone/dist/es/index.js","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/FilePreviewDialog.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/TempShareDropdown.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/ChatCommandHandler.ts","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/effects/useMessageComposer.ts","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/MessageComposer.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/effects/useChatFileUploader.ts","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/chat.css?ffd6","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/ChatLayout.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/components/chat/effects/useChatMessages.ts","webpack://airdcpp-webui/./src/services/HttpService.ts","webpack://airdcpp-webui/./src/services/api/ShareApi.ts","webpack://airdcpp-webui/./src/stores/decorators/MessageStoreDecorator.ts"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* Layout */\n\n.chat.session,\n.chat.session .message-view {\n flex: 100 100 0%;\n display: flex;\n flex-direction: column;\n overflow-y: hidden;\n}\n\n.chat.session .message-list {\n margin: 10px 10px 10px 0px;\n}\n\n.chat.session .message-view > .ui.message {\n margin: 10px 0px 0px 0px;\n}\n\n/* Composer */\n.chat.session .composer {\n display: flex;\n}\n\n.chat.session .composer:focus {\n outline: none;\n}\n\n.chat.session .composer textarea,\n.chat.session .composer textarea:focus {\n resize: none;\n border-radius: 0.28571429rem 0 0 0.28571429rem;\n margin-left: 1px;\n}\n\n.chat.session .composer .button {\n border-radius: 0 0.28571429rem 0.28571429rem 0;\n width: 45px;\n margin: 0px;\n}\n\n.chat.session .composer.large .actions.button .caption {\n display: flex !important;\n align-items: center !important;\n opacity: 0.9;\n}\n\n#mobile-layout .chat.session .composer > .input {\n width: 100%;\n}\n\n#normal-layout .chat.session .composer > .input {\n /* Leave some empty space to the right for better styling with ugly native scrollbars (especially with Firefox) */\n width: calc(100% - 60px);\n}\n\n/* Messages common */\n.chat.session .item .time {\n float: right;\n color: lightgray;\n font-size: small;\n}\n\n.chat.session .status.item > .text,\n.chat.session .chat.item .left > .text {\n /* Avoid cutting text from the bottom with certain browser because of \"overflow: hidden\" */\n line-height: initial !important;\n\n overflow: hidden;\n white-space: pre-wrap;\n flex: 1;\n}\n\n/* Chat messages */\n.chat.session .chat.item {\n margin-top: 5px;\n}\n\n.chat.session .chat.item .author {\n float: left;\n}\n\n.chat.session .chat.item .left {\n display: flex;\n}\n\n.chat.session .chat.item .left:not(.third-person) {\n flex-direction: column;\n}\n\n.chat.session .chat.item .left.third-person > .text {\n float: left;\n margin-left: 3px;\n}\n\n.chat.session .chat.item img {\n vertical-align: middle;\n}\n\n.chat.session .chat.item .third-person .author .ui.dropdown {\n margin-left: 3px;\n}\n\n.chat.session .chat.item .author .caption {\n color: steelblue !important;\n}\n\n.chat.session .chat.item.op .author .caption {\n color: darkgoldenrod !important;\n}\n\n.chat.session .chat.item.self .author .caption {\n color: black !important;\n}\n\n.chat.session .chat.item.bot .author .caption {\n color: rgba(0, 0, 0, 0.4) !important;\n}\n\n/* Status messages */\n.chat.session .status.item {\n width: 100%;\n display: flex !important;\n flex-direction: row-reverse;\n}\n\n.chat.session .status.item > .text {\n font-size: small;\n color: rgba(0, 0, 0, 0.5);\n float: left;\n}\n\n.chat.session .status.item i {\n display: none !important;\n}\n\n.chat.session .status.item.verbose > .text {\n color: rgba(0, 0, 0, 0.4);\n font-size: x-small;\n}\n\n.chat.session .status.item.warning > .text {\n color: orange;\n}\n\n.chat.session .status.item.error > .text {\n color: red;\n}\n\n.chat.session .status.item.system > .text,\n.chat.session .status.item.history > .text {\n font-style: italic;\n font-size: 85%;\n}\n\n.chat.session .status.item.private > .text {\n color: black;\n font-size: 85%;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/Sidebar/components/chat/chat.css\"],\"names\":[],\"mappings\":\"AAAA,WAAW;;AAEX;;EAEE,gBAAgB;EAChB,aAAa;EACb,sBAAsB;EACtB,kBAAkB;AACpB;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,wBAAwB;AAC1B;;AAEA,aAAa;AACb;EACE,aAAa;AACf;;AAEA;EACE,aAAa;AACf;;AAEA;;EAEE,YAAY;EACZ,8CAA8C;EAC9C,gBAAgB;AAClB;;AAEA;EACE,8CAA8C;EAC9C,WAAW;EACX,WAAW;AACb;;AAEA;EACE,wBAAwB;EACxB,8BAA8B;EAC9B,YAAY;AACd;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,iHAAiH;EACjH,wBAAwB;AAC1B;;AAEA,oBAAoB;AACpB;EACE,YAAY;EACZ,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;;EAEE,0FAA0F;EAC1F,+BAA+B;;EAE/B,gBAAgB;EAChB,qBAAqB;EACrB,OAAO;AACT;;AAEA,kBAAkB;AAClB;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,uBAAuB;AACzB;;AAEA;EACE,oCAAoC;AACtC;;AAEA,oBAAoB;AACpB;EACE,WAAW;EACX,wBAAwB;EACxB,2BAA2B;AAC7B;;AAEA;EACE,gBAAgB;EAChB,yBAAyB;EACzB,WAAW;AACb;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,yBAAyB;EACzB,kBAAkB;AACpB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,UAAU;AACZ;;AAEA;;EAEE,kBAAkB;EAClB,cAAc;AAChB;;AAEA;EACE,YAAY;EACZ,cAAc;AAChB\",\"sourcesContent\":[\"/* Layout */\\n\\n.chat.session,\\n.chat.session .message-view {\\n flex: 100 100 0%;\\n display: flex;\\n flex-direction: column;\\n overflow-y: hidden;\\n}\\n\\n.chat.session .message-list {\\n margin: 10px 10px 10px 0px;\\n}\\n\\n.chat.session .message-view > .ui.message {\\n margin: 10px 0px 0px 0px;\\n}\\n\\n/* Composer */\\n.chat.session .composer {\\n display: flex;\\n}\\n\\n.chat.session .composer:focus {\\n outline: none;\\n}\\n\\n.chat.session .composer textarea,\\n.chat.session .composer textarea:focus {\\n resize: none;\\n border-radius: 0.28571429rem 0 0 0.28571429rem;\\n margin-left: 1px;\\n}\\n\\n.chat.session .composer .button {\\n border-radius: 0 0.28571429rem 0.28571429rem 0;\\n width: 45px;\\n margin: 0px;\\n}\\n\\n.chat.session .composer.large .actions.button .caption {\\n display: flex !important;\\n align-items: center !important;\\n opacity: 0.9;\\n}\\n\\n#mobile-layout .chat.session .composer > .input {\\n width: 100%;\\n}\\n\\n#normal-layout .chat.session .composer > .input {\\n /* Leave some empty space to the right for better styling with ugly native scrollbars (especially with Firefox) */\\n width: calc(100% - 60px);\\n}\\n\\n/* Messages common */\\n.chat.session .item .time {\\n float: right;\\n color: lightgray;\\n font-size: small;\\n}\\n\\n.chat.session .status.item > .text,\\n.chat.session .chat.item .left > .text {\\n /* Avoid cutting text from the bottom with certain browser because of \\\"overflow: hidden\\\" */\\n line-height: initial !important;\\n\\n overflow: hidden;\\n white-space: pre-wrap;\\n flex: 1;\\n}\\n\\n/* Chat messages */\\n.chat.session .chat.item {\\n margin-top: 5px;\\n}\\n\\n.chat.session .chat.item .author {\\n float: left;\\n}\\n\\n.chat.session .chat.item .left {\\n display: flex;\\n}\\n\\n.chat.session .chat.item .left:not(.third-person) {\\n flex-direction: column;\\n}\\n\\n.chat.session .chat.item .left.third-person > .text {\\n float: left;\\n margin-left: 3px;\\n}\\n\\n.chat.session .chat.item img {\\n vertical-align: middle;\\n}\\n\\n.chat.session .chat.item .third-person .author .ui.dropdown {\\n margin-left: 3px;\\n}\\n\\n.chat.session .chat.item .author .caption {\\n color: steelblue !important;\\n}\\n\\n.chat.session .chat.item.op .author .caption {\\n color: darkgoldenrod !important;\\n}\\n\\n.chat.session .chat.item.self .author .caption {\\n color: black !important;\\n}\\n\\n.chat.session .chat.item.bot .author .caption {\\n color: rgba(0, 0, 0, 0.4) !important;\\n}\\n\\n/* Status messages */\\n.chat.session .status.item {\\n width: 100%;\\n display: flex !important;\\n flex-direction: row-reverse;\\n}\\n\\n.chat.session .status.item > .text {\\n font-size: small;\\n color: rgba(0, 0, 0, 0.5);\\n float: left;\\n}\\n\\n.chat.session .status.item i {\\n display: none !important;\\n}\\n\\n.chat.session .status.item.verbose > .text {\\n color: rgba(0, 0, 0, 0.4);\\n font-size: x-small;\\n}\\n\\n.chat.session .status.item.warning > .text {\\n color: orange;\\n}\\n\\n.chat.session .status.item.error > .text {\\n color: red;\\n}\\n\\n.chat.session .status.item.system > .text,\\n.chat.session .status.item.history > .text {\\n font-style: italic;\\n font-size: 85%;\\n}\\n\\n.chat.session .status.item.private > .text {\\n color: black;\\n font-size: 85%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import SocketService from 'services/SocketService';\r\n\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\ntype SessionType = UI.SessionItemBase;\r\n\r\nexport const BuildClearChatAction = (sessionUrl: string, editAccess: API.AccessEnum) => {\r\n const handleClear: UI.ActionHandler<SessionType> = ({ itemData: session }) => {\r\n return SocketService.delete(`${sessionUrl}/${session.id}/messages`);\r\n };\r\n\r\n const ClearChatAction = {\r\n id: 'clear',\r\n displayName: 'Clear chat',\r\n access: editAccess,\r\n icon: IconConstants.CLEAR,\r\n handler: handleClear,\r\n };\r\n\r\n return ClearChatAction;\r\n};\r\n","import PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport Popup from 'components/semantic/Popup';\n\nimport * as API from 'types/api';\nimport * as UI from 'types/ui';\n\nimport { Trans } from 'react-i18next';\nimport { toI18nKey } from 'utils/TranslationUtils';\nimport Icon from './semantic/Icon';\nimport IconConstants from 'constants/IconConstants';\n\ninterface Info {\n iconColor: string;\n messageColor: string;\n message: string;\n cornerIcon: string;\n translationKey: string;\n}\n\nconst encryptionToInfo = (encryption: API.EncryptionInfo): Info => {\n const tlsVersion = encryption.str.match(/TLSv([\\d.]+)/);\n if (tlsVersion && tlsVersion.length === 2 && parseFloat(tlsVersion[1]) < 1.2) {\n return {\n iconColor: 'orange',\n messageColor: 'red',\n message: 'Outdated cryptographic protocol with known security vulnerabilities',\n cornerIcon: 'orange warning',\n translationKey: 'tlsOutdatedWarning',\n };\n }\n\n if (!encryption.trusted) {\n return {\n iconColor: 'yellow',\n messageColor: 'orange',\n message: 'Authenticity of the certificate could not be validated',\n cornerIcon: 'blue help',\n translationKey: 'tlsAuthenticityWarning',\n };\n }\n\n return {\n iconColor: 'green',\n messageColor: 'green',\n message: 'Authenticity of the certificate is validated',\n cornerIcon: '',\n translationKey: 'tlsOk',\n };\n};\n\ninterface InfoMessageProps {\n info: Info;\n encryption: API.EncryptionInfo;\n}\n\nconst InfoMessage: React.FC<InfoMessageProps> = ({ info, encryption }) => (\n <div>\n <p>{encryption.str}</p>\n <p style={{ color: info.messageColor }}>\n <Trans i18nKey={toI18nKey(info.translationKey, UI.Modules.COMMON)}>\n {info.message}\n </Trans>\n </p>\n </div>\n);\n\ninterface EncryptionStateProps\n extends Partial<Pick<SemanticUI.PopupSettings, 'boundary'>> {\n encryption?: API.EncryptionInfo;\n alwaysVisible?: boolean;\n}\n\nclass EncryptionState extends React.PureComponent<EncryptionStateProps> {\n static propTypes = {\n encryption: PropTypes.object,\n boundary: PropTypes.string,\n\n // Show the lock icon even when there is no encryption\n alwaysVisible: PropTypes.bool,\n };\n\n getChildren = () => {\n const { encryption } = this.props;\n\n const info = encryptionToInfo(encryption!);\n return <InfoMessage info={info} encryption={encryption!} />;\n };\n\n render() {\n const { encryption, alwaysVisible, boundary } = this.props;\n if (!encryption) {\n return !!alwaysVisible && <Icon color=\"grey\" icon={IconConstants.LOCK} />;\n }\n\n const info = encryptionToInfo(encryption);\n return (\n <Popup\n triggerClassName=\"encryption\"\n className=\"basic encryption content\"\n trigger={\n <Icon\n color={info.iconColor}\n icon={IconConstants.LOCK}\n cornerIcon={info.cornerIcon}\n />\n }\n settings={\n {\n boundary,\n } as SemanticUI.PopupSettings\n }\n >\n {this.getChildren}\n </Popup>\n );\n }\n}\n\nexport default EncryptionState;\n","import * as React from 'react';\n\nconst formatMediaError = (event: React.SyntheticEvent<HTMLMediaElement>) => {\n const error: MediaError = (event.target as any).error;\n switch (error.code) {\n case error.MEDIA_ERR_NETWORK:\n return 'A network error caused the media download to fail';\n case error.MEDIA_ERR_DECODE:\n // eslint-disable-next-line max-len\n return 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support';\n case error.MEDIA_ERR_SRC_NOT_SUPPORTED:\n // eslint-disable-next-line max-len\n return 'The media could not be loaded, either because the file was not found, network failed or because the format is not supported by your browser';\n default:\n return 'An unknown media error occurred';\n }\n};\n\nexport interface MediaFileDecoratorChildProps\n extends Pick<MediaFileDecoratorProps, 'url'> {\n mediaRef: React.Ref<HTMLMediaElement>;\n mediaProps: {\n onError: (event: React.SyntheticEvent<HTMLMediaElement>) => void;\n autoPlay: boolean;\n controls: boolean;\n src: string;\n };\n}\n\nexport interface MediaFileDecoratorProps {\n url: string;\n autoPlay: boolean;\n}\n\nexport default function (Component: React.ComponentType<MediaFileDecoratorChildProps>) {\n const MediaFileDecorator = ({ url, autoPlay }: MediaFileDecoratorProps) => {\n const [error, setError] = React.useState<null | string>(null);\n\n const mediaRef = React.useRef<HTMLMediaElement>(null);\n\n React.useEffect(() => {\n if (mediaRef.current) {\n mediaRef.current.load();\n }\n\n // Reset the error when switching between items\n setError(null);\n }, [url]);\n\n const onMediaError = (event: React.SyntheticEvent<HTMLMediaElement>) => {\n setError(formatMediaError(event));\n };\n\n if (error) {\n return <div>{error}</div>;\n }\n\n const mediaProps = {\n onError: onMediaError,\n autoPlay,\n controls: true,\n src: url,\n };\n\n return <Component mediaRef={mediaRef} mediaProps={mediaProps} url={url} />;\n };\n\n return MediaFileDecorator;\n}\n","import * as React from 'react';\n\nimport MediaFileDecorator, {\n MediaFileDecoratorChildProps,\n} from './decorators/MediaFileDecorator';\n\nconst AudioFile: React.FC<MediaFileDecoratorChildProps> = ({ mediaRef, mediaProps }) => (\n <audio\n ref={mediaRef}\n style={{\n maxWidth: '100%',\n maxHeight: '100%',\n }}\n {...mediaProps}\n />\n);\n\nconst AudioFileDecorated = MediaFileDecorator(AudioFile);\n\nexport { AudioFileDecorated as AudioFile };\n","import * as React from 'react';\n\ninterface ImageFileProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n url: string;\n}\n\nconst ImageFile: React.FC<ImageFileProps> = ({ url }) => (\n <img\n src={url}\n style={{\n maxWidth: '100%',\n maxHeight: '100%',\n }}\n />\n);\n\nexport { ImageFile };\n","import { useEffect, useState } from 'react';\nimport * as React from 'react';\n\nimport { TextDecorator } from 'components/text';\nimport Message from 'components/semantic/Message';\n\nimport * as UI from 'types/ui';\nimport { translate } from 'utils/TranslationUtils';\nimport { useTranslation } from 'react-i18next';\nimport Loader from 'components/semantic/Loader';\n\ninterface TextFileProps {\n textGetter: () => Promise<string>;\n url?: string;\n}\n\nconst TextFile: React.FC<TextFileProps> = ({ textGetter, url }) => {\n const [text, setText] = useState<string | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n const { t } = useTranslation();\n useEffect(() => {\n textGetter().then(setText).catch(setError);\n\n return () => {\n setText(null);\n setError(null);\n };\n }, [url]);\n\n if (!text) {\n if (error) {\n return (\n <Message\n title={translate('Failed to fetch content', t, UI.Modules.COMMON)}\n description={error.message}\n />\n );\n }\n\n return <Loader />;\n }\n\n return (\n <pre>\n <TextDecorator text={text} />\n </pre>\n );\n};\n\nexport { TextFile };\n","import * as React from 'react';\n\nimport MediaFileDecorator, {\n MediaFileDecoratorChildProps,\n} from './decorators/MediaFileDecorator';\n\nconst VideoFile: React.FC<MediaFileDecoratorChildProps> = ({ mediaRef, mediaProps }) => (\n <video\n ref={mediaRef as React.Ref<HTMLVideoElement>}\n style={{\n maxWidth: '100%',\n maxHeight: '100%',\n }}\n {...mediaProps}\n />\n);\n\nconst VideoFileDecorated = MediaFileDecorator(VideoFile);\n\nexport { VideoFileDecorated as VideoFile };\n","//import PropTypes from 'prop-types';\r\nimport * as React from 'react';\r\n\r\nimport DataProviderDecorator, {\r\n DataProviderDecoratorChildProps,\r\n} from 'decorators/DataProviderDecorator';\r\n//import RedrawDecorator from 'decorators/RedrawDecorator';\r\nimport { formatRelativeTime } from 'utils/ValueFormat';\r\n\r\nimport LayoutHeader from 'components/semantic/LayoutHeader';\r\nimport { ListItem } from 'components/semantic/List';\r\n\r\nimport HistoryConstants from 'constants/HistoryConstants';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\nimport { translate, toI18nKey } from 'utils/TranslationUtils';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\ninterface RecentLayoutProps {\r\n entryIcon: string;\r\n entryType: string;\r\n entryTitleRenderer: (entry: API.HistoryItem) => React.ReactNode;\r\n hasSession: (entry: API.HistoryItem) => boolean;\r\n}\r\n\r\ninterface DataProps {\r\n entries: API.HistoryItem[];\r\n}\r\n\r\ntype Props = RecentLayoutProps & DataProps & DataProviderDecoratorChildProps;\r\n\r\nconst RecentLayout: React.FC<Props> = ({\r\n entries,\r\n entryTitleRenderer,\r\n hasSession,\r\n entryIcon,\r\n}) => {\r\n const { t } = useTranslation();\r\n if (entries.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"recents\">\r\n <LayoutHeader title={translate('Recent sessions', t, UI.Modules.COMMON)} size=\"\" />\r\n <div className=\"ui relaxed divided list\">\r\n {entries.map((entry, index) => (\r\n <ListItem\r\n key={index}\r\n header={entryTitleRenderer(entry)}\r\n description={\r\n !!entry.last_opened &&\r\n t(toI18nKey('openedAgo', UI.Modules.COMMON), {\r\n defaultValue: 'Opened {{timeAgo}}',\r\n replace: {\r\n timeAgo: formatRelativeTime(entry.last_opened),\r\n },\r\n })\r\n }\r\n icon={(hasSession(entry) ? 'green ' : '') + entryIcon}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n/*RecentLayout.propTypes = {\r\n // Title of the button\r\n entryIcon: PropTypes.string.isRequired,\r\n\r\n // URL for fetching the recent entries\r\n entryType: PropTypes.string.isRequired,\r\n\r\n // Renders the recent entry title\r\n entryTitleRenderer: PropTypes.func.isRequired,\r\n\r\n // Returns whether the recent entry is currently active\r\n hasSession: PropTypes.func.isRequired,\r\n};*/\r\n\r\nexport default DataProviderDecorator<RecentLayoutProps, DataProps>(\r\n //RedrawDecorator<Props>(RecentLayout),\r\n RecentLayout,\r\n {\r\n urls: {\r\n entries: ({ entryType }, socket) =>\r\n socket.get(`${HistoryConstants.SESSIONS_URL}/${entryType}/0`),\r\n },\r\n },\r\n);\r\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var keys = function keys(obj) {\n return obj === Object(obj) ? Object.keys(obj) : [];\n};\nexport var values = function values(obj) {\n return obj === Object(obj) ? Object.values(obj) : [];\n};\n\nfunction mergeDeep(target, source) {\n var output = Object.assign({}, target);\n\n if (isPlainObject(target) && isPlainObject(source)) {\n keys(source).forEach(function (key) {\n if (isPlainObject(source[key])) {\n if (!(key in target)) Object.assign(output, _defineProperty({}, key, source[key]));else output[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(output, _defineProperty({}, key, source[key]));\n }\n });\n }\n\n return output;\n}\n\nexport var merge = function merge(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n return sources.reduce(function (t, s) {\n return mergeDeep(t, s);\n }, target);\n};\nexport var identity = function identity(value) {\n return value;\n};\nexport var omit = function omit(obj, keys) {\n var other = Object.assign({}, obj);\n\n if (keys) {\n for (var i = 0; i < keys.length; i++) {\n delete other[keys[i]];\n }\n }\n\n return other;\n};\nexport var isPlainObject = function isPlainObject(obj) {\n return obj === Object(obj) && !(obj instanceof Date) && !Array.isArray(obj);\n};\nexport var compact = function compact(arr) {\n return (arr || []).filter(Boolean);\n};","export var isModifier = function isModifier(key) {\n return key[0] === '&';\n};\nexport var isElement = function isElement(key) {\n return !isModifier(key);\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { keys, merge, omit, values } from './utils';\nimport { isModifier } from './filterKeys';\n\nvar camelize = function camelize(key) {\n return key.replace(/-(\\w)/g, function (m, c) {\n return c.toUpperCase();\n });\n};\n\nexport var pickDirectStyles = function pickDirectStyles(style) {\n var objectPropertiesWhitelist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var styleKeys = keys(style);\n var result = {};\n\n for (var i = 0, l = styleKeys.length; i < l; i += 1) {\n var key = styleKeys[i];\n var isDirect = Object.prototype.toString.call(style[key]) !== '[object Object]' || // style defs\n key[0] === ':' || // pseudo selectors\n key[0] === '@' || // @media / @keyframes / @supports / @font-face\n objectPropertiesWhitelist.indexOf(key) >= 0; // whitelisted object-type properties\n\n if (isDirect) {\n result[key] = style[key];\n }\n }\n\n return result;\n};\nexport var pickNestedStyles = function pickNestedStyles(style, keysToPick) {\n var camelizedKeysToPick = keysToPick.map(camelize);\n var styleKeys = keys(style);\n var result = {};\n\n for (var i = 0, l = styleKeys.length; i < l; i += 1) {\n var key = styleKeys[i];\n\n if (keysToPick.indexOf(key) >= 0 || camelizedKeysToPick.indexOf(camelize(key)) >= 0) {\n result[key] = style[key];\n }\n }\n\n return result;\n}; // breadth-first hoisting of selected modifier style subtrees\n// does not traverse into element, :pseudo-selector or @directive subtrees\n\nexport var hoistModifierStylesRecursive = function hoistModifierStylesRecursive(style, modifierKeysToPick) {\n // hoist styles for selected modifiers on current level\n var result = merge.apply(void 0, [{}, omit(style, modifierKeysToPick)].concat(_toConsumableArray(values(pickNestedStyles(style, modifierKeysToPick))))); // traverse nested styled for ALL modifiers\n\n var modifierKeys = keys(result).filter(isModifier);\n\n for (var i = 0, l = modifierKeys.length; i < l; i += 1) {\n var key = modifierKeys[i];\n var subresult = hoistModifierStylesRecursive(result[key], modifierKeysToPick);\n\n if (modifierKeysToPick.indexOf(key) >= 0) {\n // selected modifier: hoist subresult\n delete result[key];\n result = merge({}, result, subresult);\n } else {\n // non-selected modifier: replace with subresult\n result[key] = subresult;\n }\n }\n\n return result;\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { pickDirectStyles } from './pickStyles';\n// many css-in-js libs process keyframes objects as the value for `animationName`\nvar defaultObjectPropsWhitelist = ['animationName'];\n\nvar defaultPropsDecorator = function defaultPropsDecorator(_ref) {\n var style = _ref.style,\n className = _ref.className;\n return _objectSpread(_objectSpread({}, style ? {\n style: pickDirectStyles(style, defaultObjectPropsWhitelist)\n } : {}), className ? {\n className: className\n } : {});\n};\n\nexport default defaultPropsDecorator;","import { createContext } from 'react';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nexport var PropsDecoratorContext = /*#__PURE__*/createContext(defaultPropsDecorator);\nexport default PropsDecoratorContext.Provider;","import { keys } from './utils';\n\nvar coerceSelection = function coerceSelection(select) {\n if (!select) {\n return [];\n } else if (typeof select === 'string') {\n return [select];\n } else if (!Array.isArray(select)) {\n var objSelect = select; // workaround for https://github.com/facebook/flow/issues/5781\n\n return keys(select).reduce(function (acc, key) {\n return acc.concat(objSelect[key] ? [key] : []);\n }, []);\n }\n\n return select;\n};\n\nexport default coerceSelection;","import coerceSelection from './coerceSelection';\nvar EMPTY = {};\n\nvar memoize = function memoize(substyle) {\n return function (select, defaultStyle) {\n var cacheKey = defaultStyle || EMPTY;\n substyle.memoize = substyle.memoize || new WeakMap();\n var mapEntry;\n\n if (!substyle.memoize.has(cacheKey)) {\n mapEntry = {};\n substyle.memoize.set(cacheKey, mapEntry);\n } else {\n mapEntry = substyle.memoize.get(cacheKey);\n }\n\n var selectHash = coerceSelection(select).join(' ');\n return selectHash in mapEntry ? mapEntry[selectHash] : mapEntry[selectHash] = substyle(select || [], defaultStyle);\n };\n};\n\nexport default memoize;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport invariant from 'invariant';\nimport coerceSelection from './coerceSelection';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nimport { isElement, isModifier } from './filterKeys';\nimport memoize from './memoize';\nimport { hoistModifierStylesRecursive, pickNestedStyles } from './pickStyles';\nimport { compact, isPlainObject, keys, merge, values } from './utils';\n\nvar guessBaseClassName = function guessBaseClassName(classNames) {\n // all class names must start with the same prefix: the component's base class name\n // which will finally go to the container element\n var firstKey = classNames && keys(classNames)[0];\n return firstKey && firstKey.split('__')[0].split('--')[0];\n};\n\nvar deriveClassNames = function deriveClassNames(className, elementKeys, modifierKeys) {\n // do not derive class names, if the user did not specify any class name\n if (!className) {\n return undefined;\n } // derive class names based using the passed modifier/element keys\n\n\n var firstClassName = className.split(' ')[0];\n var derivedClassNames = [].concat(_toConsumableArray(elementKeys.length === 0 ? modifierKeys.map(function (key) {\n return \"\".concat(firstClassName, \"--\").concat(key.substring(1));\n }) : []), _toConsumableArray(elementKeys.map(function (key) {\n return \"\".concat(firstClassName, \"__\").concat(key);\n }))); // also use the provided `className` if there is no sub-element selection\n\n return elementKeys.length === 0 ? [className].concat(_toConsumableArray(derivedClassNames)) : derivedClassNames;\n};\n\nfunction createSubstyle(_ref) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var propsDecorator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultPropsDecorator;\n var baseClassName = className || guessBaseClassName(classNames) || (style === null || style === void 0 ? void 0 : style.className);\n var substyle = typeof style === 'function' ? style : memoize(function (select, defaultStyle) {\n var selectedKeys = coerceSelection(select);\n invariant(Array.isArray(selectedKeys), 'First parameter must be a string, an array of strings, ' + 'a plain object with boolean values, or a falsy value.');\n invariant(!defaultStyle || isPlainObject(defaultStyle), 'Optional second parameter must be a plain object.');\n var modifierKeys = selectedKeys.filter(isModifier);\n var elementKeys = selectedKeys.filter(isElement);\n var collectElementStyles = elementKeys.length > 0 ? function (fromStyle) {\n return values(pickNestedStyles(fromStyle, elementKeys));\n } : function (fromStyle) {\n return [fromStyle];\n };\n\n var collectSelectedStyles = function collectSelectedStyles() {\n var fromStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return collectElementStyles(hoistModifierStylesRecursive(fromStyle, modifierKeys));\n };\n\n var derivedClassNames = deriveClassNames(baseClassName, elementKeys, modifierKeys);\n return createSubstyle(_objectSpread(_objectSpread(_objectSpread({}, (style || defaultStyle) && {\n style: merge.apply(void 0, [{}].concat(_toConsumableArray(collectSelectedStyles(defaultStyle)), _toConsumableArray(collectSelectedStyles(style))))\n }), derivedClassNames && {\n className: derivedClassNames.join(' ')\n }), classNames && {\n classNames: classNames\n }), propsDecorator);\n });\n\n var styleProps = _objectSpread({}, typeof style === 'function' ? style : {\n style: style\n });\n\n var classNameSplit = _toConsumableArray(new Set([].concat(_toConsumableArray(styleProps.className ? styleProps.className.split(' ') : []), _toConsumableArray(baseClassName ? baseClassName.split(' ') : []))));\n\n var mappedClassNames = classNames ? compact(classNameSplit.map(function (singleClassName) {\n return classNames[singleClassName];\n })) : classNameSplit;\n var propsForSpread = propsDecorator(_objectSpread(_objectSpread({}, styleProps), mappedClassNames.length > 0 ? {\n className: mappedClassNames.join(' ')\n } : {})); // assign `style`, `className`, and/or any props added by the decorator to the return function object\n\n Object.assign(substyle, propsForSpread);\n return substyle;\n}\n\nexport default createSubstyle;","import PropsDecoratorProvider, { PropsDecoratorContext } from './PropsDecoratorProvider';\nimport createSubstyle from './createSubstyle';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nimport inline from './inline';\nimport useStyles from './useStyles';\nexport { createSubstyle, PropsDecoratorProvider, PropsDecoratorContext, defaultPropsDecorator, inline };\nexport default useStyles;","import { useContext, useMemo } from 'react';\nimport { PropsDecoratorContext } from './PropsDecoratorProvider';\nimport createSubstyle from './createSubstyle';\n\nvar useStyles = function useStyles(defaultStyle, _ref, modifiers) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var propsDecorator = useContext(PropsDecoratorContext);\n var substyle = useMemo(function () {\n return createSubstyle({\n style: style,\n className: className,\n classNames: classNames\n }, propsDecorator);\n }, [style, className, classNames, propsDecorator]);\n return substyle(modifiers, defaultStyle);\n};\n\nexport default useStyles;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar inline = function inline() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args.reduce(function (result, arg) {\n return _objectSpread(_objectSpread(_objectSpread({}, result), typeof arg === 'function' ? arg : {}), {}, {\n style: _objectSpread(_objectSpread({}, result.style), typeof arg === 'function' ? arg.style : arg)\n });\n }, {});\n};\n\nexport default inline;","import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Children, useState, useEffect } from 'react';\nimport invariant from 'invariant';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport useStyles, { inline } from 'substyle';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\n\n// escape RegExp special characters https://stackoverflow.com/a/9310752/5142490\nvar escapeRegex = function escapeRegex(str) {\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n};\n\nvar PLACEHOLDERS = {\n id: '__id__',\n display: '__display__'\n};\n\nvar findPositionOfCapturingGroup = function findPositionOfCapturingGroup(markup, parameterName) {\n invariant(parameterName === 'id' || parameterName === 'display', \"Second arg must be either \\\"id\\\" or \\\"display\\\", got: \\\"\".concat(parameterName, \"\\\"\")); // find positions of placeholders in the markup\n\n var indexDisplay = markup.indexOf(PLACEHOLDERS.display);\n var indexId = markup.indexOf(PLACEHOLDERS.id); // set indices to null if not found\n\n if (indexDisplay < 0) indexDisplay = null;\n if (indexId < 0) indexId = null; // markup must contain one of the mandatory placeholders\n\n invariant(indexDisplay !== null || indexId !== null, \"The markup '\".concat(markup, \"' does not contain either of the placeholders '__id__' or '__display__'\"));\n\n if (indexDisplay !== null && indexId !== null) {\n // both placeholders are used, return 0 or 1 depending on the position of the requested parameter\n return parameterName === 'id' && indexId <= indexDisplay || parameterName === 'display' && indexDisplay <= indexId ? 0 : 1;\n } // just one placeholder is being used, we'll use the captured string for both parameters\n\n\n return 0;\n};\n\nvar combineRegExps = function combineRegExps(regExps) {\n var serializedRegexParser = /^\\/(.+)\\/(\\w+)?$/;\n return new RegExp(regExps.map(function (regex) {\n var _serializedRegexParse = serializedRegexParser.exec(regex.toString()),\n _serializedRegexParse2 = _slicedToArray(_serializedRegexParse, 3),\n regexString = _serializedRegexParse2[1],\n regexFlags = _serializedRegexParse2[2];\n\n invariant(!regexFlags, \"RegExp flags are not supported. Change /\".concat(regexString, \"/\").concat(regexFlags, \" into /\").concat(regexString, \"/\"));\n return \"(\".concat(regexString, \")\");\n }).join('|'), 'g');\n};\n\nvar countPlaceholders = function countPlaceholders(markup) {\n var count = 0;\n if (markup.indexOf('__id__') >= 0) count++;\n if (markup.indexOf('__display__') >= 0) count++;\n return count;\n};\n\nvar emptyFn = function emptyFn() {}; // Finds all occurrences of the markup in the value and calls the `markupIteratee` callback for each of them.\n// The optional `textIteratee` callback is called for each plain text ranges in between these markup occurrences.\n\n\nvar iterateMentionsMarkup = function iterateMentionsMarkup(value, config, markupIteratee) {\n var textIteratee = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : emptyFn;\n var regex = combineRegExps(config.map(function (c) {\n return c.regex;\n }));\n var accOffset = 2; // first is whole match, second is the for the capturing group of first regexp component\n\n var captureGroupOffsets = config.map(function (_ref) {\n var markup = _ref.markup;\n var result = accOffset; // + 1 is for the capturing group we add around each regexp component in combineRegExps\n\n accOffset += countPlaceholders(markup) + 1;\n return result;\n });\n var match;\n var start = 0;\n var currentPlainTextIndex = 0; // detect all mention markup occurrences in the value and iterate the matches\n\n while ((match = regex.exec(value)) !== null) {\n var offset = captureGroupOffsets.find(function (o) {\n return !!match[o];\n }); // eslint-disable-line no-loop-func\n\n var mentionChildIndex = captureGroupOffsets.indexOf(offset);\n var _config$mentionChildI = config[mentionChildIndex],\n markup = _config$mentionChildI.markup,\n displayTransform = _config$mentionChildI.displayTransform;\n var idPos = offset + findPositionOfCapturingGroup(markup, 'id');\n var displayPos = offset + findPositionOfCapturingGroup(markup, 'display');\n var id = match[idPos];\n var display = displayTransform(id, match[displayPos]);\n var substr = value.substring(start, match.index);\n textIteratee(substr, start, currentPlainTextIndex);\n currentPlainTextIndex += substr.length;\n markupIteratee(match[0], match.index, currentPlainTextIndex, id, display, mentionChildIndex, start);\n currentPlainTextIndex += display.length;\n start = regex.lastIndex;\n }\n\n if (start < value.length) {\n textIteratee(value.substring(start), start, currentPlainTextIndex);\n }\n};\n\nvar getPlainText = function getPlainText(value, config) {\n var result = '';\n iterateMentionsMarkup(value, config, function (match, index, plainTextIndex, id, display) {\n result += display;\n }, function (plainText) {\n result += plainText;\n });\n return result;\n};\n\n// in the marked up value string.\n// If the passed character index lies inside a mention, the value of `inMarkupCorrection` defines the\n// correction to apply:\n// - 'START' to return the index of the mention markup's first char (default)\n// - 'END' to return the index after its last char\n// - 'NULL' to return null\n\nvar mapPlainTextIndex = function mapPlainTextIndex(value, config, indexInPlainText) {\n var inMarkupCorrection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'START';\n\n if (typeof indexInPlainText !== 'number') {\n return indexInPlainText;\n }\n\n var result;\n\n var textIteratee = function textIteratee(substr, index, substrPlainTextIndex) {\n if (result !== undefined) return;\n\n if (substrPlainTextIndex + substr.length >= indexInPlainText) {\n // found the corresponding position in the current plain text range\n result = index + indexInPlainText - substrPlainTextIndex;\n }\n };\n\n var markupIteratee = function markupIteratee(markup, index, mentionPlainTextIndex, id, display, childIndex, lastMentionEndIndex) {\n if (result !== undefined) return;\n\n if (mentionPlainTextIndex + display.length > indexInPlainText) {\n // found the corresponding position inside current match,\n // return the index of the first or after the last char of the matching markup\n // depending on whether the `inMarkupCorrection`\n if (inMarkupCorrection === 'NULL') {\n result = null;\n } else {\n result = index + (inMarkupCorrection === 'END' ? markup.length : 0);\n }\n }\n };\n\n iterateMentionsMarkup(value, config, markupIteratee, textIteratee); // when a mention is at the end of the value and we want to get the caret position\n // at the end of the string, result is undefined\n\n return result === undefined ? value.length : result;\n};\n\nvar spliceString = function spliceString(str, start, end, insert) {\n return str.substring(0, start) + insert + str.substring(end);\n};\n\n// guided by the textarea text selection ranges before and after the change\n\nvar applyChangeToValue = function applyChangeToValue(value, plainTextValue, _ref, config) {\n var selectionStartBefore = _ref.selectionStartBefore,\n selectionEndBefore = _ref.selectionEndBefore,\n selectionEndAfter = _ref.selectionEndAfter;\n var oldPlainTextValue = getPlainText(value, config);\n var lengthDelta = oldPlainTextValue.length - plainTextValue.length;\n\n if (selectionStartBefore === 'undefined') {\n selectionStartBefore = selectionEndAfter + lengthDelta;\n }\n\n if (selectionEndBefore === 'undefined') {\n selectionEndBefore = selectionStartBefore;\n } // Fixes an issue with replacing combined characters for complex input. Eg like acented letters on OSX\n\n\n if (selectionStartBefore === selectionEndBefore && selectionEndBefore === selectionEndAfter && oldPlainTextValue.length === plainTextValue.length) {\n selectionStartBefore = selectionStartBefore - 1;\n } // extract the insertion from the new plain text value\n\n\n var insert = plainTextValue.slice(selectionStartBefore, selectionEndAfter); // handling for Backspace key with no range selection\n\n var spliceStart = Math.min(selectionStartBefore, selectionEndAfter);\n var spliceEnd = selectionEndBefore;\n\n if (selectionStartBefore === selectionEndAfter) {\n // handling for Delete key with no range selection\n spliceEnd = Math.max(selectionEndBefore, selectionStartBefore + lengthDelta);\n }\n\n var mappedSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'START');\n var mappedSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'END');\n var controlSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'NULL');\n var controlSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'NULL');\n var willRemoveMention = controlSpliceStart === null || controlSpliceEnd === null;\n var newValue = spliceString(value, mappedSpliceStart, mappedSpliceEnd, insert);\n\n if (!willRemoveMention) {\n // test for auto-completion changes\n var controlPlainTextValue = getPlainText(newValue, config);\n\n if (controlPlainTextValue !== plainTextValue) {\n // some auto-correction is going on\n // find start of diff\n spliceStart = 0;\n\n while (plainTextValue[spliceStart] === controlPlainTextValue[spliceStart]) {\n spliceStart++;\n } // extract auto-corrected insertion\n\n\n insert = plainTextValue.slice(spliceStart, selectionEndAfter); // find index of the unchanged remainder\n\n spliceEnd = oldPlainTextValue.lastIndexOf(plainTextValue.substring(selectionEndAfter)); // re-map the corrected indices\n\n mappedSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'START');\n mappedSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'END');\n newValue = spliceString(value, mappedSpliceStart, mappedSpliceEnd, insert);\n }\n }\n\n return newValue;\n};\n\n// returns a the index of of the first char of the mention in the plain text.\n// If indexInPlainText does not lie inside a mention, returns indexInPlainText.\n\nvar findStartOfMentionInPlainText = function findStartOfMentionInPlainText(value, config, indexInPlainText) {\n var result = indexInPlainText;\n var foundMention = false;\n\n var markupIteratee = function markupIteratee(markup, index, mentionPlainTextIndex, id, display, childIndex, lastMentionEndIndex) {\n if (mentionPlainTextIndex <= indexInPlainText && mentionPlainTextIndex + display.length > indexInPlainText) {\n result = mentionPlainTextIndex;\n foundMention = true;\n }\n };\n\n iterateMentionsMarkup(value, config, markupIteratee);\n\n if (foundMention) {\n return result;\n }\n};\n\nvar getMentions = function getMentions(value, config) {\n var mentions = [];\n iterateMentionsMarkup(value, config, function (match, index, plainTextIndex, id, display, childIndex, start) {\n mentions.push({\n id: id,\n display: display,\n childIndex: childIndex,\n index: index,\n plainTextIndex: plainTextIndex\n });\n });\n return mentions;\n};\n\nvar getSuggestionHtmlId = function getSuggestionHtmlId(prefix, id) {\n return \"\".concat(prefix, \"-\").concat(id);\n};\n\nvar countSuggestions = function countSuggestions(suggestions) {\n return Object.values(suggestions).reduce(function (acc, _ref) {\n var results = _ref.results;\n return acc + results.length;\n }, 0);\n};\n\nvar getEndOfLastMention = function getEndOfLastMention(value, config) {\n var mentions = getMentions(value, config);\n var lastMention = mentions[mentions.length - 1];\n return lastMention ? lastMention.plainTextIndex + lastMention.display.length : 0;\n};\n\nvar markupToRegex = function markupToRegex(markup) {\n var escapedMarkup = escapeRegex(markup);\n var charAfterDisplay = markup[markup.indexOf(PLACEHOLDERS.display) + PLACEHOLDERS.display.length];\n var charAfterId = markup[markup.indexOf(PLACEHOLDERS.id) + PLACEHOLDERS.id.length];\n return new RegExp(escapedMarkup.replace(PLACEHOLDERS.display, \"([^\".concat(escapeRegex(charAfterDisplay || ''), \"]+?)\")).replace(PLACEHOLDERS.id, \"([^\".concat(escapeRegex(charAfterId || ''), \"]+?)\")));\n};\n\nvar readConfigFromChildren = function readConfigFromChildren(children) {\n return Children.toArray(children).map(function (_ref) {\n var _ref$props = _ref.props,\n markup = _ref$props.markup,\n regex = _ref$props.regex,\n displayTransform = _ref$props.displayTransform;\n return {\n markup: markup,\n regex: regex ? coerceCapturingGroups(regex, markup) : markupToRegex(markup),\n displayTransform: displayTransform || function (id, display) {\n return display || id;\n }\n };\n });\n}; // make sure that the custom regex defines the correct number of capturing groups\n\n\nvar coerceCapturingGroups = function coerceCapturingGroups(regex, markup) {\n var numberOfGroups = new RegExp(regex.toString() + '|').exec('').length - 1;\n var numberOfPlaceholders = countPlaceholders(markup);\n invariant(numberOfGroups === numberOfPlaceholders, \"Number of capturing groups in RegExp \".concat(regex.toString(), \" (\").concat(numberOfGroups, \") does not match the number of placeholders in the markup '\").concat(markup, \"' (\").concat(numberOfPlaceholders, \")\"));\n return regex;\n};\n\nvar makeMentionsMarkup = function makeMentionsMarkup(markup, id, display) {\n return markup.replace(PLACEHOLDERS.id, id).replace(PLACEHOLDERS.display, display);\n};\n\n// This contains all the latin letters and the regex that match these letters with diacritics\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\nvar lettersDiacritics = [{\n base: 'A',\n letters: /(&#65;|&#9398;|&#65313;|&#192;|&#193;|&#194;|&#7846;|&#7844;|&#7850;|&#7848;|&#195;|&#256;|&#258;|&#7856;|&#7854;|&#7860;|&#7858;|&#550;|&#480;|&#196;|&#478;|&#7842;|&#197;|&#506;|&#461;|&#512;|&#514;|&#7840;|&#7852;|&#7862;|&#7680;|&#260;|&#570;|&#11375;|[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F])/g\n}, {\n base: 'AA',\n letters: /(&#42802;|[\\uA732])/g\n}, {\n base: 'AE',\n letters: /(&#198;|&#508;|&#482;|[\\u00C6\\u01FC\\u01E2])/g\n}, {\n base: 'AO',\n letters: /(&#42804;|[\\uA734])/g\n}, {\n base: 'AU',\n letters: /(&#42806;|[\\uA736])/g\n}, {\n base: 'AV',\n letters: /(&#42808;|&#42810;|[\\uA738\\uA73A])/g\n}, {\n base: 'AY',\n letters: /(&#42812;|[\\uA73C])/g\n}, {\n base: 'B',\n letters: /(&#66;|&#9399;|&#65314;|&#7682;|&#7684;|&#7686;|&#579;|&#386;|&#385;|[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181])/g\n}, {\n base: 'C',\n letters: /(&#67;|&#9400;|&#65315;|&#262;|&#264;|&#266;|&#268;|&#199;|&#7688;|&#391;|&#571;|&#42814;|[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E])/g\n}, {\n base: 'D',\n letters: /(&#68;|&#9401;|&#65316;|&#7690;|&#270;|&#7692;|&#7696;|&#7698;|&#7694;|&#272;|&#395;|&#394;|&#393;|&#42873;|&#208;|[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0])/g\n}, {\n base: 'DZ',\n letters: /(&#497;|&#452;|[\\u01F1\\u01C4])/g\n}, {\n base: 'Dz',\n letters: /(&#498;|&#453;|[\\u01F2\\u01C5])/g\n}, {\n base: 'E',\n letters: /(&#69;|&#9402;|&#65317;|&#200;|&#201;|&#202;|&#7872;|&#7870;|&#7876;|&#7874;|&#7868;|&#274;|&#7700;|&#7702;|&#276;|&#278;|&#203;|&#7866;|&#282;|&#516;|&#518;|&#7864;|&#7878;|&#552;|&#7708;|&#280;|&#7704;|&#7706;|&#400;|&#398;|[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E])/g\n}, {\n base: 'F',\n letters: /(&#70;|&#9403;|&#65318;|&#7710;|&#401;|&#42875;|[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B])/g\n}, {\n base: 'G',\n letters: /(&#71;|&#9404;|&#65319;|&#500;|&#284;|&#7712;|&#286;|&#288;|&#486;|&#290;|&#484;|&#403;|&#42912;|&#42877;|&#42878;|[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E])/g\n}, {\n base: 'H',\n letters: /(&#72;|&#9405;|&#65320;|&#292;|&#7714;|&#7718;|&#542;|&#7716;|&#7720;|&#7722;|&#294;|&#11367;|&#11381;|&#42893;|[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D])/g\n}, {\n base: 'I',\n letters: /(&#73;|&#9406;|&#65321;|&#204;|&#205;|&#206;|&#296;|&#298;|&#300;|&#304;|&#207;|&#7726;|&#7880;|&#463;|&#520;|&#522;|&#7882;|&#302;|&#7724;|&#407;|[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197])/g\n}, {\n base: 'J',\n letters: /(&#74;|&#9407;|&#65322;|&#308;|&#584;|[\\u004A\\u24BF\\uFF2A\\u0134\\u0248])/g\n}, {\n base: 'K',\n letters: /(&#75;|&#9408;|&#65323;|&#7728;|&#488;|&#7730;|&#310;|&#7732;|&#408;|&#11369;|&#42816;|&#42818;|&#42820;|&#42914;|[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2])/g\n}, {\n base: 'L',\n letters: /(&#76;|&#9409;|&#65324;|&#319;|&#313;|&#317;|&#7734;|&#7736;|&#315;|&#7740;|&#7738;|&#321;|&#573;|&#11362;|&#11360;|&#42824;|&#42822;|&#42880;|[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780])/g\n}, {\n base: 'LJ',\n letters: /(&#455;|[\\u01C7])/g\n}, {\n base: 'Lj',\n letters: /(&#456;|[\\u01C8])/g\n}, {\n base: 'M',\n letters: /(&#77;|&#9410;|&#65325;|&#7742;|&#7744;|&#7746;|&#11374;|&#412;|[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C])/g\n}, {\n base: 'N',\n letters: /(&#78;|&#9411;|&#65326;|&#504;|&#323;|&#209;|&#7748;|&#327;|&#7750;|&#325;|&#7754;|&#7752;|&#544;|&#413;|&#42896;|&#42916;|&#330;|[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\\u014A])/g\n}, {\n base: 'NJ',\n letters: /(&#458;|[\\u01CA])/g\n}, {\n base: 'Nj',\n letters: /(&#459;|[\\u01CB])/g\n}, {\n base: 'O',\n letters: /(&#79;|&#9412;|&#65327;|&#210;|&#211;|&#212;|&#7890;|&#7888;|&#7894;|&#7892;|&#213;|&#7756;|&#556;|&#7758;|&#332;|&#7760;|&#7762;|&#334;|&#558;|&#560;|&#214;|&#554;|&#7886;|&#336;|&#465;|&#524;|&#526;|&#416;|&#7900;|&#7898;|&#7904;|&#7902;|&#7906;|&#7884;|&#7896;|&#490;|&#492;|&#216;|&#510;|&#390;|&#415;|&#42826;|&#42828;|[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C])/g\n}, {\n base: 'OE',\n letters: /(&#338;|[\\u0152])/g\n}, {\n base: 'OI',\n letters: /(&#418;|[\\u01A2])/g\n}, {\n base: 'OO',\n letters: /(&#42830;|[\\uA74E])/g\n}, {\n base: 'OU',\n letters: /(&#546;|[\\u0222])/g\n}, {\n base: 'P',\n letters: /(&#80;|&#9413;|&#65328;|&#7764;|&#7766;|&#420;|&#11363;|&#42832;|&#42834;|&#42836;|[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754])/g\n}, {\n base: 'Q',\n letters: /(&#81;|&#9414;|&#65329;|&#42838;|&#42840;|&#586;|[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A])/g\n}, {\n base: 'R',\n letters: /(&#82;|&#9415;|&#65330;|&#340;|&#7768;|&#344;|&#528;|&#530;|&#7770;|&#7772;|&#342;|&#7774;|&#588;|&#11364;|&#42842;|&#42918;|&#42882;|[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782])/g\n}, {\n base: 'S',\n letters: /(&#83;|&#9416;|&#65331;|&#7838;|&#346;|&#7780;|&#348;|&#7776;|&#352;|&#7782;|&#7778;|&#7784;|&#536;|&#350;|&#11390;|&#42920;|&#42884;|[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784])/g\n}, {\n base: 'T',\n letters: /(&#84;|&#9417;|&#65332;|&#7786;|&#356;|&#7788;|&#538;|&#354;|&#7792;|&#7790;|&#358;|&#428;|&#430;|&#574;|&#42886;|[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786])/g\n}, {\n base: 'TH',\n letters: /(&#222;|[\\u00DE])/g\n}, {\n base: 'TZ',\n letters: /(&#42792;|[\\uA728])/g\n}, {\n base: 'U',\n letters: /(&#85;|&#9418;|&#65333;|&#217;|&#218;|&#219;|&#360;|&#7800;|&#362;|&#7802;|&#364;|&#220;|&#475;|&#471;|&#469;|&#473;|&#7910;|&#366;|&#368;|&#467;|&#532;|&#534;|&#431;|&#7914;|&#7912;|&#7918;|&#7916;|&#7920;|&#7908;|&#7794;|&#370;|&#7798;|&#7796;|&#580;|[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244])/g\n}, {\n base: 'V',\n letters: /(&#86;|&#9419;|&#65334;|&#7804;|&#7806;|&#434;|&#42846;|&#581;|[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245])/g\n}, {\n base: 'VY',\n letters: /(&#42848;|[\\uA760])/g\n}, {\n base: 'W',\n letters: /(&#87;|&#9420;|&#65335;|&#7808;|&#7810;|&#372;|&#7814;|&#7812;|&#7816;|&#11378;|[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72])/g\n}, {\n base: 'X',\n letters: /(&#88;|&#9421;|&#65336;|&#7818;|&#7820;|[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C])/g\n}, {\n base: 'Y',\n letters: /(&#89;|&#9422;|&#65337;|&#7922;|&#221;|&#374;|&#7928;|&#562;|&#7822;|&#376;|&#7926;|&#7924;|&#435;|&#590;|&#7934;|[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE])/g\n}, {\n base: 'Z',\n letters: /(&#90;|&#9423;|&#65338;|&#377;|&#7824;|&#379;|&#381;|&#7826;|&#7828;|&#437;|&#548;|&#11391;|&#11371;|&#42850;|[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762])/g\n}, {\n base: 'a',\n letters: /(&#97;|&#9424;|&#65345;|&#7834;|&#224;|&#225;|&#226;|&#7847;|&#7845;|&#7851;|&#7849;|&#227;|&#257;|&#259;|&#7857;|&#7855;|&#7861;|&#7859;|&#551;|&#481;|&#228;|&#479;|&#7843;|&#229;|&#507;|&#462;|&#513;|&#515;|&#7841;|&#7853;|&#7863;|&#7681;|&#261;|&#11365;|&#592;|[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250])/g\n}, {\n base: 'aa',\n letters: /(&#42803;|[\\uA733])/g\n}, {\n base: 'ae',\n letters: /(&#230;|&#509;|&#483;|[\\u00E6\\u01FD\\u01E3])/g\n}, {\n base: 'ao',\n letters: /(&#42805;|[\\uA735])/g\n}, {\n base: 'au',\n letters: /(&#42807;|[\\uA737])/g\n}, {\n base: 'av',\n letters: /(&#42809;|&#42811;|[\\uA739\\uA73B])/g\n}, {\n base: 'ay',\n letters: /(&#42813;|[\\uA73D])/g\n}, {\n base: 'b',\n letters: /(&#98;|&#9425;|&#65346;|&#7683;|&#7685;|&#7687;|&#384;|&#387;|&#595;|[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253])/g\n}, {\n base: 'c',\n letters: /(&#99;|&#9426;|&#65347;|&#263;|&#265;|&#267;|&#269;|&#231;|&#7689;|&#392;|&#572;|&#42815;|&#8580;|[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184])/g\n}, {\n base: 'd',\n letters: /(&#100;|&#9427;|&#65348;|&#7691;|&#271;|&#7693;|&#7697;|&#7699;|&#7695;|&#273;|&#396;|&#598;|&#599;|&#42874;|&#240;|[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\\u00F0])/g\n}, {\n base: 'dz',\n letters: /(&#499;|&#454;|[\\u01F3\\u01C6])/g\n}, {\n base: 'e',\n letters: /(&#101;|&#9428;|&#65349;|&#232;|&#233;|&#234;|&#7873;|&#7871;|&#7877;|&#7875;|&#7869;|&#275;|&#7701;|&#7703;|&#277;|&#279;|&#235;|&#7867;|&#283;|&#517;|&#519;|&#7865;|&#7879;|&#553;|&#7709;|&#281;|&#7705;|&#7707;|&#583;|&#603;|&#477;|[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD])/g\n}, {\n base: 'f',\n letters: /(&#102;|&#9429;|&#65350;|&#7711;|&#402;|&#42876;|[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C])/g\n}, {\n base: 'g',\n letters: /(&#103;|&#9430;|&#65351;|&#501;|&#285;|&#7713;|&#287;|&#289;|&#487;|&#291;|&#485;|&#608;|&#42913;|&#7545;|&#42879;|[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F])/g\n}, {\n base: 'h',\n letters: /(&#104;|&#9431;|&#65352;|&#293;|&#7715;|&#7719;|&#543;|&#7717;|&#7721;|&#7723;|&#7830;|&#295;|&#11368;|&#11382;|&#613;|[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265])/g\n}, {\n base: 'hv',\n letters: /(&#405;|[\\u0195])/g\n}, {\n base: 'i',\n letters: /(&#105;|&#9432;|&#65353;|&#236;|&#237;|&#238;|&#297;|&#299;|&#301;|&#239;|&#7727;|&#7881;|&#464;|&#521;|&#523;|&#7883;|&#303;|&#7725;|&#616;|&#305;|[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131])/g\n}, {\n base: 'ij',\n letters: /(&#307;|[\\u0133])/g\n}, {\n base: 'j',\n letters: /(&#106;|&#9433;|&#65354;|&#309;|&#496;|&#585;|[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249])/g\n}, {\n base: 'k',\n letters: /(&#107;|&#9434;|&#65355;|&#7729;|&#489;|&#7731;|&#311;|&#7733;|&#409;|&#11370;|&#42817;|&#42819;|&#42821;|&#42915;|[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3])/g\n}, {\n base: 'l',\n letters: /(&#108;|&#9435;|&#65356;|&#320;|&#314;|&#318;|&#7735;|&#7737;|&#316;|&#7741;|&#7739;|&#322;|&#410;|&#619;|&#11361;|&#42825;|&#42881;|&#42823;|[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747])/g\n}, {\n base: 'lj',\n letters: /(&#457;|[\\u01C9])/g\n}, {\n base: 'm',\n letters: /(&#109;|&#9436;|&#65357;|&#7743;|&#7745;|&#7747;|&#625;|&#623;|[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F])/g\n}, {\n base: 'n',\n letters: /(&#110;|&#9437;|&#65358;|&#505;|&#324;|&#241;|&#7749;|&#328;|&#7751;|&#326;|&#7755;|&#7753;|&#414;|&#626;|&#329;|&#42897;|&#42917;|&#331;|[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u014B])/g\n}, {\n base: 'nj',\n letters: /(&#460;|[\\u01CC])/g\n}, {\n base: 'o',\n letters: /(&#111;|&#9438;|&#65359;|&#242;|&#243;|&#244;|&#7891;|&#7889;|&#7895;|&#7893;|&#245;|&#7757;|&#557;|&#7759;|&#333;|&#7761;|&#7763;|&#335;|&#559;|&#561;|&#246;|&#555;|&#7887;|&#337;|&#466;|&#525;|&#527;|&#417;|&#7901;|&#7899;|&#7905;|&#7903;|&#7907;|&#7885;|&#7897;|&#491;|&#493;|&#248;|&#511;|&#596;|&#42827;|&#42829;|&#629;|[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275])/g\n}, {\n base: 'oe',\n letters: /(&#339;|[\\u0153])/g\n}, {\n base: 'oi',\n letters: /(&#419;|[\\u01A3])/g\n}, {\n base: 'ou',\n letters: /(&#547;|[\\u0223])/g\n}, {\n base: 'oo',\n letters: /(&#42831;|[\\uA74F])/g\n}, {\n base: 'p',\n letters: /(&#112;|&#9439;|&#65360;|&#7765;|&#7767;|&#421;|&#7549;|&#42833;|&#42835;|&#42837;|[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755])/g\n}, {\n base: 'q',\n letters: /(&#113;|&#9440;|&#65361;|&#587;|&#42839;|&#42841;|[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759])/g\n}, {\n base: 'r',\n letters: /(&#114;|&#9441;|&#65362;|&#341;|&#7769;|&#345;|&#529;|&#531;|&#7771;|&#7773;|&#343;|&#7775;|&#589;|&#637;|&#42843;|&#42919;|&#42883;|[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783])/g\n}, {\n base: 's',\n letters: /(&#115;|&#9442;|&#65363;|&#347;|&#7781;|&#349;|&#7777;|&#353;|&#7783;|&#7779;|&#7785;|&#537;|&#351;|&#575;|&#42921;|&#42885;|&#7835;|&#383;|[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u017F])/g\n}, {\n base: 'ss',\n letters: /(&#223;|[\\u00DF])/g\n}, {\n base: 't',\n letters: /(&#116;|&#9443;|&#65364;|&#7787;|&#7831;|&#357;|&#7789;|&#539;|&#355;|&#7793;|&#7791;|&#359;|&#429;|&#648;|&#11366;|&#42887;|[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787])/g\n}, {\n base: 'th',\n letters: /(&#254;|[\\u00FE])/g\n}, {\n base: 'tz',\n letters: /(&#42793;|[\\uA729])/g\n}, {\n base: 'u',\n letters: /(&#117;|&#9444;|&#65365;|&#249;|&#250;|&#251;|&#361;|&#7801;|&#363;|&#7803;|&#365;|&#252;|&#476;|&#472;|&#470;|&#474;|&#7911;|&#367;|&#369;|&#468;|&#533;|&#535;|&#432;|&#7915;|&#7913;|&#7919;|&#7917;|&#7921;|&#7909;|&#7795;|&#371;|&#7799;|&#7797;|&#649;|[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289])/g\n}, {\n base: 'v',\n letters: /(&#118;|&#9445;|&#65366;|&#7805;|&#7807;|&#651;|&#42847;|&#652;|[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C])/g\n}, {\n base: 'vy',\n letters: /(&#42849;|[\\uA761])/g\n}, {\n base: 'w',\n letters: /(&#119;|&#9446;|&#65367;|&#7809;|&#7811;|&#373;|&#7815;|&#7813;|&#7832;|&#7817;|&#11379;|[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73])/g\n}, {\n base: 'x',\n letters: /(&#120;|&#9447;|&#65368;|&#7819;|&#7821;|[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D])/g\n}, {\n base: 'y',\n letters: /(&#121;|&#9448;|&#65369;|&#7923;|&#253;|&#375;|&#7929;|&#563;|&#7823;|&#255;|&#7927;|&#7833;|&#7925;|&#436;|&#591;|&#7935;|[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF])/g\n}, {\n base: 'z',\n letters: /(&#122;|&#9449;|&#65370;|&#378;|&#7825;|&#380;|&#382;|&#7827;|&#7829;|&#438;|&#549;|&#576;|&#11372;|&#42851;|[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763])/g\n}];\n\nvar removeAccents = function removeAccents(str) {\n var formattedStr = str;\n lettersDiacritics.forEach(function (letterDiacritics) {\n formattedStr = formattedStr.replace(letterDiacritics.letters, letterDiacritics.base);\n });\n return formattedStr;\n};\n\nvar normalizeString = function normalizeString(str) {\n return removeAccents(str).toLowerCase();\n};\n\nvar getSubstringIndex = function getSubstringIndex(str, substr, ignoreAccents) {\n if (!ignoreAccents) {\n return str.toLowerCase().indexOf(substr.toLowerCase());\n }\n\n return normalizeString(str).indexOf(normalizeString(substr));\n};\n\nvar isIE = function isIE() {\n return !!document.documentMode;\n};\n\nvar isNumber = function isNumber(val) {\n return typeof val === 'number';\n};\n\nvar keys = function keys(obj) {\n return obj === Object(obj) ? Object.keys(obj) : [];\n};\n\nvar omit = function omit(obj) {\n var _ref;\n\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var keys = (_ref = []).concat.apply(_ref, rest);\n\n return Object.keys(obj).reduce(function (acc, k) {\n if (obj.hasOwnProperty(k) && !keys.includes(k) && obj[k] !== undefined) {\n acc[k] = obj[k];\n }\n\n return acc;\n }, {});\n};\n\nvar _excluded = [\"style\", \"className\", \"classNames\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction createDefaultStyle(defaultStyle, getModifiers) {\n var enhance = function enhance(ComponentToWrap) {\n var DefaultStyleEnhancer = function DefaultStyleEnhancer(_ref) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var modifiers = getModifiers ? getModifiers(rest) : undefined;\n var styles = useStyles(defaultStyle, {\n style: style,\n className: className,\n classNames: classNames\n }, modifiers);\n return /*#__PURE__*/React.createElement(ComponentToWrap, _extends({}, rest, {\n style: styles\n }));\n };\n\n var displayName = ComponentToWrap.displayName || ComponentToWrap.name || 'Component';\n DefaultStyleEnhancer.displayName = \"defaultStyle(\".concat(displayName, \")\"); // return DefaultStyleEnhancer\n\n return /*#__PURE__*/React.forwardRef(function (props, ref) {\n return DefaultStyleEnhancer(_objectSpread(_objectSpread({}, props), {}, {\n ref: ref\n }));\n });\n };\n\n return enhance;\n}\n\nvar _generateComponentKey = function _generateComponentKey(usedKeys, id) {\n if (!usedKeys.hasOwnProperty(id)) {\n usedKeys[id] = 0;\n } else {\n usedKeys[id]++;\n }\n\n return id + '_' + usedKeys[id];\n};\n\nfunction Highlighter(_ref) {\n var selectionStart = _ref.selectionStart,\n selectionEnd = _ref.selectionEnd,\n _ref$value = _ref.value,\n value = _ref$value === void 0 ? '' : _ref$value,\n onCaretPositionChange = _ref.onCaretPositionChange,\n containerRef = _ref.containerRef,\n children = _ref.children,\n singleLine = _ref.singleLine,\n style = _ref.style;\n\n var _useState = useState({\n left: undefined,\n top: undefined\n }),\n _useState2 = _slicedToArray(_useState, 2),\n position = _useState2[0],\n setPosition = _useState2[1];\n\n var _useState3 = useState(),\n _useState4 = _slicedToArray(_useState3, 2),\n caretElement = _useState4[0],\n setCaretElement = _useState4[1];\n\n useEffect(function () {\n notifyCaretPosition();\n });\n\n var notifyCaretPosition = function notifyCaretPosition() {\n if (!caretElement) {\n return;\n }\n\n var offsetLeft = caretElement.offsetLeft,\n offsetTop = caretElement.offsetTop;\n\n if (position.left === offsetLeft && position.top === offsetTop) {\n return;\n }\n\n var newPosition = {\n left: offsetLeft,\n top: offsetTop\n };\n setPosition(newPosition);\n onCaretPositionChange(newPosition);\n };\n\n var config = readConfigFromChildren(children);\n var caretPositionInMarkup;\n\n if (selectionEnd === selectionStart) {\n caretPositionInMarkup = mapPlainTextIndex(value, config, selectionStart, 'START');\n }\n\n var resultComponents = [];\n var componentKeys = {};\n var components = resultComponents;\n var substringComponentKey = 0;\n\n var textIteratee = function textIteratee(substr, index, indexInPlainText) {\n // check whether the caret element has to be inserted inside the current plain substring\n if (isNumber(caretPositionInMarkup) && caretPositionInMarkup >= index && caretPositionInMarkup <= index + substr.length) {\n // if yes, split substr at the caret position and insert the caret component\n var splitIndex = caretPositionInMarkup - index;\n components.push(renderSubstring(substr.substring(0, splitIndex), substringComponentKey)); // add all following substrings and mention components as children of the caret component\n\n components = [renderSubstring(substr.substring(splitIndex), substringComponentKey)];\n } else {\n components.push(renderSubstring(substr, substringComponentKey));\n }\n\n substringComponentKey++;\n };\n\n var mentionIteratee = function mentionIteratee(markup, index, indexInPlainText, id, display, mentionChildIndex, lastMentionEndIndex) {\n var key = _generateComponentKey(componentKeys, id);\n\n components.push(getMentionComponentForMatch(id, display, mentionChildIndex, key));\n };\n\n var renderSubstring = function renderSubstring(string, key) {\n // set substring span to hidden, so that Emojis are not shown double in Mobile Safari\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, style('substring'), {\n key: key\n }), string);\n };\n\n var getMentionComponentForMatch = function getMentionComponentForMatch(id, display, mentionChildIndex, key) {\n var props = {\n id: id,\n display: display,\n key: key\n };\n var child = Children.toArray(children)[mentionChildIndex];\n return /*#__PURE__*/React.cloneElement(child, props);\n };\n\n var renderHighlighterCaret = function renderHighlighterCaret(children) {\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, style('caret'), {\n ref: setCaretElement,\n key: \"caret\"\n }), children);\n };\n\n iterateMentionsMarkup(value, config, mentionIteratee, textIteratee); // append a span containing a space, to ensure the last text line has the correct height\n\n components.push(' ');\n\n if (components !== resultComponents) {\n // if a caret component is to be rendered, add all components that followed as its children\n resultComponents.push(renderHighlighterCaret(components));\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, style, {\n ref: containerRef\n }), resultComponents);\n}\n\nHighlighter.propTypes = {\n selectionStart: PropTypes.number,\n selectionEnd: PropTypes.number,\n value: PropTypes.string.isRequired,\n onCaretPositionChange: PropTypes.func.isRequired,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n};\nvar styled = createDefaultStyle({\n position: 'relative',\n boxSizing: 'border-box',\n width: '100%',\n color: 'transparent',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n border: '1px solid transparent',\n textAlign: 'start',\n '&singleLine': {\n whiteSpace: 'pre',\n wordWrap: null\n },\n substring: {\n visibility: 'hidden'\n }\n}, function (props) {\n return {\n '&singleLine': props.singleLine\n };\n});\nvar Highlighter$1 = styled(Highlighter);\n\nfunction Suggestion(_ref) {\n var id = _ref.id,\n focused = _ref.focused,\n ignoreAccents = _ref.ignoreAccents,\n index = _ref.index,\n onClick = _ref.onClick,\n onMouseEnter = _ref.onMouseEnter,\n query = _ref.query,\n renderSuggestion = _ref.renderSuggestion,\n suggestion = _ref.suggestion,\n style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var rest = {\n onClick: onClick,\n onMouseEnter: onMouseEnter\n };\n\n var renderContent = function renderContent() {\n var display = getDisplay();\n var highlightedDisplay = renderHighlightedDisplay(display);\n\n if (renderSuggestion) {\n return renderSuggestion(suggestion, query, highlightedDisplay, index, focused);\n }\n\n return highlightedDisplay;\n };\n\n var getDisplay = function getDisplay() {\n if (typeof suggestion === 'string') {\n return suggestion;\n }\n\n var id = suggestion.id,\n display = suggestion.display;\n\n if (id === undefined || !display) {\n return id;\n }\n\n return display;\n };\n\n var renderHighlightedDisplay = function renderHighlightedDisplay(display) {\n var i = getSubstringIndex(display, query, ignoreAccents);\n\n if (i === -1) {\n return /*#__PURE__*/React.createElement(\"span\", style('display'), display);\n }\n\n return /*#__PURE__*/React.createElement(\"span\", style('display'), display.substring(0, i), /*#__PURE__*/React.createElement(\"b\", style('highlight'), display.substring(i, i + query.length)), display.substring(i + query.length));\n };\n\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n id: id,\n role: \"option\",\n \"aria-selected\": focused\n }, rest, style), renderContent());\n}\n\nSuggestion.propTypes = {\n id: PropTypes.string.isRequired,\n query: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n ignoreAccents: PropTypes.bool,\n suggestion: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n display: PropTypes.string\n })]).isRequired,\n renderSuggestion: PropTypes.func,\n focused: PropTypes.bool\n};\nvar styled$1 = createDefaultStyle({\n cursor: 'pointer'\n}, function (props) {\n return {\n '&focused': props.focused\n };\n});\nvar Suggestion$1 = styled$1(Suggestion);\n\nfunction LoadingIndicator(_ref) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var styles = useStyles(defaultstyle, {\n style: style,\n className: className,\n classNames: classNames\n });\n var spinnerStyles = styles('spinner');\n return /*#__PURE__*/React.createElement(\"div\", styles, /*#__PURE__*/React.createElement(\"div\", spinnerStyles, /*#__PURE__*/React.createElement(\"div\", spinnerStyles(['element', 'element1'])), /*#__PURE__*/React.createElement(\"div\", spinnerStyles(['element', 'element2'])), /*#__PURE__*/React.createElement(\"div\", spinnerStyles(['element', 'element3'])), /*#__PURE__*/React.createElement(\"div\", spinnerStyles(['element', 'element4'])), /*#__PURE__*/React.createElement(\"div\", spinnerStyles(['element', 'element5']))));\n}\n\nvar defaultstyle = {};\n\nfunction SuggestionsOverlay(_ref) {\n var id = _ref.id,\n _ref$suggestions = _ref.suggestions,\n suggestions = _ref$suggestions === void 0 ? {} : _ref$suggestions,\n a11ySuggestionsListLabel = _ref.a11ySuggestionsListLabel,\n focusIndex = _ref.focusIndex,\n position = _ref.position,\n left = _ref.left,\n right = _ref.right,\n top = _ref.top,\n scrollFocusedIntoView = _ref.scrollFocusedIntoView,\n isLoading = _ref.isLoading,\n isOpened = _ref.isOpened,\n _ref$onSelect = _ref.onSelect,\n onSelect = _ref$onSelect === void 0 ? function () {\n return null;\n } : _ref$onSelect,\n ignoreAccents = _ref.ignoreAccents,\n containerRef = _ref.containerRef,\n children = _ref.children,\n style = _ref.style,\n customSuggestionsContainer = _ref.customSuggestionsContainer,\n onMouseDown = _ref.onMouseDown,\n onMouseEnter = _ref.onMouseEnter;\n\n var _useState = useState(undefined),\n _useState2 = _slicedToArray(_useState, 2),\n ulElement = _useState2[0],\n setUlElement = _useState2[1];\n\n useEffect(function () {\n if (!ulElement || ulElement.offsetHeight >= ulElement.scrollHeight || !scrollFocusedIntoView) {\n return;\n }\n\n var scrollTop = ulElement.scrollTop;\n\n var _ulElement$children$f = ulElement.children[focusIndex].getBoundingClientRect(),\n top = _ulElement$children$f.top,\n bottom = _ulElement$children$f.bottom;\n\n var _ulElement$getBoundin = ulElement.getBoundingClientRect(),\n topContainer = _ulElement$getBoundin.top;\n\n top = top - topContainer + scrollTop;\n bottom = bottom - topContainer + scrollTop;\n\n if (top < scrollTop) {\n ulElement.scrollTop = top;\n } else if (bottom > ulElement.offsetHeight) {\n ulElement.scrollTop = bottom - ulElement.offsetHeight;\n }\n }, [focusIndex, scrollFocusedIntoView, ulElement]);\n\n var renderSuggestions = function renderSuggestions() {\n var suggestionsToRender = /*#__PURE__*/React.createElement(\"ul\", _extends({\n ref: setUlElement,\n id: id,\n role: \"listbox\",\n \"aria-label\": a11ySuggestionsListLabel\n }, style('list')), Object.values(suggestions).reduce(function (accResults, _ref2) {\n var results = _ref2.results,\n queryInfo = _ref2.queryInfo;\n return [].concat(_toConsumableArray(accResults), _toConsumableArray(results.map(function (result, index) {\n return renderSuggestion(result, queryInfo, accResults.length + index);\n })));\n }, []));\n if (customSuggestionsContainer) return customSuggestionsContainer(suggestionsToRender);\n return suggestionsToRender;\n };\n\n var renderSuggestion = function renderSuggestion(result, queryInfo, index) {\n var isFocused = index === focusIndex;\n var childIndex = queryInfo.childIndex,\n query = queryInfo.query;\n var renderSuggestion = Children.toArray(children)[childIndex].props.renderSuggestion;\n return /*#__PURE__*/React.createElement(Suggestion$1, {\n style: style('item'),\n key: \"\".concat(childIndex, \"-\").concat(getID(result)),\n id: getSuggestionHtmlId(id, index),\n query: query,\n index: index,\n ignoreAccents: ignoreAccents,\n renderSuggestion: renderSuggestion,\n suggestion: result,\n focused: isFocused,\n onClick: function onClick() {\n return select(result, queryInfo);\n },\n onMouseEnter: function onMouseEnter() {\n return handleMouseEnter(index);\n }\n });\n };\n\n var renderLoadingIndicator = function renderLoadingIndicator() {\n if (!isLoading) {\n return;\n }\n\n return /*#__PURE__*/React.createElement(LoadingIndicator, {\n style: style('loadingIndicator')\n });\n };\n\n var handleMouseEnter = function handleMouseEnter(index, ev) {\n if (onMouseEnter) {\n onMouseEnter(index);\n }\n };\n\n var select = function select(suggestion, queryInfo) {\n onSelect(suggestion, queryInfo);\n };\n\n var getID = function getID(suggestion) {\n if (typeof suggestion === 'string') {\n return suggestion;\n }\n\n return suggestion.id;\n };\n\n if (!isOpened) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, inline({\n position: position || 'absolute',\n left: left,\n right: right,\n top: top\n }, style), {\n onMouseDown: onMouseDown,\n ref: containerRef\n }), renderSuggestions(), renderLoadingIndicator());\n}\n\nSuggestionsOverlay.propTypes = {\n id: PropTypes.string.isRequired,\n suggestions: PropTypes.object.isRequired,\n a11ySuggestionsListLabel: PropTypes.string,\n focusIndex: PropTypes.number,\n position: PropTypes.string,\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n scrollFocusedIntoView: PropTypes.bool,\n isLoading: PropTypes.bool,\n isOpened: PropTypes.bool.isRequired,\n onSelect: PropTypes.func,\n ignoreAccents: PropTypes.bool,\n customSuggestionsContainer: PropTypes.func,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })])\n};\nvar styled$2 = createDefaultStyle({\n zIndex: 1,\n backgroundColor: 'white',\n marginTop: 14,\n minWidth: 100,\n list: {\n margin: 0,\n padding: 0,\n listStyleType: 'none'\n }\n});\nvar SuggestionsOverlay$1 = styled$2(SuggestionsOverlay);\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar makeTriggerRegex = function makeTriggerRegex(trigger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (trigger instanceof RegExp) {\n return trigger;\n } else {\n var allowSpaceInQuery = options.allowSpaceInQuery;\n var escapedTriggerChar = escapeRegex(trigger); // first capture group is the part to be replaced on completion\n // second capture group is for extracting the search query\n\n return new RegExp(\"(?:^|\\\\s)(\".concat(escapedTriggerChar, \"([^\").concat(allowSpaceInQuery ? '' : '\\\\s').concat(escapedTriggerChar, \"]*))$\"));\n }\n};\n\nvar getDataProvider = function getDataProvider(data, ignoreAccents) {\n if (data instanceof Array) {\n // if data is an array, create a function to query that\n return function (query, callback) {\n var results = [];\n\n for (var i = 0, l = data.length; i < l; ++i) {\n var display = data[i].display || data[i].id;\n\n if (getSubstringIndex(display, query, ignoreAccents) >= 0) {\n results.push(data[i]);\n }\n }\n\n return results;\n };\n } else {\n // expect data to be a query function\n return data;\n }\n};\n\nvar KEY = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n UP: 38,\n DOWN: 40\n};\nvar isComposing = false;\nvar propTypes = {\n /**\n * If set to `true` a regular text input element will be rendered\n * instead of a textarea\n */\n singleLine: PropTypes.bool,\n allowSpaceInQuery: PropTypes.bool,\n allowSuggestionsAboveCursor: PropTypes.bool,\n forceSuggestionsAboveCursor: PropTypes.bool,\n ignoreAccents: PropTypes.bool,\n a11ySuggestionsListLabel: PropTypes.string,\n value: PropTypes.string,\n onKeyDown: PropTypes.func,\n customSuggestionsContainer: PropTypes.func,\n onSelect: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n suggestionsPortalHost: typeof Element === 'undefined' ? PropTypes.any : PropTypes.PropTypes.instanceOf(Element),\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n};\n\nvar MentionsInput = /*#__PURE__*/function (_React$Component) {\n _inherits(MentionsInput, _React$Component);\n\n var _super = _createSuper(MentionsInput);\n\n function MentionsInput(_props) {\n var _this;\n\n _classCallCheck(this, MentionsInput);\n\n _this = _super.call(this, _props);\n\n _defineProperty(_assertThisInitialized(_this), \"setContainerElement\", function (el) {\n _this.containerElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInputProps\", function () {\n var _this$props = _this.props,\n readOnly = _this$props.readOnly,\n disabled = _this$props.disabled,\n style = _this$props.style; // pass all props that neither we, nor substyle, consume through to the input control\n\n var props = omit(_this.props, ['style', 'classNames', 'className'], // substyle props\n keys(propTypes));\n return _objectSpread$1(_objectSpread$1(_objectSpread$1(_objectSpread$1({}, props), style('input')), {}, {\n value: _this.getPlainText(),\n onScroll: _this.updateHighlighterScroll\n }, !readOnly && !disabled && {\n onChange: _this.handleChange,\n onSelect: _this.handleSelect,\n onKeyDown: _this.handleKeyDown,\n onBlur: _this.handleBlur,\n onCompositionStart: _this.handleCompositionStart,\n onCompositionEnd: _this.handleCompositionEnd\n }), _this.isOpened() && {\n role: 'combobox',\n 'aria-controls': _this.uuidSuggestionsOverlay,\n 'aria-expanded': true,\n 'aria-autocomplete': 'list',\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': getSuggestionHtmlId(_this.uuidSuggestionsOverlay, _this.state.focusIndex)\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderControl\", function () {\n var _this$props2 = _this.props,\n singleLine = _this$props2.singleLine,\n style = _this$props2.style;\n\n var inputProps = _this.getInputProps();\n\n return /*#__PURE__*/React.createElement(\"div\", style('control'), _this.renderHighlighter(), singleLine ? _this.renderInput(inputProps) : _this.renderTextarea(inputProps));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderInput\", function (props) {\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"text\",\n ref: _this.setInputRef\n }, props));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderTextarea\", function (props) {\n return /*#__PURE__*/React.createElement(\"textarea\", _extends({\n ref: _this.setInputRef\n }, props));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setInputRef\", function (el) {\n _this.inputElement = el;\n var inputRef = _this.props.inputRef;\n\n if (typeof inputRef === 'function') {\n inputRef(el);\n } else if (inputRef) {\n inputRef.current = el;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setSuggestionsElement\", function (el) {\n _this.suggestionsElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSuggestionsOverlay\", function () {\n if (!isNumber(_this.state.selectionStart)) {\n // do not show suggestions when the input does not have the focus\n return null;\n }\n\n var _this$state$suggestio = _this.state.suggestionsPosition,\n position = _this$state$suggestio.position,\n left = _this$state$suggestio.left,\n top = _this$state$suggestio.top,\n right = _this$state$suggestio.right;\n var suggestionsNode = /*#__PURE__*/React.createElement(SuggestionsOverlay$1, {\n id: _this.uuidSuggestionsOverlay,\n style: _this.props.style('suggestions'),\n position: position,\n left: left,\n top: top,\n right: right,\n focusIndex: _this.state.focusIndex,\n scrollFocusedIntoView: _this.state.scrollFocusedIntoView,\n containerRef: _this.setSuggestionsElement,\n suggestions: _this.state.suggestions,\n customSuggestionsContainer: _this.props.customSuggestionsContainer,\n onSelect: _this.addMention,\n onMouseDown: _this.handleSuggestionsMouseDown,\n onMouseEnter: _this.handleSuggestionsMouseEnter,\n isLoading: _this.isLoading(),\n isOpened: _this.isOpened(),\n ignoreAccents: _this.props.ignoreAccents,\n a11ySuggestionsListLabel: _this.props.a11ySuggestionsListLabel\n }, _this.props.children);\n\n if (_this.props.suggestionsPortalHost) {\n return /*#__PURE__*/ReactDOM.createPortal(suggestionsNode, _this.props.suggestionsPortalHost);\n } else {\n return suggestionsNode;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderHighlighter\", function () {\n var _this$state = _this.state,\n selectionStart = _this$state.selectionStart,\n selectionEnd = _this$state.selectionEnd;\n var _this$props3 = _this.props,\n singleLine = _this$props3.singleLine,\n children = _this$props3.children,\n value = _this$props3.value,\n style = _this$props3.style;\n return /*#__PURE__*/React.createElement(Highlighter$1, {\n containerRef: _this.setHighlighterElement,\n style: style('highlighter'),\n value: value,\n singleLine: singleLine,\n selectionStart: selectionStart,\n selectionEnd: selectionEnd,\n onCaretPositionChange: _this.handleCaretPositionChange\n }, children);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setHighlighterElement\", function (el) {\n _this.highlighterElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCaretPositionChange\", function (position) {\n _this.setState({\n caretPosition: position\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPlainText\", function () {\n return getPlainText(_this.props.value || '', readConfigFromChildren(_this.props.children));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"executeOnChange\", function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (_this.props.onChange) {\n var _this$props4;\n\n return (_this$props4 = _this.props).onChange.apply(_this$props4, [event].concat(args));\n }\n\n if (_this.props.valueLink) {\n var _this$props$valueLink;\n\n return (_this$props$valueLink = _this.props.valueLink).requestChange.apply(_this$props$valueLink, [event.target.value].concat(args));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleChange\", function (ev) {\n isComposing = false;\n\n if (isIE()) {\n // if we are inside iframe, we need to find activeElement within its contentDocument\n var currentDocument = document.activeElement && document.activeElement.contentDocument || document;\n\n if (currentDocument.activeElement !== ev.target) {\n // fix an IE bug (blur from empty input element with placeholder attribute trigger \"input\" event)\n return;\n }\n }\n\n var value = _this.props.value || '';\n var config = readConfigFromChildren(_this.props.children);\n var newPlainTextValue = ev.target.value;\n var selectionStartBefore = _this.state.selectionStart;\n\n if (selectionStartBefore == null) {\n selectionStartBefore = ev.target.selectionStart;\n }\n\n var selectionEndBefore = _this.state.selectionEnd;\n\n if (selectionEndBefore == null) {\n selectionEndBefore = ev.target.selectionEnd;\n } // Derive the new value to set by applying the local change in the textarea's plain text\n\n\n var newValue = applyChangeToValue(value, newPlainTextValue, {\n selectionStartBefore: selectionStartBefore,\n selectionEndBefore: selectionEndBefore,\n selectionEndAfter: ev.target.selectionEnd\n }, config); // In case a mention is deleted, also adjust the new plain text value\n\n newPlainTextValue = getPlainText(newValue, config); // Save current selection after change to be able to restore caret position after rerendering\n\n var selectionStart = ev.target.selectionStart;\n var selectionEnd = ev.target.selectionEnd;\n var setSelectionAfterMentionChange = false; // Adjust selection range in case a mention will be deleted by the characters outside of the\n // selection range that are automatically deleted\n\n var startOfMention = findStartOfMentionInPlainText(value, config, selectionStart);\n\n if (startOfMention !== undefined && _this.state.selectionEnd > startOfMention) {\n // only if a deletion has taken place\n selectionStart = startOfMention + (ev.nativeEvent.data ? ev.nativeEvent.data.length : 0);\n selectionEnd = selectionStart;\n setSelectionAfterMentionChange = true;\n }\n\n _this.setState({\n selectionStart: selectionStart,\n selectionEnd: selectionEnd,\n setSelectionAfterMentionChange: setSelectionAfterMentionChange\n });\n\n var mentions = getMentions(newValue, config);\n\n if (ev.nativeEvent.isComposing && selectionStart === selectionEnd) {\n _this.updateMentionsQueries(_this.inputElement.value, selectionStart);\n } // Propagate change\n // let handleChange = this.getOnChange(this.props) || emptyFunction;\n\n\n var eventMock = {\n target: {\n value: newValue\n }\n }; // this.props.onChange.call(this, eventMock, newValue, newPlainTextValue, mentions);\n\n _this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSelect\", function (ev) {\n // keep track of selection range / caret position\n _this.setState({\n selectionStart: ev.target.selectionStart,\n selectionEnd: ev.target.selectionEnd\n }); // do nothing while a IME composition session is active\n\n\n if (isComposing) return; // refresh suggestions queries\n\n var el = _this.inputElement;\n\n if (ev.target.selectionStart === ev.target.selectionEnd) {\n _this.updateMentionsQueries(el.value, ev.target.selectionStart);\n } else {\n _this.clearSuggestions();\n } // sync highlighters scroll position\n\n\n _this.updateHighlighterScroll();\n\n _this.props.onSelect(ev);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleKeyDown\", function (ev) {\n // do not intercept key events if the suggestions overlay is not shown\n var suggestionsCount = countSuggestions(_this.state.suggestions);\n\n if (suggestionsCount === 0 || !_this.suggestionsElement) {\n _this.props.onKeyDown(ev);\n\n return;\n }\n\n if (Object.values(KEY).indexOf(ev.keyCode) >= 0) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n switch (ev.keyCode) {\n case KEY.ESC:\n {\n _this.clearSuggestions();\n\n return;\n }\n\n case KEY.DOWN:\n {\n _this.shiftFocus(+1);\n\n return;\n }\n\n case KEY.UP:\n {\n _this.shiftFocus(-1);\n\n return;\n }\n\n case KEY.RETURN:\n {\n _this.selectFocused();\n\n return;\n }\n\n case KEY.TAB:\n {\n _this.selectFocused();\n\n return;\n }\n\n default:\n {\n return;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"shiftFocus\", function (delta) {\n var suggestionsCount = countSuggestions(_this.state.suggestions);\n\n _this.setState({\n focusIndex: (suggestionsCount + _this.state.focusIndex + delta) % suggestionsCount,\n scrollFocusedIntoView: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectFocused\", function () {\n var _this$state2 = _this.state,\n suggestions = _this$state2.suggestions,\n focusIndex = _this$state2.focusIndex;\n var _Object$values$reduce = Object.values(suggestions).reduce(function (acc, _ref) {\n var results = _ref.results,\n queryInfo = _ref.queryInfo;\n return [].concat(_toConsumableArray(acc), _toConsumableArray(results.map(function (result) {\n return {\n result: result,\n queryInfo: queryInfo\n };\n })));\n }, [])[focusIndex],\n result = _Object$values$reduce.result,\n queryInfo = _Object$values$reduce.queryInfo;\n\n _this.addMention(result, queryInfo);\n\n _this.setState({\n focusIndex: 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleBlur\", function (ev) {\n var clickedSuggestion = _this._suggestionsMouseDown;\n _this._suggestionsMouseDown = false; // only reset selection if the mousedown happened on an element\n // other than the suggestions overlay\n\n if (!clickedSuggestion) {\n _this.setState({\n selectionStart: null,\n selectionEnd: null\n });\n }\n\n window.setTimeout(function () {\n _this.updateHighlighterScroll();\n }, 1);\n\n _this.props.onBlur(ev, clickedSuggestion);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSuggestionsMouseDown\", function (ev) {\n _this._suggestionsMouseDown = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSuggestionsMouseEnter\", function (focusIndex) {\n _this.setState({\n focusIndex: focusIndex,\n scrollFocusedIntoView: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSuggestionsPosition\", function () {\n var caretPosition = _this.state.caretPosition;\n var _this$props5 = _this.props,\n suggestionsPortalHost = _this$props5.suggestionsPortalHost,\n allowSuggestionsAboveCursor = _this$props5.allowSuggestionsAboveCursor,\n forceSuggestionsAboveCursor = _this$props5.forceSuggestionsAboveCursor;\n\n if (!caretPosition || !_this.suggestionsElement) {\n return;\n }\n\n var suggestions = _this.suggestionsElement;\n var highlighter = _this.highlighterElement; // first get viewport-relative position (highlighter is offsetParent of caret):\n\n var caretOffsetParentRect = highlighter.getBoundingClientRect();\n var caretHeight = getComputedStyleLengthProp(highlighter, 'font-size');\n var viewportRelative = {\n left: caretOffsetParentRect.left + caretPosition.left,\n top: caretOffsetParentRect.top + caretPosition.top + caretHeight\n };\n var viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n if (!suggestions) {\n return;\n }\n\n var position = {}; // if suggestions menu is in a portal, update position to be releative to its portal node\n\n if (suggestionsPortalHost) {\n position.position = 'fixed';\n var left = viewportRelative.left;\n var top = viewportRelative.top; // absolute/fixed positioned elements are positioned according to their entire box including margins; so we remove margins here:\n\n left -= getComputedStyleLengthProp(suggestions, 'margin-left');\n top -= getComputedStyleLengthProp(suggestions, 'margin-top'); // take into account highlighter/textinput scrolling:\n\n left -= highlighter.scrollLeft;\n top -= highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window\n\n var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n if (left + suggestions.offsetWidth > viewportWidth) {\n position.left = Math.max(0, viewportWidth - suggestions.offsetWidth);\n } else {\n position.left = left;\n } // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.\n // Move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height\n // is small enough to NOT cover up the caret\n\n\n if (allowSuggestionsAboveCursor && top + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < top - caretHeight || forceSuggestionsAboveCursor) {\n position.top = Math.max(0, top - suggestions.offsetHeight - caretHeight);\n } else {\n position.top = top;\n }\n } else {\n var _left = caretPosition.left - highlighter.scrollLeft;\n\n var _top = caretPosition.top - highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window\n\n\n if (_left + suggestions.offsetWidth > _this.containerElement.offsetWidth) {\n position.right = 0;\n } else {\n position.left = _left;\n } // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.\n // move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height\n // is small enough to NOT cover up the caret\n\n\n if (allowSuggestionsAboveCursor && viewportRelative.top - highlighter.scrollTop + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < caretOffsetParentRect.top - caretHeight - highlighter.scrollTop || forceSuggestionsAboveCursor) {\n position.top = _top - suggestions.offsetHeight - caretHeight;\n } else {\n position.top = _top;\n }\n }\n\n if (position.left === _this.state.suggestionsPosition.left && position.top === _this.state.suggestionsPosition.top && position.position === _this.state.suggestionsPosition.position) {\n return;\n }\n\n _this.setState({\n suggestionsPosition: position\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateHighlighterScroll\", function () {\n var input = _this.inputElement;\n var highlighter = _this.highlighterElement;\n\n if (!input || !highlighter) {\n // since the invocation of this function is deferred,\n // the whole component may have been unmounted in the meanwhile\n return;\n }\n\n highlighter.scrollLeft = input.scrollLeft;\n highlighter.scrollTop = input.scrollTop;\n highlighter.height = input.height;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCompositionStart\", function () {\n isComposing = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCompositionEnd\", function () {\n isComposing = false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setSelection\", function (selectionStart, selectionEnd) {\n if (selectionStart === null || selectionEnd === null) return;\n var el = _this.inputElement;\n\n if (el.setSelectionRange) {\n el.setSelectionRange(selectionStart, selectionEnd);\n } else if (el.createTextRange) {\n var range = el.createTextRange();\n range.collapse(true);\n range.moveEnd('character', selectionEnd);\n range.moveStart('character', selectionStart);\n range.select();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateMentionsQueries\", function (plainTextValue, caretPosition) {\n // Invalidate previous queries. Async results for previous queries will be neglected.\n _this._queryId++;\n _this.suggestions = {};\n\n _this.setState({\n suggestions: {}\n });\n\n var value = _this.props.value || '';\n var children = _this.props.children;\n var config = readConfigFromChildren(children);\n var positionInValue = mapPlainTextIndex(value, config, caretPosition, 'NULL'); // If caret is inside of mention, do not query\n\n if (positionInValue === null) {\n return;\n } // Extract substring in between the end of the previous mention and the caret\n\n\n var substringStartIndex = getEndOfLastMention(value.substring(0, positionInValue), config);\n var substring = plainTextValue.substring(substringStartIndex, caretPosition); // Check if suggestions have to be shown:\n // Match the trigger patterns of all Mention children on the extracted substring\n\n React.Children.forEach(children, function (child, childIndex) {\n if (!child) {\n return;\n }\n\n var regex = makeTriggerRegex(child.props.trigger, _this.props);\n var match = substring.match(regex);\n\n if (match) {\n var querySequenceStart = substringStartIndex + substring.indexOf(match[1], match.index);\n\n _this.queryData(match[2], childIndex, querySequenceStart, querySequenceStart + match[1].length, plainTextValue);\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clearSuggestions\", function () {\n // Invalidate previous queries. Async results for previous queries will be neglected.\n _this._queryId++;\n _this.suggestions = {};\n\n _this.setState({\n suggestions: {},\n focusIndex: 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"queryData\", function (query, childIndex, querySequenceStart, querySequenceEnd, plainTextValue) {\n var _this$props6 = _this.props,\n children = _this$props6.children,\n ignoreAccents = _this$props6.ignoreAccents;\n var mentionChild = Children.toArray(children)[childIndex];\n var provideData = getDataProvider(mentionChild.props.data, ignoreAccents);\n var syncResult = provideData(query, _this.updateSuggestions.bind(null, _this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue));\n\n if (syncResult instanceof Array) {\n _this.updateSuggestions(_this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue, syncResult);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSuggestions\", function (queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue, results) {\n // neglect async results from previous queries\n if (queryId !== _this._queryId) return; // save in property so that multiple sync state updates from different mentions sources\n // won't overwrite each other\n\n _this.suggestions = _objectSpread$1(_objectSpread$1({}, _this.suggestions), {}, _defineProperty({}, childIndex, {\n queryInfo: {\n childIndex: childIndex,\n query: query,\n querySequenceStart: querySequenceStart,\n querySequenceEnd: querySequenceEnd,\n plainTextValue: plainTextValue\n },\n results: results\n }));\n var focusIndex = _this.state.focusIndex;\n var suggestionsCount = countSuggestions(_this.suggestions);\n\n _this.setState({\n suggestions: _this.suggestions,\n focusIndex: focusIndex >= suggestionsCount ? Math.max(suggestionsCount - 1, 0) : focusIndex\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"addMention\", function (_ref2, _ref3) {\n var id = _ref2.id,\n display = _ref2.display;\n var childIndex = _ref3.childIndex,\n querySequenceStart = _ref3.querySequenceStart,\n querySequenceEnd = _ref3.querySequenceEnd,\n plainTextValue = _ref3.plainTextValue;\n // Insert mention in the marked up value at the correct position\n var value = _this.props.value || '';\n var config = readConfigFromChildren(_this.props.children);\n var mentionsChild = Children.toArray(_this.props.children)[childIndex];\n var _mentionsChild$props = mentionsChild.props,\n markup = _mentionsChild$props.markup,\n displayTransform = _mentionsChild$props.displayTransform,\n appendSpaceOnAdd = _mentionsChild$props.appendSpaceOnAdd,\n onAdd = _mentionsChild$props.onAdd;\n var start = mapPlainTextIndex(value, config, querySequenceStart, 'START');\n var end = start + querySequenceEnd - querySequenceStart;\n var insert = makeMentionsMarkup(markup, id, display);\n\n if (appendSpaceOnAdd) {\n insert += ' ';\n }\n\n var newValue = spliceString(value, start, end, insert); // Refocus input and set caret position to end of mention\n\n _this.inputElement.focus();\n\n var displayValue = displayTransform(id, display);\n\n if (appendSpaceOnAdd) {\n displayValue += ' ';\n }\n\n var newCaretPosition = querySequenceStart + displayValue.length;\n\n _this.setState({\n selectionStart: newCaretPosition,\n selectionEnd: newCaretPosition,\n setSelectionAfterMentionChange: true\n }); // Propagate change\n\n\n var eventMock = {\n target: {\n value: newValue\n }\n };\n var mentions = getMentions(newValue, config);\n var newPlainTextValue = spliceString(plainTextValue, querySequenceStart, querySequenceEnd, displayValue);\n\n _this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);\n\n if (onAdd) {\n onAdd(id, display, start, end);\n } // Make sure the suggestions overlay is closed\n\n\n _this.clearSuggestions();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isLoading\", function () {\n var isLoading = false;\n React.Children.forEach(_this.props.children, function (child) {\n isLoading = isLoading || child && child.props.isLoading;\n });\n return isLoading;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isOpened\", function () {\n return isNumber(_this.state.selectionStart) && (countSuggestions(_this.state.suggestions) !== 0 || _this.isLoading());\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_queryId\", 0);\n\n _this.suggestions = {};\n _this.uuidSuggestionsOverlay = Math.random().toString(16).substring(2);\n _this.handleCopy = _this.handleCopy.bind(_assertThisInitialized(_this));\n _this.handleCut = _this.handleCut.bind(_assertThisInitialized(_this));\n _this.handlePaste = _this.handlePaste.bind(_assertThisInitialized(_this));\n _this.state = {\n focusIndex: 0,\n selectionStart: null,\n selectionEnd: null,\n suggestions: {},\n caretPosition: null,\n suggestionsPosition: {},\n setSelectionAfterHandlePaste: false\n };\n return _this;\n }\n\n _createClass(MentionsInput, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('copy', this.handleCopy);\n document.addEventListener('cut', this.handleCut);\n document.addEventListener('paste', this.handlePaste);\n this.updateSuggestionsPosition();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // Update position of suggestions unless this componentDidUpdate was\n // triggered by an update to suggestionsPosition.\n if (prevState.suggestionsPosition === this.state.suggestionsPosition) {\n this.updateSuggestionsPosition();\n } // maintain selection in case a mention is added/removed causing\n // the cursor to jump to the end\n\n\n if (this.state.setSelectionAfterMentionChange) {\n this.setState({\n setSelectionAfterMentionChange: false\n });\n this.setSelection(this.state.selectionStart, this.state.selectionEnd);\n }\n\n if (this.state.setSelectionAfterHandlePaste) {\n this.setState({\n setSelectionAfterHandlePaste: false\n });\n this.setSelection(this.state.selectionStart, this.state.selectionEnd);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('copy', this.handleCopy);\n document.removeEventListener('cut', this.handleCut);\n document.removeEventListener('paste', this.handlePaste);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: this.setContainerElement\n }, this.props.style), this.renderControl(), this.renderSuggestionsOverlay());\n }\n }, {\n key: \"handlePaste\",\n value: function handlePaste(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n var _this$state3 = this.state,\n selectionStart = _this$state3.selectionStart,\n selectionEnd = _this$state3.selectionEnd;\n var _this$props7 = this.props,\n value = _this$props7.value,\n children = _this$props7.children;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n var pastedMentions = event.clipboardData.getData('text/react-mentions');\n var pastedData = event.clipboardData.getData('text/plain');\n var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData).replace(/\\r/g, '');\n var newPlainTextValue = getPlainText(newValue, config);\n var eventMock = {\n target: _objectSpread$1(_objectSpread$1({}, event.target), {}, {\n value: newValue\n })\n };\n this.executeOnChange(eventMock, newValue, newPlainTextValue, getMentions(newValue, config)); // Move the cursor position to the end of the pasted data\n\n var startOfMention = findStartOfMentionInPlainText(value, config, selectionStart);\n var nextPos = (startOfMention || selectionStart) + getPlainText(pastedMentions || pastedData, config).length;\n this.setState({\n selectionStart: nextPos,\n selectionEnd: nextPos,\n setSelectionAfterHandlePaste: true\n });\n }\n }, {\n key: \"saveSelectionToClipboard\",\n value: function saveSelectionToClipboard(event) {\n // use the actual selectionStart & selectionEnd instead of the one stored\n // in state to ensure copy & paste also works on disabled inputs & textareas\n var selectionStart = this.inputElement.selectionStart;\n var selectionEnd = this.inputElement.selectionEnd;\n var _this$props8 = this.props,\n children = _this$props8.children,\n value = _this$props8.value;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n event.clipboardData.setData('text/plain', event.target.value.slice(selectionStart, selectionEnd));\n event.clipboardData.setData('text/react-mentions', value.slice(markupStartIndex, markupEndIndex));\n }\n }, {\n key: \"supportsClipboardActions\",\n value: function supportsClipboardActions(event) {\n return !!event.clipboardData;\n }\n }, {\n key: \"handleCopy\",\n value: function handleCopy(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n this.saveSelectionToClipboard(event);\n }\n }, {\n key: \"handleCut\",\n value: function handleCut(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n this.saveSelectionToClipboard(event);\n var _this$state4 = this.state,\n selectionStart = _this$state4.selectionStart,\n selectionEnd = _this$state4.selectionEnd;\n var _this$props9 = this.props,\n children = _this$props9.children,\n value = _this$props9.value;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n var newValue = [value.slice(0, markupStartIndex), value.slice(markupEndIndex)].join('');\n var newPlainTextValue = getPlainText(newValue, config);\n var eventMock = {\n target: _objectSpread$1(_objectSpread$1({}, event.target), {}, {\n value: newPlainTextValue\n })\n };\n this.executeOnChange(eventMock, newValue, newPlainTextValue, getMentions(value, config));\n } // Handle input element's change event\n\n }]);\n\n return MentionsInput;\n}(React.Component);\n/**\n * Returns the computed length property value for the provided element.\n * Note: According to spec and testing, can count on length values coming back in pixels. See https://developer.mozilla.org/en-US/docs/Web/CSS/used_value#Difference_from_computed_value\n */\n\n\n_defineProperty(MentionsInput, \"propTypes\", propTypes);\n\n_defineProperty(MentionsInput, \"defaultProps\", {\n ignoreAccents: false,\n singleLine: false,\n allowSuggestionsAboveCursor: false,\n onKeyDown: function onKeyDown() {\n return null;\n },\n onSelect: function onSelect() {\n return null;\n },\n onBlur: function onBlur() {\n return null;\n }\n});\n\nvar getComputedStyleLengthProp = function getComputedStyleLengthProp(forElement, propertyName) {\n var length = parseFloat(window.getComputedStyle(forElement, null).getPropertyValue(propertyName));\n return isFinite(length) ? length : 0;\n};\n\nvar isMobileSafari = typeof navigator !== 'undefined' && /iPhone|iPad|iPod/i.test(navigator.userAgent);\nvar styled$3 = createDefaultStyle({\n position: 'relative',\n overflowY: 'visible',\n input: {\n display: 'block',\n width: '100%',\n position: 'absolute',\n margin: 0,\n top: 0,\n left: 0,\n boxSizing: 'border-box',\n backgroundColor: 'transparent',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit'\n },\n '&multiLine': {\n input: _objectSpread$1({\n height: '100%',\n bottom: 0,\n overflow: 'hidden',\n resize: 'none'\n }, isMobileSafari ? {\n marginTop: 1,\n marginLeft: -3\n } : null)\n }\n}, function (_ref4) {\n var singleLine = _ref4.singleLine;\n return {\n '&singleLine': singleLine,\n '&multiLine': !singleLine\n };\n});\nvar MentionsInput$1 = styled$3(MentionsInput);\n\nvar defaultStyle = {\n fontWeight: 'inherit'\n};\n\nvar Mention = function Mention(_ref) {\n var display = _ref.display,\n style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var styles = useStyles(defaultStyle, {\n style: style,\n className: className,\n classNames: classNames\n });\n return /*#__PURE__*/React.createElement(\"strong\", styles, display);\n};\n\nMention.propTypes = {\n /**\n * Called when a new mention is added in the input\n *\n * Example:\n *\n * ```js\n * function(id, display) {\n * console.log(\"user \" + display + \" was mentioned!\");\n * }\n * ```\n */\n onAdd: PropTypes.func,\n onRemove: PropTypes.func,\n renderSuggestion: PropTypes.func,\n trigger: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),\n markup: PropTypes.string,\n displayTransform: PropTypes.func,\n\n /**\n * If set to `true` spaces will not interrupt matching suggestions\n */\n allowSpaceInQuery: PropTypes.bool,\n isLoading: PropTypes.bool\n};\nMention.defaultProps = {\n trigger: '@',\n markup: '@[__display__](__id__)',\n displayTransform: function displayTransform(id, display) {\n return display || id;\n },\n onAdd: function onAdd() {\n return null;\n },\n onRemove: function onRemove() {\n return null;\n },\n renderSuggestion: null,\n isLoading: false,\n appendSpaceOnAdd: false\n};\n\nexport { Mention, MentionsInput$1 as MentionsInput };\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spreadArray(__spreadArray([], __read(acc), false), __read((Array.isArray(files) ? flatten(files) : [files])), false); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(\"\".concat(item, \" is not a File\"));\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import { useEffect, useState } from 'react';\nimport * as React from 'react';\nimport Modal, { ModalProps } from 'components/semantic/Modal';\n\nimport IconConstants from 'constants/IconConstants';\nimport { formatSize } from 'utils/ValueFormat';\nimport { useTranslation } from 'react-i18next';\nimport { translate } from 'utils/TranslationUtils';\n\nimport * as UI from 'types/ui';\n\nimport { AudioFile, ImageFile, TextFile, VideoFile } from 'components/file-preview';\n\nimport Message from 'components/semantic/Message';\nimport LayoutHeader from 'components/semantic/LayoutHeader';\nimport { fileToText } from 'utils/FileUtils';\n\ninterface FilePreviewDialogProps extends ModalProps {\n files: File[];\n onConfirm: (files: File[]) => Promise<void>;\n}\n\nconst getViewerElement = (file: File, previewUrl: string, t: UI.TranslateF) => {\n if (file.type.includes('text') && file.size <= 1 * 1024 * 1024) {\n return <TextFile textGetter={() => fileToText(file)} />;\n }\n\n if (file.type.includes('audio')) {\n return <AudioFile url={previewUrl} autoPlay={false} />;\n }\n\n if (file.type.includes('image')) {\n return <ImageFile url={previewUrl} alt={file.name} />;\n }\n\n if (file.type.includes('video')) {\n return <VideoFile url={previewUrl} autoPlay={false} />;\n }\n\n return <Message title={translate('Preview is not available', t, UI.Modules.COMMON)} />;\n};\n\ninterface PreviewFile {\n file: File;\n url: string;\n}\n\nconst FilePreviewDialog: React.FC<FilePreviewDialogProps> = ({\n files,\n onConfirm,\n ...other\n}) => {\n const [previewFiles, setPreviewFiles] = useState<PreviewFile[] | null>(null);\n const { t } = useTranslation();\n\n useEffect(() => {\n const previews = files.map((file) => ({\n url: URL.createObjectURL(file),\n file,\n }));\n\n setPreviewFiles(previews);\n return () => previews.forEach((p) => URL.revokeObjectURL(p.url));\n }, []);\n\n if (!previewFiles) {\n return null;\n }\n\n const handleConfirm = () => {\n return onConfirm(files);\n };\n\n return (\n <Modal\n {...other}\n className=\"file-preview-dialog\"\n onApprove={handleConfirm}\n closable={true}\n fullHeight={true}\n approveCaption={translate('Upload', t, UI.Modules.COMMON)}\n icon={IconConstants.UPLOAD}\n >\n {previewFiles.map(({ file, url }) => (\n <div\n key={url}\n className=\"ui segment\"\n style={{\n overflowX: 'auto',\n }}\n >\n <LayoutHeader title={file.name} subHeader={formatSize(file.size, t)} />\n {getViewerElement(file, url, t)}\n </div>\n ))}\n </Modal>\n );\n};\n\nexport default FilePreviewDialog;\n","//import PropTypes from 'prop-types';\r\nimport * as React from 'react';\r\nimport cx from 'classnames';\r\n\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport SectionedDropdown from 'components/semantic/SectionedDropdown';\r\nimport MenuSection from 'components/semantic/MenuSection';\r\nimport MenuItemLink from 'components/semantic/MenuItemLink';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport DataProviderDecorator, {\r\n DataProviderDecoratorChildProps,\r\n} from 'decorators/DataProviderDecorator';\r\nimport ShareConstants from 'constants/ShareConstants';\r\nimport NotificationActions from 'actions/NotificationActions';\r\nimport IconConstants from 'constants/IconConstants';\r\nimport FileIcon from 'components/icon/FileIcon';\r\n\r\nimport { translate, toI18nKey } from 'utils/TranslationUtils';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport interface TempShareDropdownProps {\r\n handleUpload: (evt: React.SyntheticEvent<any>) => void;\r\n style?: React.CSSProperties;\r\n className?: string;\r\n\r\n // Allows temporarily replacing the content without\r\n // the need to refetch all temp share data\r\n overrideContent?: React.ReactElement | null;\r\n}\r\n\r\ninterface DataProps {\r\n files: API.TempShareItem[];\r\n}\r\n\r\ntype Props = TempShareDropdownProps & DataProps & DataProviderDecoratorChildProps;\r\n\r\nconst getDropdownItem = (\r\n file: API.TempShareItem,\r\n onClick: (p: API.TempShareItem) => void,\r\n) => {\r\n let title = file.name;\r\n if (file.user) {\r\n title += ` (${file.user.nicks})`;\r\n }\r\n\r\n return (\r\n <MenuItemLink\r\n key={file.id}\r\n onClick={() => onClick(file)}\r\n icon={<FileIcon typeInfo={file.type} />}\r\n >\r\n {title}\r\n </MenuItemLink>\r\n );\r\n};\r\n\r\nconst TempShareDropdown = React.memo<Props>(function TempShareDropdown({\r\n files,\r\n handleUpload,\r\n style,\r\n className,\r\n overrideContent,\r\n}) {\r\n const { t } = useTranslation();\r\n\r\n if (!!overrideContent) {\r\n return overrideContent;\r\n }\r\n\r\n const onClickFile = (file: API.TempShareItem) => {\r\n SocketService.delete(`${ShareConstants.TEMP_SHARES_URL}/${file.id}`)\r\n .then((res) => {\r\n NotificationActions.success({\r\n title: t(toI18nKey('fileNoLongerShared', UI.Modules.COMMON), {\r\n defaultValue: 'File {{file.name}} is no longer shared',\r\n replace: {\r\n file,\r\n },\r\n }),\r\n });\r\n })\r\n .catch((e) => {\r\n NotificationActions.apiError('Failed to remove shared item', e);\r\n });\r\n };\r\n\r\n const classNames = cx('top left pointing actions', className);\r\n\r\n return (\r\n <SectionedDropdown\r\n className={classNames}\r\n triggerIcon=\"plus\"\r\n button={true}\r\n contextElement=\".message-view\"\r\n >\r\n <MenuItemLink onClick={handleUpload} icon={IconConstants.UPLOAD}>\r\n {translate('Send files', t, UI.Modules.COMMON)}\r\n </MenuItemLink>\r\n <MenuSection\r\n caption={translate('Remove shared file', t, UI.Modules.COMMON)}\r\n icon={IconConstants.FILE}\r\n >\r\n {files.map((p) => getDropdownItem(p, onClickFile))}\r\n </MenuSection>\r\n </SectionedDropdown>\r\n );\r\n});\r\n\r\nexport default DataProviderDecorator<TempShareDropdownProps, DataProps>(\r\n TempShareDropdown,\r\n {\r\n urls: {\r\n files: ShareConstants.TEMP_SHARES_URL,\r\n },\r\n onSocketConnected: (addSocketListener, { refetchData }) => {\r\n addSocketListener(ShareConstants.MODULE_URL, ShareConstants.TEMP_ITEM_ADDED, () =>\r\n refetchData(),\r\n );\r\n addSocketListener(ShareConstants.MODULE_URL, ShareConstants.TEMP_ITEM_REMOVED, () =>\r\n refetchData(),\r\n );\r\n },\r\n loaderText: null,\r\n },\r\n);\r\n","import { actionAccess, runBackgroundSocketAction } from 'utils/ActionUtils';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport LoginStore from 'stores/LoginStore';\r\nimport { NavigateFunction, Location } from 'react-router-dom';\r\n\r\ninterface CommandProps {\r\n location: Location;\r\n navigate: NavigateFunction;\r\n t: UI.TranslateF;\r\n}\r\n\r\ntype ParamsType = string | undefined;\r\ntype ChatCommandHandler = (\r\n params: ParamsType,\r\n chatController: UI.ChatController,\r\n props: CommandProps,\r\n) => void;\r\n\r\ninterface ChatCommand {\r\n help: string;\r\n handler: ChatCommandHandler;\r\n access?: string;\r\n}\r\n\r\ntype ChatCommandList = { [key in string]: ChatCommand };\r\n\r\nconst handleMe: ChatCommandHandler = (params, { chatApi, session }) => {\r\n if (params) {\r\n chatApi.sendChatMessage(session, params, true);\r\n }\r\n};\r\n\r\nconst handleClear: ChatCommandHandler = (\r\n params,\r\n { chatActions, session },\r\n { t, location, navigate },\r\n) => {\r\n runBackgroundSocketAction(\r\n () =>\r\n chatActions.actions.clearChat.handler({\r\n itemData: session,\r\n entity: undefined,\r\n location,\r\n navigate,\r\n t,\r\n }) as Promise<any>,\r\n t,\r\n );\r\n};\r\n\r\nconst getHelpString = (commands: ChatCommandList) => {\r\n const commandHelp = Object.keys(commands)\r\n .filter((command) => actionAccess(commands[command]))\r\n .map((command) => `\\t/${command} - ${commands[command].help}`)\r\n .join('\\n');\r\n\r\n return `\r\n\\tChat commands\r\n\r\n${commandHelp}\r\n`;\r\n};\r\n\r\nconst CommandHandler = (chatController: UI.ChatController) => {\r\n const commands: ChatCommandList = {\r\n clear: {\r\n help: 'Clear message cache',\r\n handler: handleClear,\r\n access: chatController.chatActions.actions.clearChat.access,\r\n },\r\n me: {\r\n help: 'Send message in third person',\r\n handler: handleMe,\r\n },\r\n };\r\n\r\n return {\r\n handle: (command: string, params: ParamsType, commandProps: CommandProps) => {\r\n if (commands[command]) {\r\n commands[command].handler(params, chatController, commandProps);\r\n } else if (command === 'help') {\r\n const { session, chatApi } = chatController;\r\n const text = getHelpString(commands);\r\n const message: API.OutgoingChatStatusMessage = {\r\n text,\r\n severity: API.SeverityEnum.INFO,\r\n type: API.StatusMessageTypeEnum.PRIVATE,\r\n owner: `session:${LoginStore.sessionId}`,\r\n };\r\n\r\n chatApi.sendStatusMessage(session, message);\r\n }\r\n },\r\n };\r\n};\r\n\r\nexport default CommandHandler;\r\n","import React, { useEffect } from 'react';\r\n\r\nimport { OnChangeHandlerFunc } from 'react-mentions';\r\nimport { useLocation } from 'react-router-dom';\r\nimport * as UI from 'types/ui';\r\n\r\nimport {\r\n loadSessionProperty,\r\n removeSessionProperty,\r\n saveSessionProperty,\r\n} from 'utils/BrowserUtils';\r\nimport ChatCommandHandler from '../ChatCommandHandler';\r\n\r\nimport { Location, useNavigate } from 'react-router-dom';\r\n\r\nconst getStorageKey = (location: Location) => {\r\n return `last_message_${location.pathname}`;\r\n};\r\n\r\nconst loadState = (location: Location) => {\r\n const text = loadSessionProperty(getStorageKey(location), '');\r\n return text;\r\n};\r\n\r\nconst saveState = (text: string, location: Location) => {\r\n if (text) {\r\n saveSessionProperty(getStorageKey(location), text);\r\n } else {\r\n removeSessionProperty(getStorageKey(location));\r\n }\r\n};\r\n\r\ninterface MessageComposerProps {\r\n t: UI.TranslateF;\r\n chatController: UI.ChatController;\r\n}\r\n\r\nexport const useMessageComposer = ({ chatController, t }: MessageComposerProps) => {\r\n const location = useLocation();\r\n const navigate = useNavigate();\r\n const [inputText, setInputText] = React.useState('');\r\n\r\n const handleCommand = (commandText: string) => {\r\n let command, params;\r\n\r\n {\r\n // Parse the command\r\n const whitespace = commandText.indexOf(' ');\r\n if (whitespace === -1) {\r\n command = commandText.substring(1);\r\n } else {\r\n command = commandText.substring(1, whitespace);\r\n params = commandText.substring(whitespace + 1);\r\n }\r\n }\r\n\r\n ChatCommandHandler(chatController).handle(command, params, { location, navigate, t });\r\n };\r\n\r\n const updateText = (newText: string) => {\r\n saveState(newText, location);\r\n setInputText(newText);\r\n };\r\n\r\n const appendText = (toAppend: string) => {\r\n let newText = inputText;\r\n if (newText) {\r\n newText += ' ';\r\n }\r\n newText += toAppend;\r\n\r\n updateText(newText);\r\n };\r\n\r\n const handleSend = (textToSend: string) => {\r\n const { chatApi, session } = chatController;\r\n chatApi.sendChatMessage(session, textToSend);\r\n };\r\n\r\n useEffect(() => {\r\n setInputText(loadState(location));\r\n }, [location.pathname]);\r\n\r\n const onTextChanged: OnChangeHandlerFunc = (event, markupValue, plainValue) => {\r\n updateText(plainValue);\r\n };\r\n\r\n const sendText = () => {\r\n // Trim only from end to allow chat messages such as \" +help\" to be\r\n // sent to other users\r\n // This will also prevent sending empty messages\r\n const textTrimmed = inputText.replace(/\\s+$/, '');\r\n\r\n if (textTrimmed) {\r\n if (textTrimmed[0] === '/') {\r\n handleCommand(textTrimmed);\r\n }\r\n\r\n handleSend(textTrimmed);\r\n }\r\n\r\n updateText('');\r\n };\r\n\r\n const onKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Enter' && !event.shiftKey) {\r\n event.preventDefault();\r\n sendText();\r\n }\r\n };\r\n\r\n return {\r\n sendText,\r\n text: inputText,\r\n onKeyDown,\r\n onTextChanged,\r\n appendText,\r\n };\r\n};\r\n","import * as React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport { MentionsInput, Mention, DataFunc } from 'react-mentions';\r\nimport Dropzone, { DropzoneRef } from 'react-dropzone';\r\n\r\nimport { useMobileLayout } from 'utils/BrowserUtils';\r\n\r\nimport UserConstants from 'constants/UserConstants';\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport { ErrorResponse } from 'airdcpp-apisocket';\r\nimport FilePreviewDialog from './FilePreviewDialog';\r\nimport TempShareDropdown from './TempShareDropdown';\r\nimport { translate } from 'utils/TranslationUtils';\r\nimport LoginStore from 'stores/LoginStore';\r\nimport AccessConstants from 'constants/AccessConstants';\r\nimport Icon from 'components/semantic/Icon';\r\nimport Button from 'components/semantic/Button';\r\nimport IconConstants from 'constants/IconConstants';\r\nimport { useFileUploader } from './effects/useChatFileUploader';\r\nimport { useMessageComposer } from './effects/useMessageComposer';\r\n\r\nconst getMentionFieldStyle = (mobileLayout: boolean) => {\r\n return {\r\n suggestions: {\r\n list: {\r\n width: 200,\r\n overflow: 'auto',\r\n position: 'absolute',\r\n bottom: 3,\r\n left: 17,\r\n backgroundColor: 'white',\r\n border: '1px solid rgba(0,0,0,0.15)',\r\n fontSize: 10,\r\n },\r\n\r\n item: {\r\n padding: '5px 15px',\r\n borderBottom: '1px solid rgba(0,0,0,0.15)',\r\n\r\n '&focused': {\r\n background: 'rgba(0,0,0,.03)',\r\n color: 'rgba(0,0,0,.95)',\r\n },\r\n },\r\n },\r\n highlighter: {\r\n minHeight: !mobileLayout ? 63 : 42,\r\n maxHeight: 200,\r\n margin: 0,\r\n },\r\n input: {\r\n minHeight: !mobileLayout ? 63 : 42,\r\n maxHeight: 200,\r\n margin: 0,\r\n\r\n // Disable weird hack from react-mentions which breaks styling on iOS\r\n // eslint-disable-next-line max-len\r\n // https://github.com/signavio/react-mentions/blob/e2b0273d4a629af8107ba1738f0a5846ada790f1/src/MentionsInput.js#L1033\r\n marginLeft: 0,\r\n marginTop: 0,\r\n },\r\n };\r\n};\r\n\r\nexport interface MessageComposerProps extends UI.ChatController {\r\n t: UI.TranslateF;\r\n}\r\n\r\nconst userToMention = (user: API.HubUser) => {\r\n return {\r\n id: user.cid,\r\n display: user.nick,\r\n };\r\n};\r\n\r\nexport const MessageComposer: React.FC<MessageComposerProps> = (props) => {\r\n const dropzoneRef = React.useRef<DropzoneRef>(null);\r\n\r\n const { t, handleFileUpload } = props;\r\n\r\n const { appendText, sendText, text, onTextChanged, onKeyDown } = useMessageComposer({\r\n chatController: props,\r\n t,\r\n });\r\n\r\n const { uploading, onDropFile, onPaste, onUploadFiles, files, resetFiles } =\r\n useFileUploader({ appendText, handleFileUpload: handleFileUpload, t });\r\n\r\n const findUsers: DataFunc = (value, callback) => {\r\n const { hubUrl } = props;\r\n SocketService.post(UserConstants.SEARCH_NICKS_URL, {\r\n pattern: value,\r\n max_results: 5,\r\n hub_urls: hubUrl ? [hubUrl] : undefined,\r\n })\r\n .then((users: API.HubUser[]) => callback(users.map(userToMention)))\r\n .catch((error: ErrorResponse) =>\r\n console.log(`Failed to fetch suggestions: ${error}`),\r\n );\r\n };\r\n\r\n const mobile = useMobileLayout();\r\n const className = classNames('ui form composer', { small: mobile }, { large: !mobile });\r\n\r\n const hasFileUploadAccess =\r\n LoginStore.hasAccess(AccessConstants.FILESYSTEM_EDIT) &&\r\n LoginStore.hasAccess(AccessConstants.SETTINGS_EDIT);\r\n\r\n const sendButton = (\r\n <Button\r\n className=\"large icon send\"\r\n onClick={sendText}\r\n caption={<Icon icon={IconConstants.SEND} />}\r\n loading={uploading}\r\n color=\"blue\"\r\n />\r\n );\r\n\r\n return (\r\n <>\r\n {!!files && (\r\n <FilePreviewDialog\r\n files={files}\r\n onConfirm={onUploadFiles}\r\n onReject={resetFiles}\r\n title={translate('Send files', t, UI.Modules.COMMON)}\r\n />\r\n )}\r\n <Dropzone\r\n onDrop={onDropFile}\r\n ref={dropzoneRef}\r\n disabled={!hasFileUploadAccess}\r\n multiple={true}\r\n minSize={1}\r\n noClick={true}\r\n // Handle max size check elsewhere (report errors)\r\n >\r\n {({ getRootProps, getInputProps, open }) => (\r\n <div className={className} {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n <MentionsInput\r\n className=\"input\"\r\n value={text}\r\n onChange={onTextChanged}\r\n onKeyDown={onKeyDown}\r\n style={getMentionFieldStyle(mobile)}\r\n autoFocus={!mobile}\r\n onPaste={onPaste}\r\n >\r\n <Mention trigger=\"@\" data={findUsers} appendSpaceOnAdd={false} />\r\n </MentionsInput>\r\n {!hasFileUploadAccess || uploading ? (\r\n sendButton\r\n ) : (\r\n <TempShareDropdown\r\n className=\"blue large\"\r\n handleUpload={open}\r\n overrideContent={!text ? null : sendButton}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </Dropzone>\r\n </>\r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport NotificationActions from 'actions/NotificationActions';\r\n\r\nimport * as UI from 'types/ui';\r\n\r\nimport { toI18nKey } from 'utils/TranslationUtils';\r\nimport { formatSize } from 'utils/ValueFormat';\r\n\r\ninterface UseFileUploaderProps {\r\n appendText: (text: string) => void;\r\n handleFileUpload: UI.ChatFileUploadHandler;\r\n t: UI.TranslateF;\r\n}\r\n\r\nexport const useFileUploader = ({\r\n appendText,\r\n handleFileUpload,\r\n t,\r\n}: UseFileUploaderProps) => {\r\n const [files, setFiles] = React.useState<File[] | null>(null);\r\n const [uploading, setUploading] = React.useState(false);\r\n\r\n const resetFiles = () => {\r\n setFiles(null);\r\n };\r\n\r\n const onDropFile = (acceptedFiles: File[]) => {\r\n const maxSize = 100 * 1024 * 1024;\r\n\r\n const files = acceptedFiles.filter((file) => {\r\n if (file.size > maxSize) {\r\n NotificationActions.error({\r\n title: file.name,\r\n message: t(toI18nKey('fileTooLarge', UI.Modules.COMMON), {\r\n defaultValue: 'File is too large (maximum size is {{maxSize}})',\r\n replace: {\r\n maxSize: formatSize(maxSize, t),\r\n },\r\n }),\r\n });\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n if (!files.length) {\r\n return;\r\n }\r\n\r\n setFiles(files);\r\n };\r\n\r\n const onUploadFiles = async (files: File[]) => {\r\n resetFiles();\r\n setUploading(true);\r\n\r\n for (const file of files) {\r\n try {\r\n const res = await handleFileUpload(file);\r\n appendText(res.magnet);\r\n } catch (e) {\r\n NotificationActions.apiError('Failed to upload the file', e);\r\n }\r\n }\r\n\r\n setUploading(false);\r\n };\r\n\r\n const onPaste = (evt: React.ClipboardEvent<HTMLTextAreaElement>) => {\r\n if (\r\n evt.clipboardData &&\r\n evt.clipboardData.files &&\r\n (evt.clipboardData as any).files.length\r\n ) {\r\n const files: File[] = [];\r\n\r\n {\r\n // DataTransferItemList isn't a normal array, convert it first\r\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\r\n const dataTransferItemList = (evt.clipboardData as any).files as any[];\r\n for (let i = 0; i < dataTransferItemList.length; i++) {\r\n files.push(dataTransferItemList[i]);\r\n }\r\n }\r\n\r\n evt.preventDefault();\r\n onDropFile(files);\r\n }\r\n };\r\n\r\n return {\r\n files,\r\n uploading,\r\n onDropFile,\r\n onPaste,\r\n onUploadFiles,\r\n resetFiles,\r\n };\r\n};\r\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!./chat.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!./chat.css\";\n export default content && content.locals ? content.locals : undefined;\n","import * as React from 'react';\r\n\r\nimport Message from 'components/semantic/Message';\r\nimport { MessageComposer } from './MessageComposer';\r\nimport MessageView from 'components/messages/MessageView';\r\n\r\nimport LoginStore from 'stores/LoginStore';\r\n\r\nimport './chat.css';\r\n\r\nimport * as UI from 'types/ui';\r\n\r\nimport ActiveSessionDecorator from 'decorators/ActiveSessionDecorator';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { toI18nKey } from 'utils/TranslationUtils';\r\nimport { useChatMessages } from './effects/useChatMessages';\r\n\r\nexport interface ChatSession extends UI.SessionItemBase {\r\n hub_url?: string;\r\n}\r\n\r\nexport interface ChatLayoutProps extends UI.ChatController {\r\n chatAccess: string;\r\n messageStore: UI.SessionMessageStore;\r\n highlightRemoteMenuId: string;\r\n}\r\n\r\nconst ChatLayout: React.FC<ChatLayoutProps> = ({\r\n session,\r\n chatAccess,\r\n chatApi,\r\n messageStore,\r\n highlightRemoteMenuId,\r\n ...other\r\n}) => {\r\n const { t } = useTranslation();\r\n const messages = useChatMessages(session, messageStore, chatApi);\r\n const hasChatAccess = LoginStore.hasAccess(chatAccess);\r\n return (\r\n <div className=\"message-view\">\r\n {!hasChatAccess && (\r\n <Message\r\n description={t<string>(\r\n toI18nKey('noChatAccess', UI.Modules.COMMON),\r\n `You aren't allowed to send new messages`,\r\n )}\r\n />\r\n )}\r\n <MessageView\r\n className=\"chat\"\r\n messages={messages}\r\n session={session}\r\n scrollPositionHandler={messageStore.scroll}\r\n t={t}\r\n highlightRemoteMenuId={highlightRemoteMenuId}\r\n />\r\n {hasChatAccess && (\r\n <MessageComposer session={session} chatApi={chatApi} t={t} {...other} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ActiveSessionDecorator(ChatLayout, true);\r\n","import { useEffect, useState } from 'react';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nexport const useChatMessages = (\r\n session: UI.SessionItemBase,\r\n messageStore: UI.SessionMessageStore,\r\n chatAPI: UI.ChatAPI,\r\n) => {\r\n const [messages, setMessages] = useState<UI.MessageListItem[] | null>([]);\r\n\r\n useEffect(() => {\r\n // Session changed, update the messages\r\n if (!messageStore.isSessionInitialized(session.id)) {\r\n setMessages(null);\r\n chatAPI.fetchMessages(session);\r\n } else {\r\n const sessionMessages = messageStore.getSessionMessages(session.id);\r\n if (sessionMessages) {\r\n setMessages(sessionMessages);\r\n }\r\n }\r\n }, [session.id]);\r\n\r\n useEffect(() => {\r\n // Subscribe for new messages\r\n const unsubscribe = (messageStore as any).listen(\r\n (newMessages: UI.MessageListItem[], id: API.IdType) => {\r\n if (id !== session.id) {\r\n return;\r\n }\r\n\r\n setMessages(newMessages);\r\n },\r\n );\r\n\r\n return unsubscribe;\r\n }, [session.id]);\r\n\r\n return messages;\r\n};\r\n","import LoginStore from 'stores/LoginStore';\r\nimport { fetchData } from 'utils/HttpUtils';\r\n\r\nexport const uploadTempFile = async (file: File): Promise<string> => {\r\n // eslint-disable-next-line no-useless-catch\r\n try {\r\n const res = await fetchData(`${getBasePath()}temp`, {\r\n method: 'POST',\r\n headers: {\r\n // https://github.com/airdcpp-web/airdcpp-webclient/issues/330\r\n 'X-Authorization': LoginStore.authToken,\r\n\r\n Authorization: LoginStore.authToken,\r\n },\r\n body: file,\r\n });\r\n\r\n return res.headers.get('Location')!;\r\n } catch (e) {\r\n throw e;\r\n }\r\n};\r\n\r\nconst toCorsSafeUrl = (url: string) => {\r\n const proxyUrl = `${\r\n window.location.origin\r\n }${getBasePath()}proxy?url=${encodeURIComponent(url)}`;\r\n return proxyUrl;\r\n};\r\n\r\nexport const fetchCorsSafeData = async (\r\n url: string,\r\n isJSON: boolean,\r\n options?: RequestInit,\r\n) => {\r\n try {\r\n //console.log(`CORS HTTP request started (${url})`);\r\n\r\n const res = await fetchData(toCorsSafeUrl(url), {\r\n headers: {\r\n // https://github.com/airdcpp-web/airdcpp-webclient/issues/330\r\n 'X-Authorization': LoginStore.authToken,\r\n\r\n // Temp workaround for people upgrading from versions < 2.7.0\r\n // If the new UI was loaded before restarting the app, a cache expiration time of\r\n // one year would have been set for \"Not found\" errors...\r\n 'Cache-Control': 'no-store, must-revalidate, max-age=0',\r\n },\r\n ...options,\r\n });\r\n\r\n const data = (await isJSON) ? res.json() : res.text();\r\n return data;\r\n } catch (e) {\r\n console.error(`CORS HTTP request failed (${url})`, e);\r\n throw e;\r\n }\r\n};\r\n","import ShareConstants from 'constants/ShareConstants';\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport { uploadTempFile } from '../HttpService';\r\n\r\nimport * as API from 'types/api';\r\n\r\nexport interface AddTempShareResponse {\r\n magnet: string;\r\n}\r\n\r\nexport const shareTempFile = async (\r\n file: File,\r\n hubUrl: string,\r\n cid: string | undefined,\r\n): Promise<AddTempShareResponse> => {\r\n // eslint-disable-next-line no-useless-catch\r\n try {\r\n const fileId = await uploadTempFile(file);\r\n const res = await SocketService.post<AddTempShareResponse>(\r\n ShareConstants.TEMP_SHARES_URL,\r\n {\r\n name: file.name,\r\n file_id: fileId,\r\n hub_url: hubUrl,\r\n cid,\r\n },\r\n );\r\n\r\n return res;\r\n } catch (e) {\r\n throw e;\r\n }\r\n};\r\n\r\nexport const refresh = (incoming: boolean) => {\r\n return SocketService.post(ShareConstants.REFRESH_URL, {\r\n incoming,\r\n priority: API.RefreshPriorityTypeEnum.MANUAL,\r\n });\r\n};\r\n\r\nexport const refreshPaths = (paths: string[]) => {\r\n return SocketService.post(ShareConstants.REFRESH_PATHS_URL, {\r\n paths,\r\n priority: API.RefreshPriorityTypeEnum.MANUAL,\r\n });\r\n};\r\n\r\nexport const refreshVirtual = (path: string) => {\r\n return SocketService.post(ShareConstants.REFRESH_VIRTUAL_URL, {\r\n path,\r\n });\r\n};\r\n\r\nexport const abortRefreshTask = (id: number) => {\r\n return SocketService.delete(`${ShareConstants.REFRESH_TASKS_URL}/${id}`);\r\n};\r\n","import { checkSplice, mergeCacheMessages, pushMessage } from 'utils/MessageUtils';\r\nimport SocketSubscriptionDecorator from '../decorators/SocketSubscriptionDecorator';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\ntype ChatSession = UI.SessionItemBase;\r\n\r\ntype MessageCache = UI.MessageListItem[];\r\n\r\nconst MessageStoreDecorator = function (\r\n store: any,\r\n actions: UI.RefluxActionListType<ChatSession>,\r\n access: string,\r\n) {\r\n // Message arrays mapped by session IDs\r\n const messages = new Map<API.IdType, UI.MessageListItem[]>();\r\n\r\n // Keep track of session IDs for which message fetching has been initialized\r\n const initializedSession = new Set<API.IdType>();\r\n\r\n const onFetchMessagesCompleted = (\r\n session: UI.SessionItemBase,\r\n cacheMessages: MessageCache,\r\n ) => {\r\n messages.set(session.id, mergeCacheMessages(cacheMessages, messages.get(session.id)));\r\n store.trigger(messages.get(session.id), session.id);\r\n };\r\n\r\n const onFetchMessages = (session: UI.SessionItemBase) => {\r\n initializedSession.add(session.id);\r\n };\r\n\r\n const onMessageReceived = (\r\n sessionId: API.IdType,\r\n message: API.Message,\r\n type: UI.MessageType,\r\n ) => {\r\n messages.set(\r\n sessionId,\r\n pushMessage(\r\n {\r\n [type]: message,\r\n } as UI.MessageListItem,\r\n messages.get(sessionId),\r\n ),\r\n );\r\n store.trigger(messages.get(sessionId), sessionId);\r\n };\r\n\r\n const DecoratorPublic: UI.MessageStore = {\r\n hasMessages: () => messages.size > 0,\r\n hasInitializedSessions: () => initializedSession.size > 0,\r\n\r\n getSessionMessages: (sessionId: API.IdType) => messages.get(sessionId),\r\n isSessionInitialized: (sessionId: API.IdType) => initializedSession.has(sessionId),\r\n };\r\n\r\n const Decorator = {\r\n ...DecoratorPublic,\r\n _onChatMessage: (data: API.Message, sessionId: API.IdType) => {\r\n onMessageReceived(sessionId, data, 'chat_message');\r\n },\r\n\r\n _onStatusMessage: (data: API.Message, sessionId: API.IdType) => {\r\n onMessageReceived(sessionId, data, 'log_message');\r\n },\r\n\r\n _onSessionUpdated: (session: Partial<UI.MessageCounts>, sessionId: API.IdType) => {\r\n if (!session.message_counts) {\r\n return;\r\n }\r\n\r\n const sessionMessages = messages.get(sessionId);\r\n if (!sessionMessages) {\r\n return;\r\n }\r\n\r\n // Message limit exceed or messages were cleared?\r\n const splicedMessages = checkSplice(sessionMessages, session.message_counts.total);\r\n\r\n // Don't update the messages if nothing has changed\r\n // Session is updated when it's marked as read, which may happen simultaneously with the initial fetch.\r\n // Triggering an update would cause an incomplete message log being flashed to the user\r\n if (splicedMessages && splicedMessages !== sessionMessages) {\r\n messages.set(sessionId, splicedMessages);\r\n store.trigger(splicedMessages, sessionId);\r\n }\r\n },\r\n\r\n _onSessionRemoved: (session: ChatSession) => {\r\n if (store.scroll) {\r\n store.scroll._onSessionRemoved(session);\r\n }\r\n\r\n messages.delete(session.id);\r\n initializedSession.delete(session.id);\r\n },\r\n\r\n onSocketDisconnected: () => {\r\n if (store.scroll) {\r\n store.scroll.onSocketDisconnected();\r\n }\r\n\r\n messages.clear();\r\n initializedSession.clear();\r\n },\r\n\r\n hasMessages: () => messages.size > 0,\r\n hasInitializedSessions: () => initializedSession.size > 0,\r\n\r\n getSessionMessages: (sessionId: API.IdType) => messages.get(sessionId),\r\n isSessionInitialized: (sessionId: API.IdType) => initializedSession.has(sessionId),\r\n };\r\n\r\n store.listenTo(actions.fetchMessages, onFetchMessages);\r\n store.listenTo(\r\n (actions.fetchMessages as UI.AsyncActionType<ChatSession>).completed,\r\n onFetchMessagesCompleted,\r\n );\r\n\r\n return SocketSubscriptionDecorator(Object.assign(store, Decorator), access);\r\n};\r\n\r\nexport default MessageStoreDecorator;\r\n"],"names":["exports","file","acceptedFiles","acceptedFilesArray","Array","isArray","split","fileName","name","mimeType","type","toLowerCase","baseMimeType","replace","some","validType","trim","charAt","endsWith","___CSS_LOADER_EXPORT___","push","module","id","BuildClearChatAction","sessionUrl","editAccess","displayName","access","icon","CLEAR","handler","itemData","session","delete","encryptionToInfo","encryption","tlsVersion","str","match","length","parseFloat","iconColor","messageColor","message","cornerIcon","translationKey","trusted","InfoMessage","info","style","color","i18nKey","COMMON","EncryptionState","getChildren","this","props","render","alwaysVisible","boundary","LOCK","triggerClassName","className","trigger","settings","propTypes","Component","url","autoPlay","error","setError","mediaRef","current","load","mediaProps","onError","event","target","code","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","formatMediaError","controls","src","AudioFileDecorated","MediaFileDecorator","ref","maxWidth","maxHeight","ImageFile","TextFile","textGetter","text","setText","useState","t","useEffect","then","catch","Message","title","description","Loader","VideoFileDecorated","entries","entryTitleRenderer","hasSession","entryIcon","size","map","entry","index","header","last_opened","defaultValue","timeAgo","urls","entryType","socket","get","SESSIONS_URL","_toConsumableArray","arr","i","arr2","iter","Symbol","iterator","Object","prototype","toString","call","from","TypeError","_extends","assign","arguments","source","key","hasOwnProperty","apply","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_typeof2","obj","constructor","_typeof","_getPrototypeOf","getPrototypeOf","_defineProperty","value","_slicedToArray","_arr","_n","_d","_e","undefined","_s","_i","next","done","err","keys","values","mergeDeep","output","isPlainObject","forEach","merge","_len","sources","_key","reduce","s","omit","other","Date","isModifier","isElement","camelize","m","c","toUpperCase","pickDirectStyles","objectPropertiesWhitelist","styleKeys","result","l","indexOf","pickNestedStyles","keysToPick","camelizedKeysToPick","hoistModifierStylesRecursive","modifierKeysToPick","concat","modifierKeys","filter","subresult","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","defaultObjectPropsWhitelist","_ref","PropsDecoratorContext","createContext","select","objSelect","acc","EMPTY","createSubstyle","classNames","propsDecorator","baseClassName","firstKey","guessBaseClassName","substyle","defaultStyle","mapEntry","cacheKey","memoize","WeakMap","has","set","selectHash","join","selectedKeys","elementKeys","collectElementStyles","fromStyle","collectSelectedStyles","derivedClassNames","firstClassName","substring","deriveClassNames","styleProps","classNameSplit","Set","mappedClassNames","singleClassName","Boolean","propsForSpread","modifiers","useContext","useMemo","escapeRegex","PLACEHOLDERS","findPositionOfCapturingGroup","markup","parameterName","indexDisplay","indexId","countPlaceholders","count","emptyFn","iterateMentionsMarkup","config","markupIteratee","regExps","serializedRegexParser","textIteratee","regex","RegExp","_serializedRegexParse2","exec","regexString","regexFlags","accOffset","captureGroupOffsets","start","currentPlainTextIndex","offset","find","mentionChildIndex","_config$mentionChildI","displayTransform","idPos","displayPos","display","substr","lastIndex","getPlainText","plainTextIndex","plainText","mapPlainTextIndex","indexInPlainText","inMarkupCorrection","mentionPlainTextIndex","childIndex","lastMentionEndIndex","substrPlainTextIndex","spliceString","end","insert","findStartOfMentionInPlainText","foundMention","getMentions","mentions","getSuggestionHtmlId","prefix","countSuggestions","suggestions","results","markupToRegex","escapedMarkup","charAfterDisplay","charAfterId","readConfigFromChildren","children","Children","toArray","_ref$props","coerceCapturingGroups","numberOfGroups","numberOfPlaceholders","lettersDiacritics","base","letters","normalizeString","formattedStr","letterDiacritics","removeAccents","getSubstringIndex","ignoreAccents","isNumber","val","_excluded","createDefaultStyle","getModifiers","ComponentToWrap","DefaultStyleEnhancer","rest","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","styles","Highlighter","selectionStart","selectionEnd","_ref$value","onCaretPositionChange","containerRef","singleLine","_useState2","left","top","position","setPosition","_useState4","caretElement","setCaretElement","notifyCaretPosition","caretPositionInMarkup","offsetLeft","offsetTop","newPosition","resultComponents","componentKeys","components","substringComponentKey","renderSubstring","string","usedKeys","_generateComponentKey","child","getMentionComponentForMatch","splitIndex","renderHighlighterCaret","isRequired","Element","Highlighter$1","boxSizing","width","overflow","whiteSpace","wordWrap","border","textAlign","visibility","styled","Suggestion","highlightedDisplay","focused","onClick","onMouseEnter","query","renderSuggestion","suggestion","role","getDisplay","renderHighlightedDisplay","Suggestion$1","cursor","styled$1","LoadingIndicator","defaultstyle","spinnerStyles","SuggestionsOverlay","_ref$suggestions","a11ySuggestionsListLabel","focusIndex","right","scrollFocusedIntoView","isLoading","isOpened","_ref$onSelect","onSelect","customSuggestionsContainer","onMouseDown","ulElement","setUlElement","offsetHeight","scrollHeight","scrollTop","_ulElement$children$f","getBoundingClientRect","bottom","topContainer","suggestionsToRender","handleMouseEnter","ev","queryInfo","getID","args","arg","accResults","_ref2","isFocused","renderLoadingIndicator","SuggestionsOverlay$1","zIndex","backgroundColor","marginTop","minWidth","list","margin","padding","listStyleType","styled$2","ownKeys$1","_objectSpread$1","KEY","TAB","RETURN","ESC","UP","DOWN","isComposing","allowSpaceInQuery","allowSuggestionsAboveCursor","forceSuggestionsAboveCursor","onKeyDown","onBlur","onChange","suggestionsPortalHost","PropTypes","instanceOf","inputRef","MentionsInput","_React$Component","subClass","superClass","create","_inherits","Constructor","protoProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","valueOf","e","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","_props","_this","instance","_classCallCheck","el","containerElement","_this$props","readOnly","disabled","k","includes","onScroll","updateHighlighterScroll","handleChange","handleSelect","handleKeyDown","handleBlur","onCompositionStart","handleCompositionStart","onCompositionEnd","handleCompositionEnd","uuidSuggestionsOverlay","state","_this$props2","inputProps","getInputProps","renderHighlighter","renderInput","renderTextarea","setInputRef","inputElement","suggestionsElement","_this$state$suggestio","suggestionsPosition","suggestionsNode","setSuggestionsElement","addMention","handleSuggestionsMouseDown","handleSuggestionsMouseEnter","_this$state","_this$props3","setHighlighterElement","handleCaretPositionChange","highlighterElement","setState","caretPosition","_this$props4","_this$props$valueLink","valueLink","requestChange","document","documentMode","activeElement","contentDocument","newPlainTextValue","selectionStartBefore","selectionEndBefore","newValue","plainTextValue","selectionEndAfter","oldPlainTextValue","lengthDelta","slice","spliceStart","Math","min","spliceEnd","max","mappedSpliceStart","mappedSpliceEnd","controlSpliceStart","controlSpliceEnd","willRemoveMention","controlPlainTextValue","lastIndexOf","applyChangeToValue","setSelectionAfterMentionChange","startOfMention","nativeEvent","data","updateMentionsQueries","eventMock","executeOnChange","clearSuggestions","keyCode","preventDefault","stopPropagation","shiftFocus","selectFocused","delta","suggestionsCount","_this$state2","_Object$values$reduce","clickedSuggestion","_suggestionsMouseDown","window","setTimeout","_this$props5","highlighter","caretOffsetParentRect","caretHeight","getComputedStyleLengthProp","viewportRelative","viewportHeight","documentElement","clientHeight","innerHeight","scrollLeft","viewportWidth","clientWidth","innerWidth","offsetWidth","_left","_top","input","height","setSelectionRange","createTextRange","range","collapse","moveEnd","moveStart","_queryId","positionInValue","substringStartIndex","lastMention","getEndOfLastMention","escapedTriggerChar","makeTriggerRegex","querySequenceStart","queryData","querySequenceEnd","_this$props6","provideData","callback","getDataProvider","syncResult","updateSuggestions","bind","queryId","_ref3","_mentionsChild$props","appendSpaceOnAdd","onAdd","makeMentionsMarkup","focus","displayValue","newCaretPosition","random","handleCopy","handleCut","handlePaste","setSelectionAfterHandlePaste","addEventListener","updateSuggestionsPosition","prevProps","prevState","setSelection","removeEventListener","setContainerElement","renderControl","renderSuggestionsOverlay","supportsClipboardActions","_this$state3","_this$props7","markupStartIndex","markupEndIndex","pastedMentions","clipboardData","getData","pastedData","nextPos","_this$props8","setData","saveSelectionToClipboard","_this$state4","_this$props9","forElement","propertyName","getComputedStyle","getPropertyValue","isFinite","MentionsInput$1","overflowY","fontFamily","fontSize","letterSpacing","resize","navigator","test","userAgent","marginLeft","_ref4","styled$3","fontWeight","Mention","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","__generator","body","f","y","g","_","label","sent","trys","ops","verb","n","v","op","pop","__read","r","ar","__spreadArray","to","pack","onRemove","defaultProps","SuppressedError","COMMON_MIME_TYPES","Map","toFileWithPath","path","ext","withMimeType","webkitRelativePath","FILES_TO_IGNORE","isObject","getInputFiles","evt","fromList","files","getFsHandleFiles","handles","_a","all","h","getFile","getDataTransferFiles","dt","items","item","kind","toFilePromises","noIgnoredFiles","flatten","webkitGetAsEntry","fromDataTransferItem","isDirectory","fromDirEntry","getAsFile","fwp","fromEntry","fromFileEntry","reader","createReader","readEntries","batch","err_1","fullPath","_arrayLikeToArray","_unsupportedIterableToArray","minLen","len","getInvalidTypeRejectionErr","accept","messageSuffix","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isDefined","isPropagationStopped","cancelBubble","isEvtWithFiles","dataTransfer","types","onDocumentDragOver","composeEventHandlers","fns","_len2","_key2","fn","isMIMEType","isExt","_excluded2","_excluded3","_excluded4","Dropzone","forwardRef","_useDropzone","_defaultProps$props","getFilesFromEvent","multiple","maxFiles","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","onFileDialogCancel","onFileDialogOpen","useFsAccessApi","autoFocus","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","acceptAttr","a","_ref6","_ref7","acceptPropAsAcceptAttr","pickerTypes","ok","console","warn","every","agg","_ref5","pickerOptionsFromAccept","onFileDialogOpenCb","noop","onFileDialogCancelCb","rootRef","useRef","_useReducer2","useReducer","reducer","initialState","dispatch","isFileDialogActive","fsAccessApiWorksRef","isSecureContext","onWindowFocus","dragTargetsRef","onDocumentDrop","contains","onErrCb","useCallback","onDragEnterCb","persist","fileCount","isDragAccept","accepted","sizeMatch","customErrors","allFilesAccepted","isDragReject","isDragActive","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","splice","setFiles","fileRejections","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","errors","onDropCb","openFileDialog","opts","showOpenFilePicker","DOMException","ABORT_ERR","SECURITY_ERR","isSecurityError","click","Error","onKeyDownCb","isEqualNode","onFocusCb","onBlurCb","onClickCb","isIe","isEdge","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","onFocus","tabIndex","onInputElementClick","_ref3$refKey","open","useDropzone","useImperativeHandle","Fragment","Infinity","action","getViewerElement","previewUrl","alt","onConfirm","previewFiles","setPreviewFiles","previews","URL","createObjectURL","revokeObjectURL","Modal","onApprove","closable","fullHeight","approveCaption","IconConstants","UPLOAD","overflowX","LayoutHeader","subHeader","TempShareDropdown","handleUpload","overrideContent","onClickFile","SocketService","ShareConstants","TEMP_SHARES_URL","res","NotificationActions","success","apiError","SectionedDropdown","triggerIcon","button","contextElement","MenuItemLink","MenuSection","caption","FILE","user","nicks","FileIcon","typeInfo","getDropdownItem","DataProviderDecorator","onSocketConnected","addSocketListener","refetchData","MODULE_URL","TEMP_ITEM_ADDED","TEMP_ITEM_REMOVED","loaderText","handleMe","params","chatApi","sendChatMessage","handleClear","chatActions","location","navigate","actions","clearChat","entity","getStorageKey","pathname","useMessageComposer","chatController","inputText","setInputText","updateText","newText","saveState","loadState","sendText","textTrimmed","commandText","command","whitespace","commands","clear","help","me","handle","commandProps","getHelpString","severity","INFO","PRIVATE","owner","LoginStore","sessionId","sendStatusMessage","ChatCommandHandler","handleCommand","textToSend","handleSend","shiftKey","onTextChanged","markupValue","plainValue","appendText","toAppend","userToMention","cid","nick","MessageComposer","dropzoneRef","handleFileUpload","uploading","onDropFile","onPaste","onUploadFiles","resetFiles","setUploading","dataTransferItemList","magnet","useFileUploader","findUsers","hubUrl","post","UserConstants","SEARCH_NICKS_URL","pattern","max_results","hub_urls","users","log","mobile","small","large","hasFileUploadAccess","hasAccess","AccessConstants","A","FILESYSTEM_EDIT","SETTINGS_EDIT","sendButton","Button","Icon","SEND","loading","onReject","mobileLayout","borderBottom","background","minHeight","options","styleTagTransform","setAttributes","domAPI","insertStyleElement","locals","ActiveSessionDecorator","chatAccess","messageStore","highlightRemoteMenuId","messages","chatAPI","setMessages","isSessionInitialized","sessionMessages","getSessionMessages","fetchMessages","listen","newMessages","useChatMessages","hasChatAccess","MessageView","scrollPositionHandler","scroll","uploadTempFile","getBasePath","method","headers","authToken","Authorization","fetchCorsSafeData","isJSON","origin","encodeURIComponent","toCorsSafeUrl","json","shareTempFile","fileId","file_id","hub_url","refreshPaths","paths","REFRESH_PATHS_URL","priority","MANUAL","refreshVirtual","REFRESH_VIRTUAL_URL","abortRefreshTask","REFRESH_TASKS_URL","store","initializedSession","onMessageReceived","DecoratorPublic","hasMessages","hasInitializedSessions","Decorator","_onChatMessage","_onStatusMessage","_onSessionUpdated","message_counts","splicedMessages","total","_onSessionRemoved","onSocketDisconnected","listenTo","add","completed","cacheMessages"],"sourceRoot":""}