matrix-react-sdk
Version:
SDK for matrix.org using React
49 lines (46 loc) • 8.49 kB
JavaScript
;
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==