use-stomp
Version:
react provider, class decorator, and a hook for websockets using the stomp protocol
39 lines (34 loc) • 4.65 kB
JavaScript
import "core-js/modules/es.object.get-own-property-descriptor";
import _extends from "@babel/runtime/helpers/extends";
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
function 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; }
function _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; }
import React from 'react';
import useStomp from './useStomp';
/** decorator for legacy class-based components; pass the channel to subscribe.
* latest message and function for sending message are added to the class
*/
export default function withUseStomp(channel) {
return function (Component) {
var WrapperComponent = /*#__PURE__*/React.memo(function (name, callable) {
callable.displayName = name;
Object.defineProperty(callable, "name", _objectSpread(_objectSpread({}, Object.getOwnPropertyDescriptor(callable, "name")), {}, {
value: name
}));
return callable;
}("WrapperComponent", function (props) {
var _useStomp = useStomp(channel),
_useStomp2 = _slicedToArray(_useStomp, 2),
message = _useStomp2[0],
sendMessage = _useStomp2[1];
return /*#__PURE__*/React.createElement(Component, _extends({}, props, {
message: message,
sendMessage: sendMessage
}));
}));
WrapperComponent.displayName = Component.displayName || 'WithUseStomp';
return WrapperComponent;
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy93aXRoVXNlU3RvbXAudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RvbXAiLCJ3aXRoVXNlU3RvbXAiLCJjaGFubmVsIiwiQ29tcG9uZW50IiwiV3JhcHBlckNvbXBvbmVudCIsIm1lbW8iLCJwcm9wcyIsIm1lc3NhZ2UiLCJzZW5kTWVzc2FnZSIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLE1BQWtCLE9BQWxCO0FBRUEsT0FBT0MsUUFBUCxNQUFxQixZQUFyQjs7QUFPQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVNDLFlBQVQsQ0FBNEJDLE9BQTVCLEVBQTZDO0FBQ3hELFNBQU8sVUFBQ0MsU0FBRCxFQUFlO0FBQ2xCLFFBQU1DLGdCQUFtRCxnQkFBR0wsS0FBSyxDQUFDTSxJQUFOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBCQUN4RCxVQUFDQyxLQUFELEVBQVc7QUFBQSxzQkFDd0JOLFFBQVEsQ0FBQ0UsT0FBRCxDQURoQztBQUFBO0FBQUEsVUFDQUssT0FEQTtBQUFBLFVBQ1NDLFdBRFQ7O0FBR1AsMEJBQ0ksb0JBQUMsU0FBRCxlQUNRRixLQURSO0FBRUksUUFBQSxPQUFPLEVBQUVDLE9BRmI7QUFHSSxRQUFBLFdBQVcsRUFBRUM7QUFIakIsU0FESjtBQU9ILEtBWHVELEVBQTVEO0FBY0FKLElBQUFBLGdCQUFnQixDQUFDSyxXQUFqQixHQUErQk4sU0FBUyxDQUFDTSxXQUFWLElBQXlCLGNBQXhEO0FBRUEsV0FBT0wsZ0JBQVA7QUFDSCxHQWxCRDtBQW1CSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB1c2VTdG9tcCBmcm9tICcuL3VzZVN0b21wJztcblxuZXhwb3J0IHR5cGUgV2l0aFVzZVN0b21wUHJvcHM8VCwgTT4gPSBUICYge1xuICAgIG1lc3NhZ2U6IE07XG4gICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBNKSA9PiB2b2lkO1xuICAgIGNvbm5lY3RlZDogYm9vbGVhbjtcbn07XG4vKiogZGVjb3JhdG9yIGZvciBsZWdhY3kgY2xhc3MtYmFzZWQgY29tcG9uZW50czsgcGFzcyB0aGUgY2hhbm5lbCB0byBzdWJzY3JpYmUuXG4gKiAgbGF0ZXN0IG1lc3NhZ2UgYW5kIGZ1bmN0aW9uIGZvciBzZW5kaW5nIG1lc3NhZ2UgYXJlIGFkZGVkIHRvIHRoZSBjbGFzc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3aXRoVXNlU3RvbXA8VCwgTT4oY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChDb21wb25lbnQpID0+IHtcbiAgICAgICAgY29uc3QgV3JhcHBlckNvbXBvbmVudDogUmVhY3QuRkM8V2l0aFVzZVN0b21wUHJvcHM8VCwgTT4+ID0gUmVhY3QubWVtbyhcbiAgICAgICAgICAgIChwcm9wcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFttZXNzYWdlLCBzZW5kTWVzc2FnZV0gPSB1c2VTdG9tcChjaGFubmVsKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2UgYXMgTX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlPXtzZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIFdyYXBwZXJDb21wb25lbnQuZGlzcGxheU5hbWUgPSBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgJ1dpdGhVc2VTdG9tcCc7XG5cbiAgICAgICAgcmV0dXJuIFdyYXBwZXJDb21wb25lbnQ7XG4gICAgfTtcbn1cbiJdfQ==