UNPKG

matrix-react-sdk

Version:
49 lines (46 loc) 8.49 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useWysiwygEditActionHandler = useWysiwygEditActionHandler; var _react = require("react"); var _dispatcher = _interopRequireDefault(require("../../../../../dispatcher/dispatcher")); var _actions = require("../../../../../dispatcher/actions"); var _RoomContext = require("../../../../../contexts/RoomContext"); var _useDispatcher = require("../../../../../hooks/useDispatcher"); var _utils = require("./utils"); var _ComposerInsertPayload = require("../../../../../dispatcher/payloads/ComposerInsertPayload"); var _selection = require("../utils/selection"); var _ComposerContext = require("../ComposerContext"); /* 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 useWysiwygEditActionHandler(disabled, composerElement, composerFunctions) { const roomContext = (0, _RoomContext.useRoomContext)(); const composerContext = (0, _ComposerContext.useComposerContext)(); const timeoutId = (0, _react.useRef)(null); const handler = (0, _react.useCallback)(payload => { // don't let the user into the composer if it is disabled - all of these branches lead // to the cursor being in the composer if (disabled || !composerElement.current) return; const context = payload.context ?? _RoomContext.TimelineRenderingType.Room; switch (payload.action) { case _actions.Action.FocusEditMessageComposer: (0, _utils.focusComposer)(composerElement, context, roomContext, timeoutId); break; case _actions.Action.ComposerInsert: if (payload.timelineRenderingType !== roomContext.timelineRenderingType) break; if (payload.composerType !== _ComposerInsertPayload.ComposerType.Edit) break; if (payload.text) { (0, _selection.setSelection)(composerContext.selection).then(() => composerFunctions.insertText(payload.text)); } break; } }, [disabled, composerElement, composerFunctions, timeoutId, roomContext, composerContext]); (0, _useDispatcher.useDispatcher)(_dispatcher.default, handler); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2Rpc3BhdGNoZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJfUm9vbUNvbnRleHQiLCJfdXNlRGlzcGF0Y2hlciIsIl91dGlscyIsIl9Db21wb3Nlckluc2VydFBheWxvYWQiLCJfc2VsZWN0aW9uIiwiX0NvbXBvc2VyQ29udGV4dCIsInVzZVd5c2l3eWdFZGl0QWN0aW9uSGFuZGxlciIsImRpc2FibGVkIiwiY29tcG9zZXJFbGVtZW50IiwiY29tcG9zZXJGdW5jdGlvbnMiLCJyb29tQ29udGV4dCIsInVzZVJvb21Db250ZXh0IiwiY29tcG9zZXJDb250ZXh0IiwidXNlQ29tcG9zZXJDb250ZXh0IiwidGltZW91dElkIiwidXNlUmVmIiwiaGFuZGxlciIsInVzZUNhbGxiYWNrIiwicGF5bG9hZCIsImN1cnJlbnQiLCJjb250ZXh0IiwiVGltZWxpbmVSZW5kZXJpbmdUeXBlIiwiUm9vbSIsImFjdGlvbiIsIkFjdGlvbiIsIkZvY3VzRWRpdE1lc3NhZ2VDb21wb3NlciIsImZvY3VzQ29tcG9zZXIiLCJDb21wb3Nlckluc2VydCIsInRpbWVsaW5lUmVuZGVyaW5nVHlwZSIsImNvbXBvc2VyVHlwZSIsIkNvbXBvc2VyVHlwZSIsIkVkaXQiLCJ0ZXh0Iiwic2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uIiwidGhlbiIsImluc2VydFRleHQiLCJ1c2VEaXNwYXRjaGVyIiwiZGVmYXVsdERpc3BhdGNoZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9yb29tcy93eXNpd3lnX2NvbXBvc2VyL2hvb2tzL3VzZVd5c2l3eWdFZGl0QWN0aW9uSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGRlZmF1bHREaXNwYXRjaGVyIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kaXNwYXRjaGVyL2FjdGlvbnNcIjtcbmltcG9ydCB7IEFjdGlvblBheWxvYWQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vZGlzcGF0Y2hlci9wYXlsb2Fkc1wiO1xuaW1wb3J0IHsgVGltZWxpbmVSZW5kZXJpbmdUeXBlLCB1c2VSb29tQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jb250ZXh0cy9Sb29tQ29udGV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2hlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VEaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBmb2N1c0NvbXBvc2VyIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IENvbXBvc2VyVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kaXNwYXRjaGVyL3BheWxvYWRzL0NvbXBvc2VySW5zZXJ0UGF5bG9hZFwiO1xuaW1wb3J0IHsgQ29tcG9zZXJGdW5jdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHNldFNlbGVjdGlvbiB9IGZyb20gXCIuLi91dGlscy9zZWxlY3Rpb25cIjtcbmltcG9ydCB7IHVzZUNvbXBvc2VyQ29udGV4dCB9IGZyb20gXCIuLi9Db21wb3NlckNvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVd5c2l3eWdFZGl0QWN0aW9uSGFuZGxlcihcbiAgICBkaXNhYmxlZDogYm9vbGVhbixcbiAgICBjb21wb3NlckVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gICAgY29tcG9zZXJGdW5jdGlvbnM6IENvbXBvc2VyRnVuY3Rpb25zLFxuKTogdm9pZCB7XG4gICAgY29uc3Qgcm9vbUNvbnRleHQgPSB1c2VSb29tQ29udGV4dCgpO1xuICAgIGNvbnN0IGNvbXBvc2VyQ29udGV4dCA9IHVzZUNvbXBvc2VyQ29udGV4dCgpO1xuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICAgIGNvbnN0IGhhbmRsZXIgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIC8vIGRvbid0IGxldCB0aGUgdXNlciBpbnRvIHRoZSBjb21wb3NlciBpZiBpdCBpcyBkaXNhYmxlZCAtIGFsbCBvZiB0aGVzZSBicmFuY2hlcyBsZWFkXG4gICAgICAgICAgICAvLyB0byB0aGUgY3Vyc29yIGJlaW5nIGluIHRoZSBjb21wb3NlclxuICAgICAgICAgICAgaWYgKGRpc2FibGVkIHx8ICFjb21wb3NlckVsZW1lbnQuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gcGF5bG9hZC5jb250ZXh0ID8/IFRpbWVsaW5lUmVuZGVyaW5nVHlwZS5Sb29tO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHBheWxvYWQuYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb24uRm9jdXNFZGl0TWVzc2FnZUNvbXBvc2VyOlxuICAgICAgICAgICAgICAgICAgICBmb2N1c0NvbXBvc2VyKGNvbXBvc2VyRWxlbWVudCwgY29udGV4dCwgcm9vbUNvbnRleHQsIHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uLkNvbXBvc2VySW5zZXJ0OlxuICAgICAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC50aW1lbGluZVJlbmRlcmluZ1R5cGUgIT09IHJvb21Db250ZXh0LnRpbWVsaW5lUmVuZGVyaW5nVHlwZSkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmNvbXBvc2VyVHlwZSAhPT0gQ29tcG9zZXJUeXBlLkVkaXQpIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvbihjb21wb3NlckNvbnRleHQuc2VsZWN0aW9uKS50aGVuKCgpID0+IGNvbXBvc2VyRnVuY3Rpb25zLmluc2VydFRleHQocGF5bG9hZC50ZXh0KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtkaXNhYmxlZCwgY29tcG9zZXJFbGVtZW50LCBjb21wb3NlckZ1bmN0aW9ucywgdGltZW91dElkLCByb29tQ29udGV4dCwgY29tcG9zZXJDb250ZXh0XSxcbiAgICApO1xuXG4gICAgdXNlRGlzcGF0Y2hlcihkZWZhdWx0RGlzcGF0Y2hlciwgaGFuZGxlcik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxzQkFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVQsT0FBQTtBQW5CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFlTyxTQUFTVSwyQkFBMkJBLENBQ3ZDQyxRQUFpQixFQUNqQkMsZUFBdUMsRUFDdkNDLGlCQUFvQyxFQUNoQztFQUNKLE1BQU1DLFdBQVcsR0FBRyxJQUFBQywyQkFBYyxFQUFDLENBQUM7RUFDcEMsTUFBTUMsZUFBZSxHQUFHLElBQUFDLG1DQUFrQixFQUFDLENBQUM7RUFDNUMsTUFBTUMsU0FBUyxHQUFHLElBQUFDLGFBQU0sRUFBZ0IsSUFBSSxDQUFDO0VBRTdDLE1BQU1DLE9BQU8sR0FBRyxJQUFBQyxrQkFBVyxFQUN0QkMsT0FBc0IsSUFBSztJQUN4QjtJQUNBO0lBQ0EsSUFBSVgsUUFBUSxJQUFJLENBQUNDLGVBQWUsQ0FBQ1csT0FBTyxFQUFFO0lBRTFDLE1BQU1DLE9BQU8sR0FBR0YsT0FBTyxDQUFDRSxPQUFPLElBQUlDLGtDQUFxQixDQUFDQyxJQUFJO0lBRTdELFFBQVFKLE9BQU8sQ0FBQ0ssTUFBTTtNQUNsQixLQUFLQyxlQUFNLENBQUNDLHdCQUF3QjtRQUNoQyxJQUFBQyxvQkFBYSxFQUFDbEIsZUFBZSxFQUFFWSxPQUFPLEVBQUVWLFdBQVcsRUFBRUksU0FBUyxDQUFDO1FBQy9EO01BQ0osS0FBS1UsZUFBTSxDQUFDRyxjQUFjO1FBQ3RCLElBQUlULE9BQU8sQ0FBQ1UscUJBQXFCLEtBQUtsQixXQUFXLENBQUNrQixxQkFBcUIsRUFBRTtRQUN6RSxJQUFJVixPQUFPLENBQUNXLFlBQVksS0FBS0MsbUNBQVksQ0FBQ0MsSUFBSSxFQUFFO1FBRWhELElBQUliLE9BQU8sQ0FBQ2MsSUFBSSxFQUFFO1VBQ2QsSUFBQUMsdUJBQVksRUFBQ3JCLGVBQWUsQ0FBQ3NCLFNBQVMsQ0FBQyxDQUFDQyxJQUFJLENBQUMsTUFBTTFCLGlCQUFpQixDQUFDMkIsVUFBVSxDQUFDbEIsT0FBTyxDQUFDYyxJQUFJLENBQUMsQ0FBQztRQUNsRztRQUNBO0lBQ1I7RUFDSixDQUFDLEVBQ0QsQ0FBQ3pCLFFBQVEsRUFBRUMsZUFBZSxFQUFFQyxpQkFBaUIsRUFBRUssU0FBUyxFQUFFSixXQUFXLEVBQUVFLGVBQWUsQ0FDMUYsQ0FBQztFQUVELElBQUF5Qiw0QkFBYSxFQUFDQyxtQkFBaUIsRUFBRXRCLE9BQU8sQ0FBQztBQUM3QyIsImlnbm9yZUxpc3QiOltdfQ==