UNPKG

@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) 2.81 kB
import*as e from"react";import t from"react";var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var o={},c={};!function(e){var r=n&&n.__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(e,"__esModule",{value:!0}),e.scripts=void 0;var o=t;e.scripts={};var c=function(t){var n=document.querySelector('script[src="'+t+'"]');if(n)return e.scripts[t]={loading:!1,error:null,scriptEl:n}};e.default=function(t){var n=t.src,s=t.checkForExisting,l=void 0!==s&&s,a=r(t,["src","checkForExisting"]),u=n?e.scripts[n]:void 0;!u&&l&&n&&i&&(u=c(n));var d=(0,o.useState)(u?u.loading:Boolean(n)),f=d[0],p=d[1],v=(0,o.useState)(u?u.error:null),b=v[0],y=v[1],g=(0,o.useState)(!1),O=g[0],m=g[1];return(0,o.useEffect)((function(){if(i&&n&&!O&&!b){var t;!(u=e.scripts[n])&&l&&(u=c(n)),u?t=u.scriptEl:((t=document.createElement("script")).src=n,Object.keys(a).forEach((function(e){void 0===t[e]?t.setAttribute(e,a[e]):t[e]=a[e]})),u=e.scripts[n]={loading:!0,error:null,scriptEl:t});var r=function(){u&&(u.loading=!1),p(!1),m(!0)},o=function(e){u&&(u.error=e),y(e)};return t.addEventListener("load",r),t.addEventListener("error",o),document.body.appendChild(t),function(){t.removeEventListener("load",r),t.removeEventListener("error",o)}}}),[n]),[f,b]};var i="undefined"!=typeof window&&void 0!==window.document}(c),function(e){var t=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.scripts=e.default=void 0;var r=c;Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t(r).default}}),Object.defineProperty(e,"scripts",{enumerable:!0,get:function(){return r.scripts}})}(o);var i=r(o);function s({connectUrl:t}={}){const[n,r]=e.useState("closed"),[o,c]=e.useState(),[s,l]=i({src:t||"https://app.stackone.com/stackone/connect.js",checkForExisting:!0});e.useEffect((()=>{"open"!==n&&"closed"!==n&&(l?"opening"===n&&r("closed"):s||"opening"===n&&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,s,n,o]);const a=e.useCallback((e=>{if(l)throw"Could not initiate StackOne Hub.";"open"!==n&&(c(e),r("opening"))}),[s,l]);return{startConnect:a}}export{s as useStackOneHub};