UNPKG

matrix-react-sdk

Version:
53 lines (51 loc) 8.86 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useSelection = useSelection; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = require("react"); var _useFocus = _interopRequireDefault(require("../../../../../hooks/useFocus")); var _ComposerContext = require("../ComposerContext"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* Copyright 2024 New Vector Ltd. Copyright 2022 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ function setSelectionContext(composerContext) { const selection = document.getSelection(); if (selection) { const range = selection.getRangeAt(0); const isForward = range.startContainer === selection.anchorNode && range.startOffset === selection.anchorOffset; composerContext.selection = { anchorNode: selection.anchorNode, anchorOffset: selection.anchorOffset, focusNode: selection.focusNode, focusOffset: selection.focusOffset, isForward }; } } function useSelection() { const composerContext = (0, _ComposerContext.useComposerContext)(); const [isFocused, focusProps] = (0, _useFocus.default)(); (0, _react.useEffect)(() => { function onSelectionChange() { setSelectionContext(composerContext); } if (isFocused) { document.addEventListener("selectionchange", onSelectionChange); } return () => document.removeEventListener("selectionchange", onSelectionChange); }, [isFocused, composerContext]); const onInput = (0, _react.useCallback)(() => { setSelectionContext(composerContext); }, [composerContext]); return _objectSpread(_objectSpread({}, focusProps), {}, { onInput }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUZvY3VzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Db21wb3NlckNvbnRleHQiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJzZXRTZWxlY3Rpb25Db250ZXh0IiwiY29tcG9zZXJDb250ZXh0Iiwic2VsZWN0aW9uIiwiZG9jdW1lbnQiLCJnZXRTZWxlY3Rpb24iLCJyYW5nZSIsImdldFJhbmdlQXQiLCJpc0ZvcndhcmQiLCJzdGFydENvbnRhaW5lciIsImFuY2hvck5vZGUiLCJzdGFydE9mZnNldCIsImFuY2hvck9mZnNldCIsImZvY3VzTm9kZSIsImZvY3VzT2Zmc2V0IiwidXNlU2VsZWN0aW9uIiwidXNlQ29tcG9zZXJDb250ZXh0IiwiaXNGb2N1c2VkIiwiZm9jdXNQcm9wcyIsInVzZUZvY3VzIiwidXNlRWZmZWN0Iiwib25TZWxlY3Rpb25DaGFuZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uSW5wdXQiLCJ1c2VDYWxsYmFjayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3Jvb21zL3d5c2l3eWdfY29tcG9zZXIvaG9va3MvdXNlU2VsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHVzZUZvY3VzIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VGb2N1c1wiO1xuaW1wb3J0IHsgdXNlQ29tcG9zZXJDb250ZXh0LCBDb21wb3NlckNvbnRleHRTdGF0ZSB9IGZyb20gXCIuLi9Db21wb3NlckNvbnRleHRcIjtcblxuZnVuY3Rpb24gc2V0U2VsZWN0aW9uQ29udGV4dChjb21wb3NlckNvbnRleHQ6IENvbXBvc2VyQ29udGV4dFN0YXRlKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgICAgIGNvbnN0IGlzRm9yd2FyZCA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyID09PSBzZWxlY3Rpb24uYW5jaG9yTm9kZSAmJiByYW5nZS5zdGFydE9mZnNldCA9PT0gc2VsZWN0aW9uLmFuY2hvck9mZnNldDtcblxuICAgICAgICBjb21wb3NlckNvbnRleHQuc2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgYW5jaG9yTm9kZTogc2VsZWN0aW9uLmFuY2hvck5vZGUsXG4gICAgICAgICAgICBhbmNob3JPZmZzZXQ6IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICAgICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG4gICAgICAgICAgICBmb2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0LFxuICAgICAgICAgICAgaXNGb3J3YXJkLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGlvbigpOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VGb2N1cz5bMV0gJiB7XG4gICAgb25JbnB1dCgpOiB2b2lkO1xufSB7XG4gICAgY29uc3QgY29tcG9zZXJDb250ZXh0ID0gdXNlQ29tcG9zZXJDb250ZXh0KCk7XG4gICAgY29uc3QgW2lzRm9jdXNlZCwgZm9jdXNQcm9wc10gPSB1c2VGb2N1cygpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZnVuY3Rpb24gb25TZWxlY3Rpb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgICAgICBzZXRTZWxlY3Rpb25Db250ZXh0KGNvbXBvc2VyQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIG9uU2VsZWN0aW9uQ2hhbmdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIG9uU2VsZWN0aW9uQ2hhbmdlKTtcbiAgICB9LCBbaXNGb2N1c2VkLCBjb21wb3NlckNvbnRleHRdKTtcblxuICAgIGNvbnN0IG9uSW5wdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldFNlbGVjdGlvbkNvbnRleHQoY29tcG9zZXJDb250ZXh0KTtcbiAgICB9LCBbY29tcG9zZXJDb250ZXh0XSk7XG5cbiAgICByZXR1cm4geyAuLi5mb2N1c1Byb3BzLCBvbklucHV0IH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsU0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUE4RSxTQUFBSSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLENBQUFDLE9BQUEsRUFBQWpCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBZSx5QkFBQSxHQUFBZixNQUFBLENBQUFnQixnQkFBQSxDQUFBbkIsQ0FBQSxFQUFBRyxNQUFBLENBQUFlLHlCQUFBLENBQUFoQixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFpQixjQUFBLENBQUFwQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUEsSUFYOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQSxTQUFTcUIsbUJBQW1CQSxDQUFDQyxlQUFxQyxFQUFRO0VBQ3RFLE1BQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxZQUFZLENBQUMsQ0FBQztFQUV6QyxJQUFJRixTQUFTLEVBQUU7SUFDWCxNQUFNRyxLQUFLLEdBQUdILFNBQVMsQ0FBQ0ksVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNQyxTQUFTLEdBQUdGLEtBQUssQ0FBQ0csY0FBYyxLQUFLTixTQUFTLENBQUNPLFVBQVUsSUFBSUosS0FBSyxDQUFDSyxXQUFXLEtBQUtSLFNBQVMsQ0FBQ1MsWUFBWTtJQUUvR1YsZUFBZSxDQUFDQyxTQUFTLEdBQUc7TUFDeEJPLFVBQVUsRUFBRVAsU0FBUyxDQUFDTyxVQUFVO01BQ2hDRSxZQUFZLEVBQUVULFNBQVMsQ0FBQ1MsWUFBWTtNQUNwQ0MsU0FBUyxFQUFFVixTQUFTLENBQUNVLFNBQVM7TUFDOUJDLFdBQVcsRUFBRVgsU0FBUyxDQUFDVyxXQUFXO01BQ2xDTjtJQUNKLENBQUM7RUFDTDtBQUNKO0FBRU8sU0FBU08sWUFBWUEsQ0FBQSxFQUUxQjtFQUNFLE1BQU1iLGVBQWUsR0FBRyxJQUFBYyxtQ0FBa0IsRUFBQyxDQUFDO0VBQzVDLE1BQU0sQ0FBQ0MsU0FBUyxFQUFFQyxVQUFVLENBQUMsR0FBRyxJQUFBQyxpQkFBUSxFQUFDLENBQUM7RUFFMUMsSUFBQUMsZ0JBQVMsRUFBQyxNQUFNO0lBQ1osU0FBU0MsaUJBQWlCQSxDQUFBLEVBQVM7TUFDL0JwQixtQkFBbUIsQ0FBQ0MsZUFBZSxDQUFDO0lBQ3hDO0lBRUEsSUFBSWUsU0FBUyxFQUFFO01BQ1hiLFFBQVEsQ0FBQ2tCLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFRCxpQkFBaUIsQ0FBQztJQUNuRTtJQUVBLE9BQU8sTUFBTWpCLFFBQVEsQ0FBQ21CLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFRixpQkFBaUIsQ0FBQztFQUNuRixDQUFDLEVBQUUsQ0FBQ0osU0FBUyxFQUFFZixlQUFlLENBQUMsQ0FBQztFQUVoQyxNQUFNc0IsT0FBTyxHQUFHLElBQUFDLGtCQUFXLEVBQUMsTUFBTTtJQUM5QnhCLG1CQUFtQixDQUFDQyxlQUFlLENBQUM7RUFDeEMsQ0FBQyxFQUFFLENBQUNBLGVBQWUsQ0FBQyxDQUFDO0VBRXJCLE9BQUFWLGFBQUEsQ0FBQUEsYUFBQSxLQUFZMEIsVUFBVTtJQUFFTTtFQUFPO0FBQ25DIiwiaWdub3JlTGlzdCI6W119