UNPKG

react-sprucebot

Version:

React components for your Sprucebot Skill 💪🏼

224 lines (183 loc) 6.31 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } function postMessage(message) { return window.parent.postMessage(JSON.stringify(message), '*'); } var skill = { height: 0, forceAuth: function forceAuth() { postMessage('Skill:ForceAuth'); }, resized: function resized() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$minHeight = _ref.minHeight, minHeight = _ref$minHeight === undefined ? 0 : _ref$minHeight; var height = 0; var body = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop; var clientTop = docEl.clientTop || body.clientTop || 0; var top = scrollTop - clientTop; var height = Math.max(minHeight, top + body.clientHeight); if (height != this.height) { this.height = height; postMessage({ name: 'Skill:Resized', height: height }); } }, back: function back() { if (window.top === window.self) { window.history.back(); } else { postMessage('Skill:Back'); } }, ready: function ready() { var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { resetUrlTrail: false }, _ref2$resetUrlTrail = _ref2.resetUrlTrail, resetUrlTrail = _ref2$resetUrlTrail === undefined ? false : _ref2$resetUrlTrail; this.resized(); postMessage({ name: 'Skill:Loaded', url: window.location.href, resetUrlTrail: resetUrlTrail }); this.resizedInterval = setInterval(this.resized.bind(this), 300); }, scrollTo: function scrollTo(offset) { postMessage({ name: 'Skill:ScrollTo', offset: offset || 0 }); }, requestScroll: function requestScroll() { postMessage({ name: 'Skill:RequestContainerScrollTop' }); }, showHelp: function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(_ref4) { var _this = this; var title = _ref4.title, body = _ref4.body; var promise; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(window.top === window.self)) { _context.next = 4; break; } alert('[' + title + '] ' + body); _context.next = 7; break; case 4: promise = new Promise(function (accept, reject) { _this._showHelpAccept = accept; }); postMessage({ name: 'Skill:ShowHelp', title: title, body: body }); return _context.abrupt('return', promise); case 7: case 'end': return _context.stop(); } } }, _callee, this); })); function showHelp(_x3) { return _ref3.apply(this, arguments); } return showHelp; }(), handleIframeMessage: function handleIframeMessage(e) { if (typeof e.data === 'string') { try { var results = JSON.parse(e.data); // TODO make this different? if (results.name === 'Skill:HideHelp') { if (this._showHelpAccept) { this._showHelpAccept(); this._showHelpAccept = null; } } if (results.name === 'Search:SelectUser') { if (this._onSelecUserFormSearchCallback) { this._onSelecUserFormSearchCallback(results.user); this._onSelecUserFormSearchCallback = null; } } else if (results.name === 'Search:Cancel') { if (this._onCancelSearchCallback) { this._onCancelSearchCallback(); this._onCancelSearchCallback = null; } } else if (results.name === 'Skill:DidConfirm') { if (this._confirmAccept) { this._confirmAccept(results.pass); this._confirmAccept = null; } } } catch (err) {} } }, //TODO move to promise searchForUser: function searchForUser() { var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref5$onCancel = _ref5.onCancel, onCancel = _ref5$onCancel === undefined ? function () {} : _ref5$onCancel, _ref5$onSelectUser = _ref5.onSelectUser, onSelectUser = _ref5$onSelectUser === undefined ? function () {} : _ref5$onSelectUser, _ref5$roles = _ref5.roles, roles = _ref5$roles === undefined ? ['guest'] : _ref5$roles, locationId = _ref5.locationId; postMessage({ name: 'Skill:SearchForUser', roles: roles, locationId: locationId }); this._onCancelSearchCallback = onCancel; this._onSelecUserFormSearchCallback = onSelectUser; }, displayMessage: function displayMessage(_ref6) { var message = _ref6.message, _ref6$type = _ref6.type, type = _ref6$type === undefined ? 'error' : _ref6$type; if (window.top === window.self) { alert(message); } else { postMessage({ name: 'Skill:DisplayMessage', message: message, type: type }); } }, confirm: function () { var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_ref8) { var _this2 = this; var message = _ref8.message; var promise; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!(window.top === window.self)) { _context2.next = 4; break; } return _context2.abrupt('return', window.confirm(message)); case 4: promise = new Promise(function (accept, reject) { _this2._confirmAccept = accept; }); postMessage({ name: 'Skill:PleaseConfirm', message: message }); return _context2.abrupt('return', promise); case 7: case 'end': return _context2.stop(); } } }, _callee2, this); })); function confirm(_x5) { return _ref7.apply(this, arguments); } return confirm; }() }; if (typeof window !== 'undefined') { window.addEventListener('message', skill.handleIframeMessage.bind(skill)); } exports.default = skill;