UNPKG

matrix-react-sdk

Version:
128 lines (103 loc) 12.4 kB
"use strict"; var _interopRequireWildcard3 = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard")); var _react = _interopRequireWildcard3(require("react")); var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher")); var _effects = require("../../../effects"); /* Copyright 2020 Nurjin Jafar Copyright 2020 Nordeck IT + Consulting GmbH. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ const EffectsOverlay /*: FunctionComponent<IProps>*/ = ({ roomWidth }) => { const canvasRef = (0, _react.useRef)(null); const effectsRef = (0, _react.useRef)(new Map()); const lazyLoadEffectModule = async (name /*: string*/ ) => /*: Promise<ICanvasEffect>*/ { if (!name) return null; let effect /*: ICanvasEffect | null*/ = effectsRef.current[name] || null; if (effect === null) { const options = _effects.CHAT_EFFECTS.find(e => e.command === name)?.options; try { const { default: Effect } = await Promise.resolve(`../../../effects/${name}`).then(s => (0, _interopRequireWildcard2.default)(require(s))); effect = new Effect(options); effectsRef.current[name] = effect; } catch (err) { console.warn(`Unable to load effect module at '../../../effects/${name}.`, err); } } return effect; }; (0, _react.useEffect)(() => { const resize = () => { if (canvasRef.current) { canvasRef.current.height = window.innerHeight; } }; const onAction = (payload /*: { action: string }*/ ) => { const actionPrefix = 'effects.'; if (payload.action.indexOf(actionPrefix) === 0) { const effect = payload.action.substr(actionPrefix.length); lazyLoadEffectModule(effect).then(module => module?.start(canvasRef.current)); } }; const dispatcherRef = _dispatcher.default.register(onAction); const canvas = canvasRef.current; canvas.height = window.innerHeight; window.addEventListener('resize', resize, true); return () => { _dispatcher.default.unregister(dispatcherRef); window.removeEventListener('resize', resize); // eslint-disable-next-line react-hooks/exhaustive-deps const currentEffects = effectsRef.current; // this is not a react node ref, warning can be safely ignored for (const effect in currentEffects) { const effectModule /*: ICanvasEffect*/ = currentEffects[effect]; if (effectModule && effectModule.isRunning) { effectModule.stop(); } } }; }, []); return /*#__PURE__*/_react.default.createElement("canvas", { ref: canvasRef, width: roomWidth, style: { display: 'block', zIndex: 999999, pointerEvents: 'none', position: 'fixed', top: 0, right: 0 } }); }; var _default = EffectsOverlay; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL0VmZmVjdHNPdmVybGF5LnRzeCJdLCJuYW1lcyI6WyJFZmZlY3RzT3ZlcmxheSIsInJvb21XaWR0aCIsImNhbnZhc1JlZiIsImVmZmVjdHNSZWYiLCJNYXAiLCJsYXp5TG9hZEVmZmVjdE1vZHVsZSIsIm5hbWUiLCJlZmZlY3QiLCJjdXJyZW50Iiwib3B0aW9ucyIsIkNIQVRfRUZGRUNUUyIsImZpbmQiLCJlIiwiY29tbWFuZCIsImRlZmF1bHQiLCJFZmZlY3QiLCJlcnIiLCJjb25zb2xlIiwid2FybiIsInJlc2l6ZSIsImhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwib25BY3Rpb24iLCJwYXlsb2FkIiwiYWN0aW9uUHJlZml4IiwiYWN0aW9uIiwiaW5kZXhPZiIsInN1YnN0ciIsImxlbmd0aCIsInRoZW4iLCJtb2R1bGUiLCJzdGFydCIsImRpc3BhdGNoZXJSZWYiLCJkaXMiLCJyZWdpc3RlciIsImNhbnZhcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ1bnJlZ2lzdGVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImN1cnJlbnRFZmZlY3RzIiwiZWZmZWN0TW9kdWxlIiwiaXNSdW5uaW5nIiwic3RvcCIsImRpc3BsYXkiLCJ6SW5kZXgiLCJwb2ludGVyRXZlbnRzIiwicG9zaXRpb24iLCJ0b3AiLCJyaWdodCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWdCQTs7QUFDQTs7QUFFQTs7QUFuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFVQSxNQUFNQTtBQUF5QztBQUFBLEVBQUcsQ0FBQztBQUFFQyxFQUFBQTtBQUFGLENBQUQsS0FBbUI7QUFDakUsUUFBTUMsU0FBUyxHQUFHLG1CQUEwQixJQUExQixDQUFsQjtBQUNBLFFBQU1DLFVBQVUsR0FBRyxtQkFBbUMsSUFBSUMs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LElBQUEsS0FBSyxFQUFFO0FBQ0gyQyxNQUFBQSxPQUFPLEVBQUUsT0FETjtBQUVIQyxNQUFBQSxNQUFNLEVBQUUsTUFGTDtBQUdIQyxNQUFBQSxhQUFhLEVBQUUsTUFIWjtBQUlIQyxNQUFBQSxRQUFRLEVBQUUsT0FKUDtBQUtIQyxNQUFBQSxHQUFHLEVBQUUsQ0FMRjtBQU1IQyxNQUFBQSxLQUFLLEVBQUU7QUFOSjtBQUhYLElBREo7QUFjSCxDQWxFRDs7ZUFvRWVqRCxjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBDb3B5cmlnaHQgMjAyMCBOdXJqaW4gSmFmYXJcbiBDb3B5cmlnaHQgMjAyMCBOb3JkZWNrIElUICsgQ29uc3VsdGluZyBHbWJILlxuXG4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUmVhY3QsIHsgRnVuY3Rpb25Db21wb25lbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRpcyBmcm9tICcuLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXInO1xuaW1wb3J0IElDYW52YXNFZmZlY3QgZnJvbSAnLi4vLi4vLi4vZWZmZWN0cy9JQ2FudmFzRWZmZWN0JztcbmltcG9ydCB7Q0hBVF9FRkZFQ1RTfSBmcm9tICcuLi8uLi8uLi9lZmZlY3RzJ1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICByb29tV2lkdGg6IG51bWJlcjtcbn1cblxuY29uc3QgRWZmZWN0c092ZXJsYXk6IEZ1bmN0aW9uQ29tcG9uZW50PElQcm9wcz4gPSAoeyByb29tV2lkdGggfSkgPT4ge1xuICAgIGNvbnN0IGNhbnZhc1JlZiA9IHVzZVJlZjxIVE1MQ2FudmFzRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgZWZmZWN0c1JlZiA9IHVzZVJlZjxNYXA8c3RyaW5nLCBJQ2FudmFzRWZmZWN0Pj4obmV3IE1hcDxzdHJpbmcsIElDYW52YXNFZmZlY3Q+KCkpO1xuXG4gICAgY29uc3QgbGF6eUxvYWRFZmZlY3RNb2R1bGUgPSBhc3luYyAobmFtZTogc3RyaW5nKTogUHJvbWlzZTxJQ2FudmFzRWZmZWN0PiA9PiB7XG4gICAgICAgIGlmICghbmFtZSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGxldCBlZmZlY3Q6IElDYW52YXNFZmZlY3QgfCBudWxsID0gZWZmZWN0c1JlZi5jdXJyZW50W25hbWVdIHx8IG51bGw7XG4gICAgICAgIGlmIChlZmZlY3QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBDSEFUX0VGRkVDVFMuZmluZCgoZSkgPT4gZS5jb21tYW5kID09PSBuYW1lKT8ub3B0aW9uc1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRlZmF1bHQ6IEVmZmVjdCB9ID0gYXdhaXQgaW1wb3J0KGAuLi8uLi8uLi9lZmZlY3RzLyR7bmFtZX1gKTtcbiAgICAgICAgICAgICAgICBlZmZlY3QgPSBuZXcgRWZmZWN0KG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGVmZmVjdHNSZWYuY3VycmVudFtuYW1lXSA9IGVmZmVjdDtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5hYmxlIHRvIGxvYWQgZWZmZWN0IG1vZHVsZSBhdCAnLi4vLi4vLi4vZWZmZWN0cy8ke25hbWV9LmAsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVmZmVjdDtcbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzaXplID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNhbnZhc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgY2FudmFzUmVmLmN1cnJlbnQuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvbkFjdGlvbiA9IChwYXlsb2FkOiB7IGFjdGlvbjogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvblByZWZpeCA9ICdlZmZlY3RzLic7XG4gICAgICAgICAgICBpZiAocGF5bG9hZC5hY3Rpb24uaW5kZXhPZihhY3Rpb25QcmVmaXgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWZmZWN0ID0gcGF5bG9hZC5hY3Rpb24uc3Vic3RyKGFjdGlvblByZWZpeC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxhenlMb2FkRWZmZWN0TW9kdWxlKGVmZmVjdCkudGhlbigobW9kdWxlKSA9PiBtb2R1bGU/LnN0YXJ0KGNhbnZhc1JlZi5jdXJyZW50KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzcGF0Y2hlclJlZiA9IGRpcy5yZWdpc3RlcihvbkFjdGlvbik7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGNhbnZhc1JlZi5jdXJyZW50O1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplLCB0cnVlKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgZGlzLnVucmVnaXN0ZXIoZGlzcGF0Y2hlclJlZik7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplKTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFZmZlY3RzID0gZWZmZWN0c1JlZi5jdXJyZW50OyAvLyB0aGlzIGlzIG5vdCBhIHJlYWN0IG5vZGUgcmVmLCB3YXJuaW5nIGNhbiBiZSBzYWZlbHkgaWdub3JlZFxuICAgICAgICAgICAgZm9yIChjb25zdCBlZmZlY3QgaW4gY3VycmVudEVmZmVjdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlZmZlY3RNb2R1bGU6IElDYW52YXNFZmZlY3QgPSBjdXJyZW50RWZmZWN0c1tlZmZlY3RdO1xuICAgICAgICAgICAgICAgIGlmIChlZmZlY3RNb2R1bGUgJiYgZWZmZWN0TW9kdWxlLmlzUnVubmluZykge1xuICAgICAgICAgICAgICAgICAgICBlZmZlY3RNb2R1bGUuc3RvcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8Y2FudmFzXG4gICAgICAgICAgICByZWY9e2NhbnZhc1JlZn1cbiAgICAgICAgICAgIHdpZHRoPXtyb29tV2lkdGh9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgICAgICAgekluZGV4OiA5OTk5OTksXG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBFZmZlY3RzT3ZlcmxheTtcbiJdfQ==