@stackone/react-hub
Version:
Allow your users to quickly integrate with several services with StackOne. The `@stackone/react-hub` introduces an easy-to-use React hook for integrating with your web app.
2 lines (1 loc) • 3.06 kB
JavaScript
;var e=require("react");function t(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var n=t(e),r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var c={},i={};!function(t){var n=r&&r.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};Object.defineProperty(t,"__esModule",{value:!0}),t.scripts=void 0;var o=e;t.scripts={};var c=function(e){var n=document.querySelector('script[src="'+e+'"]');if(n)return t.scripts[e]={loading:!1,error:null,scriptEl:n}};t.default=function(e){var r=e.src,a=e.checkForExisting,l=void 0!==a&&a,s=n(e,["src","checkForExisting"]),u=r?t.scripts[r]:void 0;!u&&l&&r&&i&&(u=c(r));var d=(0,o.useState)(u?u.loading:Boolean(r)),f=d[0],p=d[1],v=(0,o.useState)(u?u.error:null),b=v[0],y=v[1],O=(0,o.useState)(!1),g=O[0],j=O[1];return(0,o.useEffect)((function(){if(i&&r&&!g&&!b){var e;!(u=t.scripts[r])&&l&&(u=c(r)),u?e=u.scriptEl:((e=document.createElement("script")).src=r,Object.keys(s).forEach((function(t){void 0===e[t]?e.setAttribute(t,s[t]):e[t]=s[t]})),u=t.scripts[r]={loading:!0,error:null,scriptEl:e});var n=function(){u&&(u.loading=!1),p(!1),j(!0)},o=function(e){u&&(u.error=e),y(e)};return e.addEventListener("load",n),e.addEventListener("error",o),document.body.appendChild(e),function(){e.removeEventListener("load",n),e.removeEventListener("error",o)}}}),[r]),[f,b]};var i="undefined"!=typeof window&&void 0!==window.document}(i),function(e){var t=r&&r.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.scripts=e.default=void 0;var n=i;Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t(n).default}}),Object.defineProperty(e,"scripts",{enumerable:!0,get:function(){return n.scripts}})}(c);var a=o(c);exports.useStackOneHub=function({connectUrl:e}={}){const[t,r]=n.useState("closed"),[o,c]=n.useState(),[i,l]=a({src:e||"https://app.stackone.com/stackone/connect.js",checkForExisting:!0});n.useEffect((()=>{"open"!==t&&"closed"!==t&&(l?"opening"===t&&r("closed"):i||"opening"===t&&o&&(r("open"),Connect.start(Object.assign(Object.assign({},o),{onClose:()=>{var e;r("closed"),null===(e=o.onClose)||void 0===e||e.call(o)},onCancel:()=>{var e;r("closed"),null===(e=o.onCancel)||void 0===e||e.call(o)}}))))}),[l,i,t,o]);return{startConnect:n.useCallback((e=>{if(l)throw"Could not initiate StackOne Hub.";"open"!==t&&(c(e),r("opening"))}),[i,l])}};