easy-dialogs
Version:
Function based dialogs manager for React
3 lines (2 loc) • 4.06 kB
JavaScript
;var t=require("jotai"),n=require("react"),e=function(){return e=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t},e.apply(this,arguments)};function r(t,n,e,r){return new(e||(e=Promise))((function(o,i){function u(t){try{l(r.next(t))}catch(t){i(t)}}function a(t){try{l(r.throw(t))}catch(t){i(t)}}function l(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(u,a)}l((r=r.apply(t,n||[])).next())}))}function o(t,n){var e,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return u.next=a(0),u.throw=a(1),u.return=a(2),"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function a(a){return function(l){return function(a){if(e)throw new TypeError("Generator is already executing.");for(;u&&(u=0,a[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=n.call(t,i)}catch(t){a=[6,t],r=0}finally{e=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}function i(t,n,e){if(e||2===arguments.length)for(var r,o=0,i=n.length;o<i;o++)!r&&o in n||(r||(r=Array.prototype.slice.call(n,0,o)),r[o]=n[o]);return t.concat(r||Array.prototype.slice.call(n))}"function"==typeof SuppressedError&&SuppressedError;var u=t.atom(0),a=t.atom((function(t){return t(u)}),(function(t,n){var e=t(u);return n(u,e+1),e})),l=t.atom([]),c=function(){return t.getDefaultStore().get(l)};exports.Dialog=function(){var r=t.useAtom(l)[0];return r&&0!==r.length?n.createElement(n.Fragment,null,r.map((function(t){var r,o=t.key,i=t.component,u=t.visualState,a=t.props,l="closed"===u;return n.createElement(i,e({key:o},a,((r={})["data-state"]=l?"closed":void 0,r)))}))):null},exports.getActiveDialogs=c,exports.useDialogManager=function(n){var u=t.useSetAtom(l),f=t.useSetAtom(a),s=function(t,n){return new Promise((function(r){var o,a=f(),l=n||{};l.dialogKeyId;var s=function(t,n){var e={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&n.indexOf(r)<0&&(e[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(e[r[o]]=t[r[o]])}return e}(l,["dialogKeyId"]),p={key:a,component:t,visualState:"open",useExitAnimation:null!==(o=null==n?void 0:n.useExitAnimation)&&void 0!==o&&o,dialogKeyId:n.dialogKeyId,props:e(e({},s),{onClose:function(t){var n,o,i=null!==(o=null===(n=c().find((function(t){return t.key===a})))||void 0===n?void 0:n.useExitAnimation)&&void 0!==o&&o;u((function(t){return t.map((function(t){return t.key===a?e(e({},t),{visualState:"closed",props:e({},t.props)}):t}))})),i||u((function(t){return t.filter((function(t){return t.key!==a}))})),r(t)},onAnimationEnd:function(){u((function(t){return t.filter((function(t){return t.key!==a||"closed"!==t.visualState}))}))}})};u((function(t){return i(i([],t,!0),[p],!1)}))}))};return{callDialog:function(t,i){return r(void 0,void 0,void 0,(function(){var r,u,a,l;return o(this,(function(o){if(!(r=n.find((function(n){return n.id===t}))))throw new Error('Dialog with id "'.concat(t,'" not found in definitions'));return u=r.component,a=r.props,l=e(e({},a||{}),{useExitAnimation:r.useExitAnimation,additionalProps:i||{},dialogKeyId:t}),[2,s(u,l)]}))}))},closeAllDialogs:function(){u([])}}};
//# sourceMappingURL=index.js.map