dinocollab-core 1.0.25 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,4 @@
1
- function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function r(t){if(Array.isArray(t))return t}function e(r){if(Array.isArray(r))return t(r)}function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t,r,e,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function i(t){return function(){var r=this,e=arguments;return new Promise((function(n,i){var a=t.apply(r,e);function u(t){o(a,n,i,u,c,"next",t)}function c(t){o(a,n,i,u,c,"throw",t)}u(void 0)}))}}function a(t,r,e){return r=y(r),P(t,p()?Reflect.construct(r,e||[],y(t).constructor):r.apply(t,e))}function u(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function c(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,I(n.key),n)}}function f(t,r,e){return r&&c(t.prototype,r),e&&c(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function s(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=G(t))||r){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}}function l(t,r,e){return(r=I(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}function h(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&S(t,r)}function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}function b(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function v(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;c=!1}else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}function d(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function m(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function w(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?g(Object(e),!0).forEach((function(r){l(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):g(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function O(t,r){if(null==t)return{};var e,n,o=j(t,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],-1===r.indexOf(e)&&{}.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function j(t,r){if(null==t)return{};var e={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==r.indexOf(n))continue;e[n]=t[n]}return e}function P(t,r){if(r&&("object"==typeof r||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return n(t)}function E(){E=function(){return r};var t,r={},e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function c(t,r,e,n){Object.defineProperty(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n})}try{c({},"")}catch(t){c=function(t,r,e){return t[r]=e}}function f(r,e,n,o){var i=e&&e.prototype instanceof y?e:y,a=Object.create(i.prototype);return c(a,"_invoke",function(r,e,n){var o=1;return function(i,a){if(3===o)throw Error("Generator is already running");if(4===o){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=O(u,n);if(c){if(c===l)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(1===o)throw o=4,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=3;var f=s(r,e,n);if("normal"===f.type){if(o=n.done?4:2,f.arg===l)continue;return{value:f.arg,done:n.done}}"throw"===f.type&&(o=4,n.method="throw",n.arg=f.arg)}}}(r,n,new S(o||[])),!0),a}function s(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=f;var l={};function y(){}function h(){}function p(){}var b={};c(b,i,(function(){return this}));var v=Object.getPrototypeOf,d=v&&v(v(x([])));d&&d!==e&&n.call(d,i)&&(b=d);var m=p.prototype=y.prototype=Object.create(b);function g(t){["next","throw","return"].forEach((function(r){c(t,r,(function(t){return this._invoke(r,t)}))}))}function w(t,r){function e(o,i,a,u){var c=s(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==typeof l&&n.call(l,"__await")?r.resolve(l.__await).then((function(t){e("next",t,a,u)}),(function(t){e("throw",t,a,u)})):r.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return e("throw",t,a,u)}))}u(c.arg)}var o;c(this,"_invoke",(function(t,n){function i(){return new r((function(r,o){e(t,n,r,o)}))}return o=o?o.then(i,i):i()}),!0)}function O(r,e){var n=e.method,o=r.i[n];if(o===t)return e.delegate=null,"throw"===n&&r.i.return&&(e.method="return",e.arg=t,O(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),l;var i=s(o,r.i,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,l;var a=i.arg;return a?a.done?(e[r.r]=a.value,e.next=r.n,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,l):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function j(t){this.tryEntries.push(t)}function P(r){var e=r[4]||{};e.type="normal",e.arg=t,r[4]=e}function S(t){this.tryEntries=[[-1]],t.forEach(j,this),this.reset(!0)}function x(r){if(null!=r){var e=r[i];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,a=function e(){for(;++o<r.length;)if(n.call(r,o))return e.value=r[o],e.done=!1,e;return e.value=t,e.done=!0,e};return a.next=a}}throw new TypeError(typeof r+" is not iterable")}return h.prototype=p,c(m,"constructor",p),c(p,"constructor",h),c(p,u,h.displayName="GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===h||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,c(t,u,"GeneratorFunction")),t.prototype=Object.create(m),t},r.awrap=function(t){return{__await:t}},g(w.prototype),c(w.prototype,a,(function(){return this})),r.AsyncIterator=w,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new w(f(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},g(m),c(m,u,"Generator"),c(m,i,(function(){return this})),c(m,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.unshift(n);return function t(){for(;e.length;)if((n=e.pop())in r)return t.value=n,t.done=!1,t;return t.done=!0,t}},r.values=x,S.prototype={constructor:S,reset:function(r){if(this.prev=this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!r)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0][4];if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(t){a.type="throw",a.arg=r,e.next=t}for(var o=e.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i[4],u=this.prev,c=i[1],f=i[2];if(-1===i[0])return n("end"),!1;if(!c&&!f)throw Error("try statement without catch or finally");if(null!=i[0]&&i[0]<=u){if(u<c)return this.method="next",this.arg=t,n(c),!0;if(u<f)return n(f),!1}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n[0]>-1&&n[0]<=this.prev&&this.prev<n[2]){var o=n;break}}o&&("break"===t||"continue"===t)&&o[0]<=r&&r<=o[2]&&(o=null);var i=o?o[4]:{};return i.type=t,i.arg=r,o?(this.method="next",this.next=o[2],l):this.complete(i)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),l},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[2]===t)return this.complete(e[4],e[3]),P(e),l}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[0]===t){var n=e[4];if("throw"===n.type){var o=n.arg;P(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={i:x(r),r:e,n:n},"next"===this.method&&(this.arg=t),l}},r}function S(t,r){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},S(t,r)}function x(t,e){return r(t)||v(t,e)||G(t,e)||d()}function _(t){return r(t)||b(t)||G(t)||d()}function A(t){return e(t)||b(t)||G(t)||m()}function T(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function I(t){var r=T(t,"string");return"symbol"==typeof r?r:r+""}function k(t){return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},k(t)}function G(r,e){if(r){if("string"==typeof r)return t(r,e);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(r,e):void 0}}export{t as arrayLikeToArray,r as arrayWithHoles,e as arrayWithoutHoles,n as assertThisInitialized,i as asyncToGenerator,a as callSuper,u as classCallCheck,f as createClass,s as createForOfIteratorHelper,l as defineProperty,y as getPrototypeOf,h as inherits,p as isNativeReflectConstruct,b as iterableToArray,v as iterableToArrayLimit,d as nonIterableRest,m as nonIterableSpread,w as objectSpread2,O as objectWithoutProperties,j as objectWithoutPropertiesLoose,P as possibleConstructorReturn,E as regeneratorRuntime,S as setPrototypeOf,x as slicedToArray,_ as toArray,A as toConsumableArray,T as toPrimitive,I as toPropertyKey,k as typeof,G as unsupportedIterableToArray};
1
+ function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function r(t){if(Array.isArray(t))return t}function e(r){if(Array.isArray(r))return t(r)}function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t,r,e,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function i(t){return function(){var r=this,e=arguments;return new Promise((function(n,i){var a=t.apply(r,e);function u(t){o(a,n,i,u,c,"next",t)}function c(t){o(a,n,i,u,c,"throw",t)}u(void 0)}))}}function a(t,r,e){return r=y(r),P(t,b()?Reflect.construct(r,e||[],y(t).constructor):r.apply(t,e))}function u(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function c(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,C(n.key),n)}}function f(t,r,e){return r&&c(t.prototype,r),e&&c(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function l(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=G(t))||r){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}}function s(t,r,e){return(r=C(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}function p(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&A(t,r)}function b(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(b=function(){return!!t})()}function v(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function d(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;c=!1}else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}function m(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function O(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function j(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?O(Object(e),!0).forEach((function(r){s(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):O(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function w(t,r){if(null==t)return{};var e,n,o=g(t,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],-1===r.indexOf(e)&&{}.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function g(t,r){if(null==t)return{};var e={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==r.indexOf(n))continue;e[n]=t[n]}return e}function P(t,r){if(r&&("object"==typeof r||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return n(t)}function S(){
2
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3
+ var t,r,e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,n,o,i){var c=n&&n.prototype instanceof u?n:u,f=Object.create(c.prototype);return T(f,"_invoke",function(e,n,o){var i,u,c,f=0,l=o||[],s=!1,y={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(r,e){return i=r,u=0,c=t,y.n=e,a}};function p(e,n){for(u=e,c=n,r=0;!s&&f&&!o&&r<l.length;r++){var o,i=l[r],p=y.p,b=i[2];e>3?(o=b===n)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=t):i[0]<=p&&((o=e<2&&p<i[1])?(u=0,y.v=n,y.n=i[1]):p<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,y.n=b,u=0))}if(o||e>1)return a;throw s=!0,n}return function(o,l,b){if(f>1)throw TypeError("Generator is already running");for(s&&1===l&&p(l,b),u=l,c=b;(r=u<2?t:c)||!s;){i||(u?u<3?(u>1&&(y.n=-1),p(u,c)):y.n=c:y.v=c);try{if(f=2,i){if(u||(o="next"),r=i[o]){if(!(r=r.call(i,c)))throw TypeError("iterator result is not an object");if(!r.done)return r;c=r.value,u<2&&(u=0)}else 1===u&&(r=i.return)&&r.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=t}else if((r=(s=y.n<0)?c:e.call(n,y))!==a)break}catch(r){i=t,u=1,c=r}finally{f=1}}return{value:r,done:s}}}(e,o,i),!0),f}var a={};function u(){}function c(){}function f(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(T(r={},n,(function(){return this})),r),s=f.prototype=u.prototype=Object.create(l);function y(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,T(t,o,"GeneratorFunction")),t.prototype=Object.create(s),t}return c.prototype=f,T(s,"constructor",f),T(f,"constructor",c),c.displayName="GeneratorFunction",T(f,o,"GeneratorFunction"),T(s),T(s,o,"Generator"),T(s,n,(function(){return this})),T(s,"toString",(function(){return"[object Generator]"})),(S=function(){return{w:i,m:y}})()}function T(t,r,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}T=function(t,r,e,n){if(r)o?o(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n}):t[r]=e;else{function i(r,e){T(t,r,(function(t){return this._invoke(r,e,t)}))}i("next",0),i("throw",1),i("return",2)}},T(t,r,e,n)}function A(t,r){return A=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},A(t,r)}function E(t,e){return r(t)||d(t,e)||G(t,e)||m()}function _(t){return r(t)||v(t)||G(t)||m()}function I(t){return e(t)||v(t)||G(t)||h()}function x(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function C(t){var r=x(t,"string");return"symbol"==typeof r?r:r+""}function k(t){return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},k(t)}function G(r,e){if(r){if("string"==typeof r)return t(r,e);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(r,e):void 0}}export{t as arrayLikeToArray,r as arrayWithHoles,e as arrayWithoutHoles,n as assertThisInitialized,i as asyncToGenerator,a as callSuper,u as classCallCheck,f as createClass,l as createForOfIteratorHelper,s as defineProperty,y as getPrototypeOf,p as inherits,b as isNativeReflectConstruct,v as iterableToArray,d as iterableToArrayLimit,m as nonIterableRest,h as nonIterableSpread,j as objectSpread2,w as objectWithoutProperties,g as objectWithoutPropertiesLoose,P as possibleConstructorReturn,S as regenerator,T as regeneratorDefine,A as setPrototypeOf,E as slicedToArray,_ as toArray,I as toConsumableArray,x as toPrimitive,C as toPropertyKey,k as typeof,G as unsupportedIterableToArray};
2
4
  //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as e,classCallCheck as t,callSuper as a,defineProperty as s,asyncToGenerator as o,regeneratorRuntime as n,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l}from"react/jsx-runtime";import u,{Component as m}from"react";import{Box as c}from"@mui/material";import{validateMerge as f,convertFormDataToJson as d,singleValidate as p,getErrorFromResponse as v}from"./helpers.js";import S,{SingleRuleValidate as g}from"./validator.js";var E=function(E){var h=u.createContext({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},clearErrorAll:function(){}}),x=function(){function u(r){var e;return t(this,u),e=a(this,u,[r]),s(e,"refForm",null),s(e,"mapContext",(function(){var r=e,t=r.setError,a=r.setModelState,s=r.clearErrorAll,o=r.onBlur,n=e.state;return{modelState:n.modelState,messageErrors:n.messageErrors,setError:t,onBlur:o,clearErrorAll:s,setModelState:a}})),s(e,"setError",(function(r,t){var a=s({},r,[{rule:g.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,a)})})),s(e,"setModelState",(function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})})),s(e,"getValidate",(function(){var r=new S({});return f(r,null==E?void 0:E.validate,e.props.validate)})),s(e,"clearErrorAll",(function(){e.setState({messageErrors:{}})})),s(e,"onSubmit",function(){var r=o(n().mark((function r(t){var a,s,o;return n().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(t.preventDefault(),a=new FormData(t.currentTarget),s=d(a),e.setState({modelState:s}),!(o=e.validate.run(s))){r.next=9;break}if(e.setState({messageErrors:o}),!(Object.keys(o).length>0)){r.next=9;break}return r.abrupt("return");case 9:return r.next=11,e.props.onSubmit(s,t).catch((function(r){var t=v(r,s);e.setState({messageErrors:i(i({},e.state.messageErrors),t||{})})}));case 11:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}()),s(e,"onBlur",(function(r){if(e.refForm){var t=e.state.messageErrors,a=new FormData(e.refForm),s=d(a);e.setState({modelState:s});var o=p(r,s,t,e.validate)||{};e.setState({messageErrors:o})}})),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(u,m),e(u,[{key:"render",value:function(){var r=this;return l(c,{component:"form",sx:this.props.sx,ref:function(e){return r.refForm=e},onSubmit:this.onSubmit,children:l(h.Provider,{value:this.mapContext(),children:this.props.children})})}}])}();return{Form:x,Validator:null==E?void 0:E.validate,Context:h,mapContext:function(r){return l(h.Consumer,{children:r})}}};export{E as default};
1
+ import{inherits as r,createClass as e,classCallCheck as t,callSuper as a,defineProperty as s,asyncToGenerator as o,regenerator as n,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l}from"react/jsx-runtime";import u,{Component as m}from"react";import{Box as c}from"@mui/material";import{validateMerge as f,convertFormDataToJson as d,singleValidate as p,getErrorFromResponse as v}from"./helpers.js";import S,{SingleRuleValidate as g}from"./validator.js";var E=function(E){var h=u.createContext({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},clearErrorAll:function(){}}),b=function(){function u(r){var e;return t(this,u),e=a(this,u,[r]),s(e,"refForm",null),s(e,"mapContext",(function(){var r=e,t=r.setError,a=r.setModelState,s=r.clearErrorAll,o=r.onBlur,n=e.state;return{modelState:n.modelState,messageErrors:n.messageErrors,setError:t,onBlur:o,clearErrorAll:s,setModelState:a}})),s(e,"setError",(function(r,t){var a=s({},r,[{rule:g.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,a)})})),s(e,"setModelState",(function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})})),s(e,"getValidate",(function(){var r=new S({});return f(r,null==E?void 0:E.validate,e.props.validate)})),s(e,"clearErrorAll",(function(){e.setState({messageErrors:{}})})),s(e,"onSubmit",function(){var r=o(n().m((function r(t){var a,s,o;return n().w((function(r){for(;;)switch(r.n){case 0:if(t.preventDefault(),a=new FormData(t.currentTarget),s=d(a),e.setState({modelState:s}),!(o=e.validate.run(s))){r.n=1;break}if(e.setState({messageErrors:o}),!(Object.keys(o).length>0)){r.n=1;break}return r.a(2);case 1:return r.n=2,e.props.onSubmit(s,t).catch((function(r){var t=v(r,s);e.setState({messageErrors:i(i({},e.state.messageErrors),t||{})})}));case 2:return r.a(2)}}),r)})));return function(e){return r.apply(this,arguments)}}()),s(e,"onBlur",(function(r){if(e.refForm){var t=e.state.messageErrors,a=new FormData(e.refForm),s=d(a);e.setState({modelState:s});var o=p(r,s,t,e.validate)||{};e.setState({messageErrors:o})}})),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(u,m),e(u,[{key:"render",value:function(){var r=this;return l(c,{component:"form",sx:this.props.sx,ref:function(e){return r.refForm=e},onSubmit:this.onSubmit,children:l(h.Provider,{value:this.mapContext(),children:this.props.children})})}}])}();return{Form:b,Validator:null==E?void 0:E.validate,Context:h,mapContext:function(r){return l(h.Consumer,{children:r})}}};export{E as default};
2
2
  //# sourceMappingURL=create.form-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-base.js","sources":["../../src/form/create.form-base.tsx"],"sourcesContent":["import React, { Component, ComponentType, PropsWithChildren, ReactNode } from 'react'\r\nimport { Box, SxProps, Theme } from '@mui/material'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorFromResponse, singleValidate, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseParams<T> {\r\n validate?: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren {\r\n sx?: SxProps<Theme>\r\n validate?: FormValidator<Partial<T>>\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\r\n}\r\n\r\nexport interface IFormBaseState<T> {\r\n modelState?: Partial<T>\r\n messageErrors: IPartialError<T>\r\n}\r\n\r\nexport interface IFormBaseResult<T> {\r\n Form: ComponentType<IFormBaseProps<T>>\r\n Validator?: FormValidator<Partial<T>>\r\n Context: React.Context<IFormBaseContext<T>>\r\n mapContext: (params: (context: IFormBaseContext<T>) => JSX.Element) => JSX.Element\r\n}\r\n\r\nconst CreateFormBase = function <T>(params?: IFormBaseParams<T>): IFormBaseResult<T> {\r\n const FormBaseContext = React.createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n clearErrorAll: () => {}\r\n })\r\n class FormBase extends Component<IFormBaseProps<T>, IFormBaseState<T>> {\r\n refForm: HTMLFormElement | null = null\r\n constructor(props: IFormBaseProps<T>) {\r\n super(props)\r\n this.validate = this.getValidate()\r\n this.state = { messageErrors: {} }\r\n }\r\n\r\n render() {\r\n return (\r\n <Box component='form' sx={this.props.sx} ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit}>\r\n <FormBaseContext.Provider value={this.mapContext()}>{this.props.children}</FormBaseContext.Provider>\r\n </Box>\r\n )\r\n }\r\n\r\n private mapContext = (): IFormBaseContext<T> => {\r\n const { setError, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState }\r\n }\r\n\r\n setError = (keyName: keyof T, message: string) => {\r\n const error = { [keyName]: [{ rule: SingleRuleValidate.Custom, message }] }\r\n this.setState({ messageErrors: Object.assign({}, this.state.messageErrors, error) })\r\n }\r\n\r\n setModelState: ISetModelStateFunc<T> = (state) => {\r\n const obj = Object.assign({}, this.state.modelState, state)\r\n this.setState({ modelState: obj })\r\n }\r\n\r\n getValidate = (): FormValidator<Partial<T>> => {\r\n const defaultValidate = new FormValidator<Partial<T>>({})\r\n return validateMerge(defaultValidate, params?.validate, this.props.validate)\r\n }\r\n\r\n clearErrorAll = () => {\r\n this.setState({ messageErrors: {} })\r\n }\r\n\r\n private validate: FormValidator<Partial<T>>\r\n onSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\r\n e.preventDefault()\r\n const formData = new FormData(e.currentTarget as HTMLFormElement)\r\n const model = convertFormDataToJson<T>(formData)\r\n this.setState({ modelState: model })\r\n const messageErrors = this.validate.run(model) as IPartialError<T>\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n await this.props.onSubmit(model, e).catch((error) => {\r\n const messageError = getErrorFromResponse(error, model)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\r\n })\r\n }\r\n\r\n onBlur = (keyName: keyof T) => {\r\n if (!this.refForm) return\r\n const { messageErrors } = this.state\r\n const formData = new FormData(this.refForm)\r\n const model = convertFormDataToJson(formData)\r\n this.setState({ modelState: model })\r\n const error = singleValidate<T, Partial<T>>(keyName, model, messageErrors, this.validate) || {}\r\n this.setState({ messageErrors: error as IPartialError<T> })\r\n }\r\n }\r\n\r\n return {\r\n Form: FormBase,\r\n Validator: params?.validate,\r\n Context: FormBaseContext,\r\n mapContext: (params: (context: IFormBaseContext<T>) => ReactNode) => <FormBaseContext.Consumer>{params}</FormBaseContext.Consumer>\r\n }\r\n}\r\nexport default CreateFormBase\r\n"],"names":["CreateFormBase","params","FormBaseContext","React","createContext","setModelState","messageErrors","onBlur","setError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","keyName","message","error","rule","SingleRuleValidate","Custom","setState","Object","assign","obj","defaultValidate","FormValidator","validateMerge","validate","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","e","formData","model","wrap","_context","prev","next","preventDefault","FormData","currentTarget","convertFormDataToJson","run","keys","length","abrupt","onSubmit","messageError","getErrorFromResponse","_objectSpread","stop","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","key","value","_this3","_jsx","Box","component","sx","ref","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
1
+ {"version":3,"file":"create.form-base.js","sources":["../../src/form/create.form-base.tsx"],"sourcesContent":["import React, { Component, ComponentType, PropsWithChildren, ReactNode } from 'react'\r\nimport { Box, SxProps, Theme } from '@mui/material'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorFromResponse, singleValidate, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseParams<T> {\r\n validate?: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren {\r\n sx?: SxProps<Theme>\r\n validate?: FormValidator<Partial<T>>\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\r\n}\r\n\r\nexport interface IFormBaseState<T> {\r\n modelState?: Partial<T>\r\n messageErrors: IPartialError<T>\r\n}\r\n\r\nexport interface IFormBaseResult<T> {\r\n Form: ComponentType<IFormBaseProps<T>>\r\n Validator?: FormValidator<Partial<T>>\r\n Context: React.Context<IFormBaseContext<T>>\r\n mapContext: (params: (context: IFormBaseContext<T>) => JSX.Element) => JSX.Element\r\n}\r\n\r\nconst CreateFormBase = function <T>(params?: IFormBaseParams<T>): IFormBaseResult<T> {\r\n const FormBaseContext = React.createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n clearErrorAll: () => {}\r\n })\r\n class FormBase extends Component<IFormBaseProps<T>, IFormBaseState<T>> {\r\n refForm: HTMLFormElement | null = null\r\n constructor(props: IFormBaseProps<T>) {\r\n super(props)\r\n this.validate = this.getValidate()\r\n this.state = { messageErrors: {} }\r\n }\r\n\r\n render() {\r\n return (\r\n <Box component='form' sx={this.props.sx} ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit}>\r\n <FormBaseContext.Provider value={this.mapContext()}>{this.props.children}</FormBaseContext.Provider>\r\n </Box>\r\n )\r\n }\r\n\r\n private mapContext = (): IFormBaseContext<T> => {\r\n const { setError, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState }\r\n }\r\n\r\n setError = (keyName: keyof T, message: string) => {\r\n const error = { [keyName]: [{ rule: SingleRuleValidate.Custom, message }] }\r\n this.setState({ messageErrors: Object.assign({}, this.state.messageErrors, error) })\r\n }\r\n\r\n setModelState: ISetModelStateFunc<T> = (state) => {\r\n const obj = Object.assign({}, this.state.modelState, state)\r\n this.setState({ modelState: obj })\r\n }\r\n\r\n getValidate = (): FormValidator<Partial<T>> => {\r\n const defaultValidate = new FormValidator<Partial<T>>({})\r\n return validateMerge(defaultValidate, params?.validate, this.props.validate)\r\n }\r\n\r\n clearErrorAll = () => {\r\n this.setState({ messageErrors: {} })\r\n }\r\n\r\n private validate: FormValidator<Partial<T>>\r\n onSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\r\n e.preventDefault()\r\n const formData = new FormData(e.currentTarget as HTMLFormElement)\r\n const model = convertFormDataToJson<T>(formData)\r\n this.setState({ modelState: model })\r\n const messageErrors = this.validate.run(model) as IPartialError<T>\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n await this.props.onSubmit(model, e).catch((error) => {\r\n const messageError = getErrorFromResponse(error, model)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\r\n })\r\n }\r\n\r\n onBlur = (keyName: keyof T) => {\r\n if (!this.refForm) return\r\n const { messageErrors } = this.state\r\n const formData = new FormData(this.refForm)\r\n const model = convertFormDataToJson(formData)\r\n this.setState({ modelState: model })\r\n const error = singleValidate<T, Partial<T>>(keyName, model, messageErrors, this.validate) || {}\r\n this.setState({ messageErrors: error as IPartialError<T> })\r\n }\r\n }\r\n\r\n return {\r\n Form: FormBase,\r\n Validator: params?.validate,\r\n Context: FormBaseContext,\r\n mapContext: (params: (context: IFormBaseContext<T>) => ReactNode) => <FormBaseContext.Consumer>{params}</FormBaseContext.Consumer>\r\n }\r\n}\r\nexport default CreateFormBase\r\n"],"names":["CreateFormBase","params","FormBaseContext","React","createContext","setModelState","messageErrors","onBlur","setError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","keyName","message","error","rule","SingleRuleValidate","Custom","setState","Object","assign","obj","defaultValidate","FormValidator","validateMerge","validate","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","model","w","_context","n","preventDefault","FormData","currentTarget","convertFormDataToJson","run","keys","length","a","onSubmit","messageError","getErrorFromResponse","_objectSpread","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","key","value","_this3","_jsx","Box","component","sx","ref","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as t,classCallCheck as e,callSuper as n,defineProperty as o,asyncToGenerator as i,regeneratorRuntime as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as p,Box as d,Card as m,DialogTitle as f,DialogContent as h,DialogActions as v}from"@mui/material";import{fetchDelay as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as x}from"../api-context/global-modal.js";var C=function(u){var p=function(){function p(r){var t;return e(this,p),t=n(this,p,[r]),o(t,"handleClickNo",(function(r){r.close(),t.props.onCancel&&t.props.onCancel()})),o(t,"handleClickYes",function(){var r=i(l().mark((function r(e){return l().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(t.props.onSubmit){r.next=2;break}return r.abrupt("return");case 2:return r.prev=2,t.setState({loading:!0}),r.next=6,g((function(){return t.props.onSubmit(t.props.data)}),700);case 6:e.close(),r.next=12;break;case 9:r.prev=9,r.t0=r.catch(2),console.log(r.t0);case 12:return r.prev=12,t.setState({loading:!1}),r.finish(12);case 15:case"end":return r.stop()}}),r,null,[[2,9,12,15]])})));return function(t){return r.apply(this,arguments)}}()),t.state={loading:!1},t}return r(p,c),t(p,[{key:"render",value:function(){var r,t,e=this,n=this.props.children||(null!=u&&u.content?null==u?void 0:u.content(this.props.data):void 0),o=null!==(r=null!==(t=this.props.title)&&void 0!==t?t:null==u?void 0:u.title)&&void 0!==r?r:"Are you sure?";return a(d,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:x((function(r){var t,i;return s(m,{children:[a(f,{id:"alert-dialog-title",children:o}),a(h,{sx:{minWidth:"300px"},children:n}),s(v,{children:[a(b,{disabled:e.state.loading,color:(null==u||null===(t=u.colors)||void 0===t?void 0:t.no)||"inherit",onClick:function(){return e.handleClickNo(r)},children:"No"}),a(b,{color:(null==u||null===(i=u.colors)||void 0===i?void 0:i.yes)||"error",disabled:e.state.loading,onClick:function(){return e.handleClickYes(r)},children:"Yes"})]})]})}))})}}])}();return p},b=u(p)({textTransform:"capitalize",fontWeight:600,"&.MuiButton-colorInherit":{color:"#606060!important"}});export{C as default};
1
+ import{inherits as r,createClass as t,classCallCheck as e,callSuper as n,defineProperty as o,asyncToGenerator as i,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as p,Box as d,Card as f,DialogTitle as m,DialogContent as h,DialogActions as v}from"@mui/material";import{fetchDelay as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as C}from"../api-context/global-modal.js";var x=function(u){var p=function(){function p(r){var t;return e(this,p),t=n(this,p,[r]),o(t,"handleClickNo",(function(r){r.close(),t.props.onCancel&&t.props.onCancel()})),o(t,"handleClickYes",function(){var r=i(l().m((function r(e){var n;return l().w((function(r){for(;;)switch(r.n){case 0:if(t.props.onSubmit){r.n=1;break}return r.a(2);case 1:return r.p=1,t.setState({loading:!0}),r.n=2,g((function(){return t.props.onSubmit(t.props.data)}),700);case 2:e.close(),r.n=4;break;case 3:r.p=3,n=r.v,console.log(n);case 4:return r.p=4,t.setState({loading:!1}),r.f(4);case 5:return r.a(2)}}),r,null,[[1,3,4,5]])})));return function(t){return r.apply(this,arguments)}}()),t.state={loading:!1},t}return r(p,c),t(p,[{key:"render",value:function(){var r,t,e=this,n=this.props.children||(null!=u&&u.content?null==u?void 0:u.content(this.props.data):void 0),o=null!==(r=null!==(t=this.props.title)&&void 0!==t?t:null==u?void 0:u.title)&&void 0!==r?r:"Are you sure?";return a(d,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:C((function(r){var t,i;return s(f,{children:[a(m,{id:"alert-dialog-title",children:o}),a(h,{sx:{minWidth:"300px"},children:n}),s(v,{children:[a(b,{disabled:e.state.loading,color:(null==u||null===(t=u.colors)||void 0===t?void 0:t.no)||"inherit",onClick:function(){return e.handleClickNo(r)},children:"No"}),a(b,{color:(null==u||null===(i=u.colors)||void 0===i?void 0:i.yes)||"error",disabled:e.state.loading,onClick:function(){return e.handleClickYes(r)},children:"Yes"})]})]})}))})}}])}();return p},b=u(p)({textTransform:"capitalize",fontWeight:600,"&.MuiButton-colorInherit":{color:"#606060!important"}});export{x as default};
2
2
  //# sourceMappingURL=create.form-comfirm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-comfirm.js","sources":["../../src/form/create.form-comfirm.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, Button, Card, DialogActions, DialogContent, DialogTitle, styled } from '@mui/material'\r\nimport { fetchDelay } from '../utils'\r\nimport { IGlobalModalContext, mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormComfirmParam<T> {\r\n title?: string\r\n content: (value?: T) => JSX.Element\r\n colors?: {\r\n yes?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n no?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n }\r\n}\r\n\r\nexport interface IFormComfirmProps<T> {\r\n data?: T\r\n title?: string\r\n onSubmit: (value?: T) => Promise<void>\r\n onCancel?: () => void\r\n}\r\n\r\nexport interface IFormComfirmState {\r\n loading?: boolean\r\n}\r\n\r\nconst CreateFormComfirm = function <T = any>(param?: IFormComfirmParam<T>): ComponentType<React.PropsWithChildren<IFormComfirmProps<T>>> {\r\n class FormConfirm extends Component<React.PropsWithChildren<IFormComfirmProps<T>>, IFormComfirmState> {\r\n constructor(props: IFormComfirmProps<T>) {\r\n super(props)\r\n this.state = { loading: false }\r\n }\r\n\r\n render() {\r\n const content = this.props.children || (param?.content ? param?.content(this.props.data) : undefined)\r\n const title = this.props.title ?? param?.title ?? 'Are you sure?'\r\n return (\r\n <Box sx={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n {mapGlobalModalContext((context) => (\r\n <Card>\r\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\r\n <DialogContent sx={{ minWidth: '300px' }}>{content}</DialogContent>\r\n <DialogActions>\r\n <CustomButton disabled={this.state.loading} color={param?.colors?.no || 'inherit'} onClick={() => this.handleClickNo(context)}>\r\n No\r\n </CustomButton>\r\n <CustomButton color={param?.colors?.yes || 'error'} disabled={this.state.loading} onClick={() => this.handleClickYes(context)}>\r\n Yes\r\n </CustomButton>\r\n </DialogActions>\r\n </Card>\r\n ))}\r\n </Box>\r\n )\r\n }\r\n\r\n handleClickNo = (context: IGlobalModalContext) => {\r\n context.close()\r\n this.props.onCancel && this.props.onCancel()\r\n }\r\n\r\n handleClickYes = async (context: IGlobalModalContext) => {\r\n if (!this.props.onSubmit) return\r\n try {\r\n this.setState({ loading: true })\r\n await fetchDelay(() => this.props.onSubmit(this.props.data), 700)\r\n context.close()\r\n } catch (error) {\r\n console.log(error)\r\n } finally {\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n return FormConfirm\r\n}\r\nexport default CreateFormComfirm\r\n\r\nconst CustomButton = styled(Button)({\r\n textTransform: 'capitalize',\r\n fontWeight: 600,\r\n '&.MuiButton-colorInherit': {\r\n color: '#606060!important'\r\n }\r\n})\r\n"],"names":["CreateFormComfirm","param","FormConfirm","props","_this","_classCallCheck","_callSuper","_defineProperty","context","close","onCancel","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","onSubmit","abrupt","setState","loading","fetchDelay","data","t0","console","log","finish","stop","_x","apply","this","arguments","state","_inherits","Component","_createClass","key","value","_ref2","_this$props$title","_this2","content","children","undefined","title","_jsx","Box","sx","flex","display","alignItems","justifyContent","mapGlobalModalContext","_param$colors","_param$colors2","_jsxs","Card","DialogTitle","id","DialogContent","minWidth","DialogActions","CustomButton","disabled","color","colors","no","onClick","handleClickNo","yes","handleClickYes","styled","Button","textTransform","fontWeight"],"mappings":"4qBAyBA,IAAMA,EAAoB,SAAmBC,GAA4B,IACjEC,aACJ,SAAAA,EAAYC,GAA2B,IAAAC,EAEN,OAFMC,OAAAH,GACrCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA2BE,iBAAA,SAACI,GACfA,EAAQC,QACRL,EAAKD,MAAMO,UAAYN,EAAKD,MAAMO,cACnCH,EAAAH,EAAA,iBAAA,WAAA,IAAAO,EAAAC,EAAAC,IAAAC,MAEgB,SAAAC,EAAOP,GAA4B,OAAAK,IAAAG,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GAC7Cf,EAAKD,MAAMiB,SAAQ,CAAAH,EAAAE,KAAA,EAAA,KAAA,CAAA,OAAAF,EAAAI,OAAA,UAAA,KAAA,EAEU,OAFVJ,EAAAC,KAAA,EAEtBd,EAAKkB,SAAS,CAAEC,SAAS,IAAON,EAAAE,KAAA,EAC1BK,GAAW,WAAA,OAAMpB,EAAKD,MAAMiB,SAAShB,EAAKD,MAAMsB,KAAK,GAAE,KAAI,KAAA,EACjEjB,EAAQC,QAAOQ,EAAAE,KAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,KAAA,EAAAD,EAAAS,GAAAT,EAAA,MAAA,GAEfU,QAAQC,IAAGX,EAAAS,IAAO,KAAA,GAEe,OAFfT,EAAAC,KAAA,GAElBd,EAAKkB,SAAS,CAAEC,SAAS,IAAQN,EAAAY,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAAZ,EAAAa,OAAA,GAAAf,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,UAEpC,OAAA,SAAAgB,GAAA,OAAApB,EAAAqB,MAAAC,KAAAC,UAAA,CAAA,CAbA,IA7BC9B,EAAK+B,MAAQ,CAAEZ,SAAS,GAAOnB,CACjC,CAAC,OAAAgC,EAAAlC,EAJuBmC,GAIvBC,EAAApC,EAAA,CAAA,CAAAqC,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,EAAAC,EAAAV,KACEW,EAAUX,KAAK9B,MAAM0C,WAAa5C,SAAAA,EAAO2C,QAAU3C,aAAK,EAALA,EAAO2C,QAAQX,KAAK9B,MAAMsB,WAAQqB,GACrFC,EAAwC,QAAnCN,EAAmB,QAAnBC,EAAGT,KAAK9B,MAAM4C,aAAK,IAAAL,EAAAA,EAAIzC,aAAK,EAALA,EAAO8C,aAAK,IAAAN,EAAAA,EAAI,gBAClD,OACEO,EAACC,EAAG,CAACC,GAAI,CAAEC,KAAM,EAAGC,QAAS,OAAQC,WAAY,SAAUC,eAAgB,UACxET,SAAAU,GAAsB,SAAC/C,GAAO,IAAAgD,EAAAC,EAAA,OAC7BC,EAACC,EACC,CAAAd,SAAA,CAAAG,EAACY,EAAW,CAACC,GAAG,qBAAoBhB,SAAEE,IACtCC,EAACc,EAAc,CAAAZ,GAAI,CAAEa,SAAU,kBAAYnB,IAC3Cc,EAACM,EAAa,CAAAnB,SAAA,CACZG,EAACiB,GAAaC,SAAUvB,EAAKR,MAAMZ,QAAS4C,OAAOlE,iBAAKuD,EAALvD,EAAOmE,cAAM,IAAAZ,OAAA,EAAbA,EAAea,KAAM,UAAWC,QAAS,WAAF,OAAQ3B,EAAK4B,cAAc/D,EAAQ,EAAAqC,SAAA,OAG7HG,EAACiB,EAAY,CAACE,OAAOlE,iBAAKwD,EAALxD,EAAOmE,cAAM,IAAAX,OAAA,EAAbA,EAAee,MAAO,QAASN,SAAUvB,EAAKR,MAAMZ,QAAS+C,QAAS,WAAF,OAAQ3B,EAAK8B,eAAejE,EAAQ,EAE9GqC,SAAA,aAGpB,KAGP,IAAC,IAoBH,OAAO3C,CACT,EAGM+D,EAAeS,EAAOC,EAAPD,CAAe,CAClCE,cAAe,aACfC,WAAY,IACZ,2BAA4B,CAC1BV,MAAO"}
1
+ {"version":3,"file":"create.form-comfirm.js","sources":["../../src/form/create.form-comfirm.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, Button, Card, DialogActions, DialogContent, DialogTitle, styled } from '@mui/material'\r\nimport { fetchDelay } from '../utils'\r\nimport { IGlobalModalContext, mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormComfirmParam<T> {\r\n title?: string\r\n content: (value?: T) => JSX.Element\r\n colors?: {\r\n yes?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n no?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n }\r\n}\r\n\r\nexport interface IFormComfirmProps<T> {\r\n data?: T\r\n title?: string\r\n onSubmit: (value?: T) => Promise<void>\r\n onCancel?: () => void\r\n}\r\n\r\nexport interface IFormComfirmState {\r\n loading?: boolean\r\n}\r\n\r\nconst CreateFormComfirm = function <T = any>(param?: IFormComfirmParam<T>): ComponentType<React.PropsWithChildren<IFormComfirmProps<T>>> {\r\n class FormConfirm extends Component<React.PropsWithChildren<IFormComfirmProps<T>>, IFormComfirmState> {\r\n constructor(props: IFormComfirmProps<T>) {\r\n super(props)\r\n this.state = { loading: false }\r\n }\r\n\r\n render() {\r\n const content = this.props.children || (param?.content ? param?.content(this.props.data) : undefined)\r\n const title = this.props.title ?? param?.title ?? 'Are you sure?'\r\n return (\r\n <Box sx={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n {mapGlobalModalContext((context) => (\r\n <Card>\r\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\r\n <DialogContent sx={{ minWidth: '300px' }}>{content}</DialogContent>\r\n <DialogActions>\r\n <CustomButton disabled={this.state.loading} color={param?.colors?.no || 'inherit'} onClick={() => this.handleClickNo(context)}>\r\n No\r\n </CustomButton>\r\n <CustomButton color={param?.colors?.yes || 'error'} disabled={this.state.loading} onClick={() => this.handleClickYes(context)}>\r\n Yes\r\n </CustomButton>\r\n </DialogActions>\r\n </Card>\r\n ))}\r\n </Box>\r\n )\r\n }\r\n\r\n handleClickNo = (context: IGlobalModalContext) => {\r\n context.close()\r\n this.props.onCancel && this.props.onCancel()\r\n }\r\n\r\n handleClickYes = async (context: IGlobalModalContext) => {\r\n if (!this.props.onSubmit) return\r\n try {\r\n this.setState({ loading: true })\r\n await fetchDelay(() => this.props.onSubmit(this.props.data), 700)\r\n context.close()\r\n } catch (error) {\r\n console.log(error)\r\n } finally {\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n return FormConfirm\r\n}\r\nexport default CreateFormComfirm\r\n\r\nconst CustomButton = styled(Button)({\r\n textTransform: 'capitalize',\r\n fontWeight: 600,\r\n '&.MuiButton-colorInherit': {\r\n color: '#606060!important'\r\n }\r\n})\r\n"],"names":["CreateFormComfirm","param","FormConfirm","props","_this","_classCallCheck","_callSuper","_defineProperty","context","close","onCancel","_ref","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","n","onSubmit","a","p","setState","loading","fetchDelay","data","v","console","log","f","_x","apply","this","arguments","state","_inherits","Component","_createClass","key","value","_ref2","_this$props$title","_this2","content","children","undefined","title","_jsx","Box","sx","flex","display","alignItems","justifyContent","mapGlobalModalContext","_param$colors","_param$colors2","_jsxs","Card","DialogTitle","id","DialogContent","minWidth","DialogActions","CustomButton","disabled","color","colors","no","onClick","handleClickNo","yes","handleClickYes","styled","Button","textTransform","fontWeight"],"mappings":"qqBAyBA,IAAMA,EAAoB,SAAmBC,GAA4B,IACjEC,aACJ,SAAAA,EAAYC,GAA2B,IAAAC,EAEN,OAFMC,OAAAH,GACrCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA2BE,iBAAA,SAACI,GACfA,EAAQC,QACRL,EAAKD,MAAMO,UAAYN,EAAKD,MAAMO,cACnCH,EAAAH,EAAA,iBAAA,WAAA,IAAAO,EAAAC,EAAAC,IAAAC,GAEgB,SAAAC,EAAOP,GAA4B,IAAAQ,EAAA,OAAAH,IAAAI,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,GAC7Cf,EAAKD,MAAMiB,SAAQ,CAAAF,EAAAC,EAAA,EAAA,KAAA,CAAA,OAAAD,EAAAG,EAAA,GAAA,KAAA,EAEU,OAFVH,EAAAI,EAAA,EAEtBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAON,EAAAC,EAAA,EAC1BM,GAAW,WAAA,OAAMrB,EAAKD,MAAMiB,SAAShB,EAAKD,MAAMuB,KAAK,GAAE,KAAI,KAAA,EACjElB,EAAQC,QAAOS,EAAAC,EAAA,EAAA,MAAA,KAAA,EAAAD,EAAAI,EAAA,EAAAN,EAAAE,EAAAS,EAEfC,QAAQC,IAAGb,GAAO,KAAA,EAEe,OAFfE,EAAAI,EAAA,EAElBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAQN,EAAAY,EAAA,GAAA,KAAA,EAAA,OAAAZ,EAAAG,EAAA,GAAA,GAAAN,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,SAEpC,OAAA,SAAAgB,GAAA,OAAApB,EAAAqB,MAAAC,KAAAC,UAAA,CAAA,CAbA,IA7BC9B,EAAK+B,MAAQ,CAAEX,SAAS,GAAOpB,CACjC,CAAC,OAAAgC,EAAAlC,EAJuBmC,GAIvBC,EAAApC,EAAA,CAAA,CAAAqC,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,EAAAC,EAAAV,KACEW,EAAUX,KAAK9B,MAAM0C,WAAa5C,SAAAA,EAAO2C,QAAU3C,aAAK,EAALA,EAAO2C,QAAQX,KAAK9B,MAAMuB,WAAQoB,GACrFC,EAAwC,QAAnCN,EAAmB,QAAnBC,EAAGT,KAAK9B,MAAM4C,aAAK,IAAAL,EAAAA,EAAIzC,aAAK,EAALA,EAAO8C,aAAK,IAAAN,EAAAA,EAAI,gBAClD,OACEO,EAACC,EAAG,CAACC,GAAI,CAAEC,KAAM,EAAGC,QAAS,OAAQC,WAAY,SAAUC,eAAgB,UACxET,SAAAU,GAAsB,SAAC/C,GAAO,IAAAgD,EAAAC,EAAA,OAC7BC,EAACC,EACC,CAAAd,SAAA,CAAAG,EAACY,EAAW,CAACC,GAAG,qBAAoBhB,SAAEE,IACtCC,EAACc,EAAc,CAAAZ,GAAI,CAAEa,SAAU,kBAAYnB,IAC3Cc,EAACM,EAAa,CAAAnB,SAAA,CACZG,EAACiB,GAAaC,SAAUvB,EAAKR,MAAMX,QAAS2C,OAAOlE,iBAAKuD,EAALvD,EAAOmE,cAAM,IAAAZ,OAAA,EAAbA,EAAea,KAAM,UAAWC,QAAS,WAAF,OAAQ3B,EAAK4B,cAAc/D,EAAQ,EAAAqC,SAAA,OAG7HG,EAACiB,EAAY,CAACE,OAAOlE,iBAAKwD,EAALxD,EAAOmE,cAAM,IAAAX,OAAA,EAAbA,EAAee,MAAO,QAASN,SAAUvB,EAAKR,MAAMX,QAAS8C,QAAS,WAAF,OAAQ3B,EAAK8B,eAAejE,EAAQ,EAE9GqC,SAAA,aAGpB,KAGP,IAAC,IAoBH,OAAO3C,CACT,EAGM+D,EAAeS,EAAOC,EAAPD,CAAe,CAClCE,cAAe,aACfC,WAAY,IACZ,2BAA4B,CAC1BV,MAAO"}
@@ -1,2 +1,2 @@
1
- import{inherits as o,createClass as t,objectSpread2 as r,classCallCheck as n,callSuper as e,defineProperty as i,asyncToGenerator as l,regeneratorRuntime as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as u}from"react/jsx-runtime";import{Fragment as p,Component as d}from"react";import{Grid as c}from"@mui/material";import{cleanObject as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as m}from"../api-context/global-modal.js";import{ContentWrap as f,CreateFormBottomBar as g}from"./create.form-grid-layout.units.js";import b from"./create.input.js";import h from"./create.form-base.js";var y=function(y){var S=h(),x=g(),C=b({maxLength:250}),j=function(){function g(o){var t;return n(this,g),t=e(this,g,[o]),i(t,"renderFormFieldElement",(function(o){var n,e=t.props.data,l=null!==(n=o.inputElement)&&void 0!==n?n:C;return S.mapContext((function(n){var a,s,p={formData:n.modelState,data:e,onBlur:n.onBlur,messageErrors:n.messageErrors,name:o.key,label:o.label,placeholder:o.placeholder,disabled:!(null===(a=t.configMerged.inputDisabled)||void 0===a||!a[o.key])||void 0,defaultValue:null!==(s=null==e?void 0:e[o.key])&&void 0!==s?s:null==o?void 0:o.defaultValue,onObservedChange:function(o,t){return n.setModelState(i({},o,t))}};return u(l,r({},v(p)))}))})),i(t,"loading",(function(){return t.setState({loadding:!0})})),i(t,"unloading",(function(){return t.setState({loadding:!1})})),i(t,"onSubmit",function(){var o=l(a().mark((function o(r,n){var e,i,l,s,u,p,d,c;return a().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return s=t.props.slots,u=null!==(e=null!==(i=null===(l=t.props.slots)||void 0===l?void 0:l.submitMapping)&&void 0!==i?i:y.submitMapping)&&void 0!==e?e:t.submitMapping,p=u(r,t.props.data),o.prev=3,t.loading(),null===(d=t.abortController)||void 0===d||d.abort(),t.abortController=new AbortController,o.next=9,t.props.onSubmit(p,null===(c=t.abortController)||void 0===c?void 0:c.signal);case 9:null!=s&&s.closeState&&!1===s.closeState.Success||(n&&n(),t.props.onClose&&t.props.onClose()),o.next=16;break;case 12:o.prev=12,o.t0=o.catch(3),null!=s&&s.closeState&&!0===s.closeState.Fail&&(n&&n(),t.props.onClose&&t.props.onClose()),t.props.onError&&t.props.onError(o.t0);case 16:return o.prev=16,t.unloading(),o.finish(16);case 19:case"end":return o.stop()}}),o,null,[[3,12,16,19]])})));return function(t,r){return o.apply(this,arguments)}}()),i(t,"submitMapping",(function(o){return o})),i(t,"getSxProps",(function(){var o=t.state.loadding;return r(r({},t.props.sx),{},{opacity:o?.7:1,pointerEvents:o?"none":"auto"})})),t.state={loadding:!1},t}return o(g,d),t(g,[{key:"configMerged",get:function(){var o,t,r,n;return{inputVisibility:null!==(o=null===(t=this.props.slots)||void 0===t?void 0:t.inputVisibility)&&void 0!==o?o:y.inputVisibility,inputDisabled:null!==(r=null===(n=this.props.slots)||void 0===n?void 0:n.inputDisabled)&&void 0!==r?r:y.inputDisabled}}},{key:"render",value:function(){var o,t,n,e=this,i=this.props.slots,l=null!==(o=null!==(t=null==y?void 0:y.action)&&void 0!==t?t:null===(n=this.props.slots)||void 0===n?void 0:n.action)&&void 0!==o?o:x;return m((function(o){var t,n=o.close;return s(S.Form,{validate:y.validate,onSubmit:function(o){return e.onSubmit(o,n)},sx:e.getSxProps(),children:[s(f,r(r({},null===(t=e.props)||void 0===t||null===(t=t.slots)||void 0===t?void 0:t.contentProps),{},{children:[(null==i?void 0:i.contentBefore)&&(null==i?void 0:i.contentBefore),null==y?void 0:y.contentBefore,u(c,{container:!0,spacing:2,children:y.configs.map((function(o,t){var n,i=!(null===(n=e.configMerged.inputVisibility)||void 0===n||!n[o.key])||void 0;return u(p,i?{}:{children:u(c,r(r({item:!0,xs:12},o.reponsives),{},{children:e.renderFormFieldElement(o)}))},o.key.toString()+t)}))}),null==y?void 0:y.contentAfter,(null==i?void 0:i.contentAfter)&&(null==i?void 0:i.contentAfter)]})),S.mapContext((function(o){var t;return u(l,{data:e.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(t=e.props.slots)||void 0===t?void 0:t.actionBefore})}))]})}))}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return j};export{y as default};
1
+ import{inherits as o,createClass as t,objectSpread2 as r,classCallCheck as n,callSuper as e,defineProperty as i,asyncToGenerator as l,regenerator as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as u}from"react/jsx-runtime";import{Fragment as p,Component as d}from"react";import{Grid as c}from"@mui/material";import{cleanObject as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as m}from"../api-context/global-modal.js";import{ContentWrap as f,CreateFormBottomBar as g}from"./create.form-grid-layout.units.js";import b from"./create.input.js";import h from"./create.form-base.js";var y=function(y){var S=h(),C=g(),j=b({maxLength:250}),x=function(){function g(o){var t;return n(this,g),t=e(this,g,[o]),i(t,"renderFormFieldElement",(function(o){var n,e=t.props.data,l=null!==(n=o.inputElement)&&void 0!==n?n:j;return S.mapContext((function(n){var a,s,p={formData:n.modelState,data:e,onBlur:n.onBlur,messageErrors:n.messageErrors,name:o.key,label:o.label,placeholder:o.placeholder,disabled:!(null===(a=t.configMerged.inputDisabled)||void 0===a||!a[o.key])||void 0,defaultValue:null!==(s=null==e?void 0:e[o.key])&&void 0!==s?s:null==o?void 0:o.defaultValue,onObservedChange:function(o,t){return n.setModelState(i({},o,t))}};return u(l,r({},v(p)))}))})),i(t,"loading",(function(){return t.setState({loadding:!0})})),i(t,"unloading",(function(){return t.setState({loadding:!1})})),i(t,"onSubmit",function(){var o=l(a().m((function o(r,n){var e,i,l,s,u,p,d,c,v;return a().w((function(o){for(;;)switch(o.n){case 0:return s=t.props.slots,u=null!==(e=null!==(i=null===(l=t.props.slots)||void 0===l?void 0:l.submitMapping)&&void 0!==i?i:y.submitMapping)&&void 0!==e?e:t.submitMapping,p=u(r,t.props.data),o.p=1,t.loading(),null===(d=t.abortController)||void 0===d||d.abort(),t.abortController=new AbortController,o.n=2,t.props.onSubmit(p,null===(c=t.abortController)||void 0===c?void 0:c.signal);case 2:null!=s&&s.closeState&&!1===s.closeState.Success||(n&&n(),t.props.onClose&&t.props.onClose()),o.n=4;break;case 3:o.p=3,v=o.v,null!=s&&s.closeState&&!0===s.closeState.Fail&&(n&&n(),t.props.onClose&&t.props.onClose()),t.props.onError&&t.props.onError(v);case 4:return o.p=4,t.unloading(),o.f(4);case 5:return o.a(2)}}),o,null,[[1,3,4,5]])})));return function(t,r){return o.apply(this,arguments)}}()),i(t,"submitMapping",(function(o){return o})),i(t,"getSxProps",(function(){var o=t.state.loadding;return r(r({},t.props.sx),{},{opacity:o?.7:1,pointerEvents:o?"none":"auto"})})),t.state={loadding:!1},t}return o(g,d),t(g,[{key:"configMerged",get:function(){var o,t,r,n;return{inputVisibility:null!==(o=null===(t=this.props.slots)||void 0===t?void 0:t.inputVisibility)&&void 0!==o?o:y.inputVisibility,inputDisabled:null!==(r=null===(n=this.props.slots)||void 0===n?void 0:n.inputDisabled)&&void 0!==r?r:y.inputDisabled}}},{key:"render",value:function(){var o,t,n,e=this,i=this.props.slots,l=null!==(o=null!==(t=null==y?void 0:y.action)&&void 0!==t?t:null===(n=this.props.slots)||void 0===n?void 0:n.action)&&void 0!==o?o:C;return m((function(o){var t,n=o.close;return s(S.Form,{validate:y.validate,onSubmit:function(o){return e.onSubmit(o,n)},sx:e.getSxProps(),children:[s(f,r(r({},null===(t=e.props)||void 0===t||null===(t=t.slots)||void 0===t?void 0:t.contentProps),{},{children:[(null==i?void 0:i.contentBefore)&&(null==i?void 0:i.contentBefore),null==y?void 0:y.contentBefore,u(c,{container:!0,spacing:2,children:y.configs.map((function(o,t){var n,i=!(null===(n=e.configMerged.inputVisibility)||void 0===n||!n[o.key])||void 0;return u(p,i?{}:{children:u(c,r(r({item:!0,xs:12},o.reponsives),{},{children:e.renderFormFieldElement(o)}))},o.key.toString()+t)}))}),null==y?void 0:y.contentAfter,(null==i?void 0:i.contentAfter)&&(null==i?void 0:i.contentAfter)]})),S.mapContext((function(o){var t;return u(l,{data:e.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(t=e.props.slots)||void 0===t?void 0:t.actionBefore})}))]})}))}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return x};export{y as default};
2
2
  //# sourceMappingURL=create.form-grid-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-grid-layout.js","sources":["../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport { cleanObject } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator from './validator'\r\nimport CreateInput from './create.input'\r\nimport CreateFormBase from './create.form-base'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n reponsives?: RegularBreakpoints\r\n defaultValue?: any\r\n inputElement?: React.ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type SubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutSlots<T> {\r\n action?: React.ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n inputVisibility?: Partial<Record<keyof T, boolean>>\r\n // inputVisibilityGetter?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n inputDisabled?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n submitMapping?: SubmitMappingEvent<T>\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n onClose?: () => void\r\n sx?: SxProps<Theme>\r\n slots?: IFormGridLayoutSlots<T>\r\n}\r\n\r\nexport interface IFormGridLayoutState {\r\n loadding?: boolean\r\n}\r\n\r\nconst CreateFormGridLayout = function <T>(params: IFormGridLayoutParams<T>): ComponentType<IFormGridLayoutProps<T>> {\r\n const FormBaseInstance = CreateFormBase<T>()\r\n const BottomBarInstance = CreateFormBottomBar<T>()\r\n const InputBaseInstance = CreateInput<T>({ maxLength: 250 })\r\n\r\n class FormGridLayout extends Component<IFormGridLayoutProps<T>, IFormGridLayoutState> {\r\n private abortController?: AbortController\r\n constructor(props: IFormGridLayoutProps<T>) {\r\n super(props)\r\n this.state = { loadding: false }\r\n }\r\n\r\n get configMerged() {\r\n return {\r\n inputVisibility: this.props.slots?.inputVisibility ?? params.inputVisibility,\r\n inputDisabled: this.props.slots?.inputDisabled ?? params.inputDisabled\r\n }\r\n }\r\n\r\n render() {\r\n const { slots } = this.props\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form validate={params.validate} onSubmit={(v) => this.onSubmit(v, close)} sx={this.getSxProps()}>\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const visibility: boolean | undefined = this.configMerged.inputVisibility?.[config.key] ? true : undefined\r\n if (visibility) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.reponsives}>\r\n {this.renderFormFieldElement(config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\r\n {params?.contentAfter}\r\n {slots?.contentAfter && slots?.contentAfter}\r\n </ContentWrap>\r\n {FormBaseInstance.mapContext((context) => (\r\n <BottomBar data={this.props.data} onBlur={context.onBlur} messageErrors={context.messageErrors} before={this.props.slots?.actionBefore} />\r\n ))}\r\n </FormBaseInstance.Form>\r\n ))\r\n }\r\n\r\n renderFormFieldElement = (config: IFormGridLayoutConfig<T>) => {\r\n const { data } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n return FormBaseInstance.mapContext((context) => {\r\n const obj: IFormInputBase<T, any> = {\r\n formData: context.modelState,\r\n data,\r\n onBlur: context.onBlur,\r\n messageErrors: context.messageErrors,\r\n name: config.key,\r\n label: config.label,\r\n placeholder: config.placeholder,\r\n disabled: this.configMerged.inputDisabled?.[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n onObservedChange: (name, value) => context.setModelState({ [name]: value } as Pick<T, keyof T>)\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n })\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.submitMapping ?? params.submitMapping ?? this.submitMapping\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController?.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n submitMapping: SubmitMappingEvent<T> = (value) => value\r\n\r\n getSxProps = (): SxProps<Theme> => {\r\n const isLoading = this.state.loadding\r\n return { ...this.props.sx, opacity: isLoading ? 0.7 : 1, pointerEvents: isLoading ? 'none' : 'auto' }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","CreateFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","CreateInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","config","_config$inputElement","data","ElementComponent","inputElement","mapContext","context","_this$configMerged$in","_data$config$key","obj","formData","modelState","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","inputDisabled","undefined","defaultValue","onObservedChange","value","setModelState","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","close","_ref2","_this$props$slots$sub","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","wrap","_context","prev","next","submitMapping","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","t0","Fail","onError","unloading","finish","stop","_x","_x2","apply","this","arguments","isLoading","state","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$inp","_this$props$slots2","_this$props$slots$inp2","_this$props$slots3","inputVisibility","_ref3","_params$action","_this$props$slots4","_this2","BottomBar","action","mapGlobalModalContext","_ref4","_this2$props","_jsxs","Form","validate","v","getSxProps","children","ContentWrap","contentProps","contentBefore","Grid","container","spacing","configs","map","index","_this2$configMerged$i","visibility","Fragment","item","xs","reponsives","renderFormFieldElement","toString","contentAfter","_this2$props$slots","before","actionBefore","_this$abortController3"],"mappings":"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"}
1
+ {"version":3,"file":"create.form-grid-layout.js","sources":["../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport { cleanObject } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator from './validator'\r\nimport CreateInput from './create.input'\r\nimport CreateFormBase from './create.form-base'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n reponsives?: RegularBreakpoints\r\n defaultValue?: any\r\n inputElement?: React.ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type SubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutSlots<T> {\r\n action?: React.ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n inputVisibility?: Partial<Record<keyof T, boolean>>\r\n // inputVisibilityGetter?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n inputDisabled?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n submitMapping?: SubmitMappingEvent<T>\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n onClose?: () => void\r\n sx?: SxProps<Theme>\r\n slots?: IFormGridLayoutSlots<T>\r\n}\r\n\r\nexport interface IFormGridLayoutState {\r\n loadding?: boolean\r\n}\r\n\r\nconst CreateFormGridLayout = function <T>(params: IFormGridLayoutParams<T>): ComponentType<IFormGridLayoutProps<T>> {\r\n const FormBaseInstance = CreateFormBase<T>()\r\n const BottomBarInstance = CreateFormBottomBar<T>()\r\n const InputBaseInstance = CreateInput<T>({ maxLength: 250 })\r\n\r\n class FormGridLayout extends Component<IFormGridLayoutProps<T>, IFormGridLayoutState> {\r\n private abortController?: AbortController\r\n constructor(props: IFormGridLayoutProps<T>) {\r\n super(props)\r\n this.state = { loadding: false }\r\n }\r\n\r\n get configMerged() {\r\n return {\r\n inputVisibility: this.props.slots?.inputVisibility ?? params.inputVisibility,\r\n inputDisabled: this.props.slots?.inputDisabled ?? params.inputDisabled\r\n }\r\n }\r\n\r\n render() {\r\n const { slots } = this.props\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form validate={params.validate} onSubmit={(v) => this.onSubmit(v, close)} sx={this.getSxProps()}>\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const visibility: boolean | undefined = this.configMerged.inputVisibility?.[config.key] ? true : undefined\r\n if (visibility) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.reponsives}>\r\n {this.renderFormFieldElement(config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\r\n {params?.contentAfter}\r\n {slots?.contentAfter && slots?.contentAfter}\r\n </ContentWrap>\r\n {FormBaseInstance.mapContext((context) => (\r\n <BottomBar data={this.props.data} onBlur={context.onBlur} messageErrors={context.messageErrors} before={this.props.slots?.actionBefore} />\r\n ))}\r\n </FormBaseInstance.Form>\r\n ))\r\n }\r\n\r\n renderFormFieldElement = (config: IFormGridLayoutConfig<T>) => {\r\n const { data } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n return FormBaseInstance.mapContext((context) => {\r\n const obj: IFormInputBase<T, any> = {\r\n formData: context.modelState,\r\n data,\r\n onBlur: context.onBlur,\r\n messageErrors: context.messageErrors,\r\n name: config.key,\r\n label: config.label,\r\n placeholder: config.placeholder,\r\n disabled: this.configMerged.inputDisabled?.[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n onObservedChange: (name, value) => context.setModelState({ [name]: value } as Pick<T, keyof T>)\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n })\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.submitMapping ?? params.submitMapping ?? this.submitMapping\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController?.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n submitMapping: SubmitMappingEvent<T> = (value) => value\r\n\r\n getSxProps = (): SxProps<Theme> => {\r\n const isLoading = this.state.loadding\r\n return { ...this.props.sx, opacity: isLoading ? 0.7 : 1, pointerEvents: isLoading ? 'none' : 'auto' }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","CreateFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","CreateInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","config","_config$inputElement","data","ElementComponent","inputElement","mapContext","context","_this$configMerged$in","_data$config$key","obj","formData","modelState","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","inputDisabled","undefined","defaultValue","onObservedChange","value","setModelState","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","close","_ref2","_this$props$slots$sub","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","n","submitMapping","p","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","isLoading","state","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$inp","_this$props$slots2","_this$props$slots$inp2","_this$props$slots3","inputVisibility","_ref3","_params$action","_this$props$slots4","_this2","BottomBar","action","mapGlobalModalContext","_ref4","_this2$props","_jsxs","Form","validate","getSxProps","children","ContentWrap","contentProps","contentBefore","Grid","container","spacing","configs","map","index","_this2$configMerged$i","visibility","Fragment","item","xs","reponsives","renderFormFieldElement","toString","contentAfter","_this2$props$slots","before","actionBefore","_this$abortController3"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as e,inherits as r,createClass as n,classCallCheck as t,callSuper as o,defineProperty as i,asyncToGenerator as a,regeneratorRuntime as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as u}from"react/jsx-runtime";import{Component as p}from"react";import{styled as d,Typography as g,Box as f,TextField as m}from"@mui/material";import c from"@mui/icons-material/Download";import{getErrorMessage as h}from"./helpers.js";import{tryParseCsvFileToArray as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";function C(d){var C=function(){function C(r){var n;return t(this,C),n=o(this,C,[r]),i(n,"mergeConfigsCache",{name:"",onBlur:function(){},messageErrors:{}}),i(n,"refInput",null),i(n,"refTextFiled",null),i(n,"getTextFieldProps",(function(){var r=n.props.label,t=h(n.mergeConfigs.messageErrors,n.mergeConfigs.name);return e({label:r,error:t.error,helperText:t.message,type:"file",variant:"outlined",fullWidth:!0,onChange:n.handleChange,inputProps:{accept:"text/csv"},InputLabelProps:{shrink:n.mergeConfigs.labelShrink}},n.mergeConfigs.textFieldProps)})),i(n,"upgradeMergeConfigs",(function(e){var r,n,t,o,i,a,l,s,u=e.name,p=e.label,g=e.onBlur,f=e.messageErrors;return{textFieldProps:Object.assign({},null==d?void 0:d.textFieldProps,null===(r=e.slots)||void 0===r?void 0:r.textFieldProps),wrapProps:Object.assign({},null==d?void 0:d.wrapProps,null===(n=e.slots)||void 0===n?void 0:n.wrapProps),name:u,onBlur:g||function(){},messageErrors:f||{},downloadSampleUrl:null!==(t=null===(o=e.slots)||void 0===o?void 0:o.downloadSampleUrl)&&void 0!==t?t:null==d?void 0:d.downloadSampleUrl,instructionalText:null!==(i=null===(a=e.slots)||void 0===a?void 0:a.instructionalText)&&void 0!==i?i:null==d?void 0:d.instructionalText,labelShrink:!1!==(null!==(l=null===(s=e.slots)||void 0===s?void 0:s.labelShrink)&&void 0!==l?l:null==d?void 0:d.labelShrink)&&!!p}})),i(n,"handleChange",function(){var e=a(l().mark((function e(r){var t,o,i;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=null===(t=r.target.files)||void 0===t?void 0:t[0]){e.next=3;break}return e.abrupt("return");case 3:return e.prev=3,e.next=6,v(o);case 6:i=e.sent,n.refInput&&(n.refInput.value=JSON.stringify(i)),n.setState({parsedData:i},(function(){n.props.onChange&&n.props.onChange(i),n.mergeConfigs.onBlur(n.mergeConfigs.name)})),e.next=15;break;case 11:e.prev=11,e.t0=e.catch(3),console.error("Error parsing CSV:",e.t0),n.mergeConfigs.onBlur(n.mergeConfigs.name);case 15:case"end":return e.stop()}}),e,null,[[3,11]])})));return function(r){return e.apply(this,arguments)}}()),n.mergeConfigsCache=n.upgradeMergeConfigs(r),n.state={parsedData:[]},n}return r(C,p),n(C,[{key:"mergeConfigs",get:function(){return this.mergeConfigsCache}},{key:"inputValue",get:function(){return this.state.parsedData.length>0?JSON.stringify(this.state.parsedData):""}},{key:"shouldComponentUpdate",value:function(e){return e!==this.props&&(this.mergeConfigsCache=this.upgradeMergeConfigs(e)),!0}},{key:"render",value:function(){var r,n,t=this;return u(f,e(e({},this.mergeConfigs.wrapProps),{},{children:[this.mergeConfigs.downloadSampleUrl&&u(f,{sx:{display:"flex",alignItems:"center",mb:"10px"},children:[s(g,{variant:"subtitle2",component:"span",children:null!==(r=this.mergeConfigs.instructionalText)&&void 0!==r?r:"Metadata file, please fill out the form we provide."}),u(x,{href:this.mergeConfigs.downloadSampleUrl,children:[s("span",{children:" Download sample"}),s(c,{fontSize:"small"})]})]}),s("input",{hidden:!0,name:null===(n=this.props.name)||void 0===n?void 0:n.toString(),type:"text",ref:function(e){return t.refInput=e},defaultValue:""}),s(m,e(e({},this.getTextFieldProps()),{},{inputRef:function(e){return t.refTextFiled=e}}))]}))}}])}();return C}var x=d((function(r){return s(g,e({variant:"subtitle2",component:"a",target:"_blank",download:!0},r))}))({display:"flex",alignItems:"center",color:"var(--color-blue)",cursor:"pointer",fontWeight:600,marginLeft:"6px",gap:"4px","&:hover":{textDecoration:"underline"}});export{C as createInputFileCsvLocalParser};
1
+ import{objectSpread2 as e,inherits as r,createClass as n,classCallCheck as t,callSuper as o,defineProperty as i,asyncToGenerator as a,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as u}from"react/jsx-runtime";import{Component as p}from"react";import{styled as d,Typography as g,Box as f,TextField as m}from"@mui/material";import c from"@mui/icons-material/Download";import{getErrorMessage as h}from"./helpers.js";import{tryParseCsvFileToArray as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";function C(d){var C=function(){function C(r){var n;return t(this,C),n=o(this,C,[r]),i(n,"mergeConfigsCache",{name:"",onBlur:function(){},messageErrors:{}}),i(n,"refInput",null),i(n,"refTextFiled",null),i(n,"getTextFieldProps",(function(){var r=n.props.label,t=h(n.mergeConfigs.messageErrors,n.mergeConfigs.name);return e({label:r,error:t.error,helperText:t.message,type:"file",variant:"outlined",fullWidth:!0,onChange:n.handleChange,inputProps:{accept:"text/csv"},InputLabelProps:{shrink:n.mergeConfigs.labelShrink}},n.mergeConfigs.textFieldProps)})),i(n,"upgradeMergeConfigs",(function(e){var r,n,t,o,i,a,l,s,u=e.name,p=e.label,g=e.onBlur,f=e.messageErrors;return{textFieldProps:Object.assign({},null==d?void 0:d.textFieldProps,null===(r=e.slots)||void 0===r?void 0:r.textFieldProps),wrapProps:Object.assign({},null==d?void 0:d.wrapProps,null===(n=e.slots)||void 0===n?void 0:n.wrapProps),name:u,onBlur:g||function(){},messageErrors:f||{},downloadSampleUrl:null!==(t=null===(o=e.slots)||void 0===o?void 0:o.downloadSampleUrl)&&void 0!==t?t:null==d?void 0:d.downloadSampleUrl,instructionalText:null!==(i=null===(a=e.slots)||void 0===a?void 0:a.instructionalText)&&void 0!==i?i:null==d?void 0:d.instructionalText,labelShrink:!1!==(null!==(l=null===(s=e.slots)||void 0===s?void 0:s.labelShrink)&&void 0!==l?l:null==d?void 0:d.labelShrink)&&!!p}})),i(n,"handleChange",function(){var e=a(l().m((function e(r){var t,o,i,a;return l().w((function(e){for(;;)switch(e.n){case 0:if(o=null===(t=r.target.files)||void 0===t?void 0:t[0]){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v(o);case 2:i=e.v,n.refInput&&(n.refInput.value=JSON.stringify(i)),n.setState({parsedData:i},(function(){n.props.onChange&&n.props.onChange(i),n.mergeConfigs.onBlur(n.mergeConfigs.name)})),e.n=4;break;case 3:e.p=3,a=e.v,console.error("Error parsing CSV:",a),n.mergeConfigs.onBlur(n.mergeConfigs.name);case 4:return e.a(2)}}),e,null,[[1,3]])})));return function(r){return e.apply(this,arguments)}}()),n.mergeConfigsCache=n.upgradeMergeConfigs(r),n.state={parsedData:[]},n}return r(C,p),n(C,[{key:"mergeConfigs",get:function(){return this.mergeConfigsCache}},{key:"inputValue",get:function(){return this.state.parsedData.length>0?JSON.stringify(this.state.parsedData):""}},{key:"shouldComponentUpdate",value:function(e){return e!==this.props&&(this.mergeConfigsCache=this.upgradeMergeConfigs(e)),!0}},{key:"render",value:function(){var r,n,t=this;return u(f,e(e({},this.mergeConfigs.wrapProps),{},{children:[this.mergeConfigs.downloadSampleUrl&&u(f,{sx:{display:"flex",alignItems:"center",mb:"10px"},children:[s(g,{variant:"subtitle2",component:"span",children:null!==(r=this.mergeConfigs.instructionalText)&&void 0!==r?r:"Metadata file, please fill out the form we provide."}),u(x,{href:this.mergeConfigs.downloadSampleUrl,children:[s("span",{children:" Download sample"}),s(c,{fontSize:"small"})]})]}),s("input",{hidden:!0,name:null===(n=this.props.name)||void 0===n?void 0:n.toString(),type:"text",ref:function(e){return t.refInput=e},defaultValue:""}),s(m,e(e({},this.getTextFieldProps()),{},{inputRef:function(e){return t.refTextFiled=e}}))]}))}}])}();return C}var x=d((function(r){return s(g,e({variant:"subtitle2",component:"a",target:"_blank",download:!0},r))}))({display:"flex",alignItems:"center",color:"var(--color-blue)",cursor:"pointer",fontWeight:600,marginLeft:"6px",gap:"4px","&:hover":{textDecoration:"underline"}});export{C as createInputFileCsvLocalParser};
2
2
  //# sourceMappingURL=create.input-file.csv-local-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.input-file.csv-local-parser.js","sources":["../../src/form/create.input-file.csv-local-parser.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled, TextField, TextFieldProps, Typography, TypographyProps } from '@mui/material'\r\nimport DownloadIcon from '@mui/icons-material/Download'\r\nimport { getErrorMessage } from './helpers'\r\nimport { tryParseCsvFileToArray } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\n\r\nexport interface IInputFileCsvLocalParserSlots {\r\n /**\r\n * The URL of the sample CSV file that users can download.\r\n * If provided, a \"Download sample\" link will be displayed.\r\n * Example: '/sample.csv' or 'https://example.com/sample.csv'\r\n */\r\n downloadSampleUrl?: string\r\n /**\r\n * Instructional text displayed alongside the download link or file input.\r\n * Useful for guiding users on how to use or fill out the CSV file.\r\n */\r\n instructionalText?: string\r\n /**\r\n * Props to customize the TextField used for uploading the CSV file.\r\n * Allows customization of appearance and behavior (e.g., placeholder, onChange, disabled).\r\n */\r\n textFieldProps?: TextFieldProps\r\n /**\r\n * Props passed to the wrapper element (typically a Box).\r\n * Useful for customizing layout styles such as margin, padding, or display.\r\n */\r\n wrapProps?: BoxProps\r\n /**\r\n * Whether the label should shrink when displayed.\r\n * Defaults to `true` if a label is present to prevent overlap.\r\n * @default true\r\n */\r\n labelShrink?: boolean\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserParams extends IInputFileCsvLocalParserSlots {}\r\n\r\nexport interface IInputFileCsvLocalParserProps<T, C> extends IFormInputBase<T, IInputFileCsvLocalParserSlots> {\r\n onChange?: (value: C[]) => void\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserState<C> {\r\n parsedData: C[]\r\n}\r\n\r\ntype IPickConfigs<T> = Required<Pick<IFormBase<T>, 'onBlur' | 'messageErrors'>>\r\n\r\ninterface IMergeConfigs<T> extends IPickConfigs<T>, IInputFileCsvLocalParserSlots {\r\n name: keyof T\r\n}\r\n\r\n/**\r\n * Creates a React component that renders a file input specifically for CSV files,\r\n * parses the selected file locally into a structured array, and integrates with a form system.\r\n *\r\n * @template T - The main data model used in the form. Represents the shape of the overall form data.\r\n * @template C - The type of each individual item parsed from the CSV file.\r\n *\r\n * @param params - Optional slot parameters to customize the appearance or behavior of the text field.\r\n * @returns A React component configured for uploading and parsing local CSV files.\r\n */\r\nexport function createInputFileCsvLocalParser<T, C>(params?: IInputFileCsvLocalParserParams): ComponentType<IInputFileCsvLocalParserProps<T, C>> {\r\n class InputFileCsvLocalParser extends Component<IInputFileCsvLocalParserProps<T, C>, IInputFileCsvLocalParserState<C>> {\r\n private mergeConfigsCache: IMergeConfigs<T> = { name: '' as keyof T, onBlur: () => {}, messageErrors: {} }\r\n constructor(props: IInputFileCsvLocalParserProps<T, C>) {\r\n super(props)\r\n this.mergeConfigsCache = this.upgradeMergeConfigs(props)\r\n this.state = { parsedData: [] }\r\n }\r\n\r\n get mergeConfigs(): IMergeConfigs<T> {\r\n return this.mergeConfigsCache\r\n }\r\n\r\n get inputValue() {\r\n return this.state.parsedData.length > 0 ? JSON.stringify(this.state.parsedData) : ''\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputFileCsvLocalParserProps<T, C>>): boolean {\r\n if (nextProps !== this.props) this.mergeConfigsCache = this.upgradeMergeConfigs(nextProps)\r\n return true\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refTextFiled: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <Box {...this.mergeConfigs.wrapProps}>\r\n {this.mergeConfigs.downloadSampleUrl && (\r\n <Box sx={{ display: 'flex', alignItems: 'center', mb: '10px' }}>\r\n <Typography variant='subtitle2' component='span'>\r\n {this.mergeConfigs.instructionalText ?? 'Metadata file, please fill out the form we provide.'}\r\n </Typography>\r\n <DownloadButton href={this.mergeConfigs.downloadSampleUrl}>\r\n <span> Download sample</span>\r\n <DownloadIcon fontSize='small' />\r\n </DownloadButton>\r\n </Box>\r\n )}\r\n <input hidden name={this.props.name?.toString()} type='text' ref={(ref) => (this.refInput = ref)} defaultValue='' />\r\n <TextField {...this.getTextFieldProps()} inputRef={(ref) => (this.refTextFiled = ref)} />\r\n </Box>\r\n )\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { label } = this.props\r\n const eMessage = getErrorMessage(this.mergeConfigs.messageErrors, this.mergeConfigs.name)\r\n const mergedProps: TextFieldProps = {\r\n label,\r\n error: eMessage.error,\r\n helperText: eMessage.message,\r\n type: 'file',\r\n variant: 'outlined',\r\n fullWidth: true,\r\n onChange: this.handleChange,\r\n inputProps: { accept: 'text/csv' },\r\n InputLabelProps: { shrink: this.mergeConfigs.labelShrink },\r\n ...this.mergeConfigs.textFieldProps\r\n }\r\n return mergedProps\r\n }\r\n\r\n upgradeMergeConfigs = (currentProps: IInputFileCsvLocalParserProps<T, C>): IMergeConfigs<T> => {\r\n const { name, label, onBlur, messageErrors } = currentProps\r\n return {\r\n textFieldProps: Object.assign({}, params?.textFieldProps, currentProps.slots?.textFieldProps),\r\n wrapProps: Object.assign({}, params?.wrapProps, currentProps.slots?.wrapProps),\r\n name: name as keyof T,\r\n onBlur: onBlur || (() => {}),\r\n messageErrors: messageErrors || {},\r\n downloadSampleUrl: currentProps.slots?.downloadSampleUrl ?? params?.downloadSampleUrl,\r\n instructionalText: currentProps.slots?.instructionalText ?? params?.instructionalText,\r\n labelShrink: (currentProps.slots?.labelShrink ?? params?.labelShrink) !== false && !!label\r\n }\r\n }\r\n\r\n handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0]\r\n if (!file) return\r\n try {\r\n const result = await tryParseCsvFileToArray(file)\r\n if (this.refInput) this.refInput.value = JSON.stringify(result)\r\n this.setState({ parsedData: result as C[] }, () => {\r\n this.props.onChange && this.props.onChange(result as C[])\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n })\r\n } catch (err) {\r\n console.error('Error parsing CSV:', err)\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n }\r\n }\r\n }\r\n return InputFileCsvLocalParser\r\n}\r\n\r\nconst DownloadButton = styled((p: TypographyProps & { href: string }) => (\r\n <Typography variant='subtitle2' component='a' target='_blank' download {...p} />\r\n))({\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'var(--color-blue)',\r\n cursor: 'pointer',\r\n fontWeight: 600,\r\n marginLeft: '6px',\r\n gap: '4px',\r\n '&:hover': {\r\n textDecoration: 'underline'\r\n }\r\n})\r\n"],"names":["createInputFileCsvLocalParser","params","InputFileCsvLocalParser","props","_this","_classCallCheck","_callSuper","_defineProperty","name","onBlur","messageErrors","label","eMessage","getErrorMessage","mergeConfigs","_objectSpread","error","helperText","message","type","variant","fullWidth","onChange","handleChange","inputProps","accept","InputLabelProps","shrink","labelShrink","textFieldProps","currentProps","_currentProps$slots","_currentProps$slots2","_currentProps$slots$d","_currentProps$slots3","_currentProps$slots$i","_currentProps$slots4","_currentProps$slots$l","_currentProps$slots5","Object","assign","slots","wrapProps","downloadSampleUrl","instructionalText","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","e","_e$target$files","file","result","wrap","_context","prev","next","target","files","abrupt","tryParseCsvFileToArray","sent","refInput","value","JSON","stringify","setState","parsedData","t0","console","stop","_x","apply","this","arguments","mergeConfigsCache","upgradeMergeConfigs","state","_inherits","Component","_createClass","key","get","length","nextProps","_this$mergeConfigs$in","_this$props$name","_this2","_jsxs","Box","children","sx","display","alignItems","mb","_jsx","Typography","component","DownloadButton","href","DownloadIcon","fontSize","hidden","toString","ref","defaultValue","TextField","getTextFieldProps","inputRef","refTextFiled","styled","p","download","color","cursor","fontWeight","marginLeft","gap","textDecoration"],"mappings":"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"}
1
+ {"version":3,"file":"create.input-file.csv-local-parser.js","sources":["../../src/form/create.input-file.csv-local-parser.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled, TextField, TextFieldProps, Typography, TypographyProps } from '@mui/material'\r\nimport DownloadIcon from '@mui/icons-material/Download'\r\nimport { getErrorMessage } from './helpers'\r\nimport { tryParseCsvFileToArray } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\n\r\nexport interface IInputFileCsvLocalParserSlots {\r\n /**\r\n * The URL of the sample CSV file that users can download.\r\n * If provided, a \"Download sample\" link will be displayed.\r\n * Example: '/sample.csv' or 'https://example.com/sample.csv'\r\n */\r\n downloadSampleUrl?: string\r\n /**\r\n * Instructional text displayed alongside the download link or file input.\r\n * Useful for guiding users on how to use or fill out the CSV file.\r\n */\r\n instructionalText?: string\r\n /**\r\n * Props to customize the TextField used for uploading the CSV file.\r\n * Allows customization of appearance and behavior (e.g., placeholder, onChange, disabled).\r\n */\r\n textFieldProps?: TextFieldProps\r\n /**\r\n * Props passed to the wrapper element (typically a Box).\r\n * Useful for customizing layout styles such as margin, padding, or display.\r\n */\r\n wrapProps?: BoxProps\r\n /**\r\n * Whether the label should shrink when displayed.\r\n * Defaults to `true` if a label is present to prevent overlap.\r\n * @default true\r\n */\r\n labelShrink?: boolean\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserParams extends IInputFileCsvLocalParserSlots {}\r\n\r\nexport interface IInputFileCsvLocalParserProps<T, C> extends IFormInputBase<T, IInputFileCsvLocalParserSlots> {\r\n onChange?: (value: C[]) => void\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserState<C> {\r\n parsedData: C[]\r\n}\r\n\r\ntype IPickConfigs<T> = Required<Pick<IFormBase<T>, 'onBlur' | 'messageErrors'>>\r\n\r\ninterface IMergeConfigs<T> extends IPickConfigs<T>, IInputFileCsvLocalParserSlots {\r\n name: keyof T\r\n}\r\n\r\n/**\r\n * Creates a React component that renders a file input specifically for CSV files,\r\n * parses the selected file locally into a structured array, and integrates with a form system.\r\n *\r\n * @template T - The main data model used in the form. Represents the shape of the overall form data.\r\n * @template C - The type of each individual item parsed from the CSV file.\r\n *\r\n * @param params - Optional slot parameters to customize the appearance or behavior of the text field.\r\n * @returns A React component configured for uploading and parsing local CSV files.\r\n */\r\nexport function createInputFileCsvLocalParser<T, C>(params?: IInputFileCsvLocalParserParams): ComponentType<IInputFileCsvLocalParserProps<T, C>> {\r\n class InputFileCsvLocalParser extends Component<IInputFileCsvLocalParserProps<T, C>, IInputFileCsvLocalParserState<C>> {\r\n private mergeConfigsCache: IMergeConfigs<T> = { name: '' as keyof T, onBlur: () => {}, messageErrors: {} }\r\n constructor(props: IInputFileCsvLocalParserProps<T, C>) {\r\n super(props)\r\n this.mergeConfigsCache = this.upgradeMergeConfigs(props)\r\n this.state = { parsedData: [] }\r\n }\r\n\r\n get mergeConfigs(): IMergeConfigs<T> {\r\n return this.mergeConfigsCache\r\n }\r\n\r\n get inputValue() {\r\n return this.state.parsedData.length > 0 ? JSON.stringify(this.state.parsedData) : ''\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputFileCsvLocalParserProps<T, C>>): boolean {\r\n if (nextProps !== this.props) this.mergeConfigsCache = this.upgradeMergeConfigs(nextProps)\r\n return true\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refTextFiled: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <Box {...this.mergeConfigs.wrapProps}>\r\n {this.mergeConfigs.downloadSampleUrl && (\r\n <Box sx={{ display: 'flex', alignItems: 'center', mb: '10px' }}>\r\n <Typography variant='subtitle2' component='span'>\r\n {this.mergeConfigs.instructionalText ?? 'Metadata file, please fill out the form we provide.'}\r\n </Typography>\r\n <DownloadButton href={this.mergeConfigs.downloadSampleUrl}>\r\n <span> Download sample</span>\r\n <DownloadIcon fontSize='small' />\r\n </DownloadButton>\r\n </Box>\r\n )}\r\n <input hidden name={this.props.name?.toString()} type='text' ref={(ref) => (this.refInput = ref)} defaultValue='' />\r\n <TextField {...this.getTextFieldProps()} inputRef={(ref) => (this.refTextFiled = ref)} />\r\n </Box>\r\n )\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { label } = this.props\r\n const eMessage = getErrorMessage(this.mergeConfigs.messageErrors, this.mergeConfigs.name)\r\n const mergedProps: TextFieldProps = {\r\n label,\r\n error: eMessage.error,\r\n helperText: eMessage.message,\r\n type: 'file',\r\n variant: 'outlined',\r\n fullWidth: true,\r\n onChange: this.handleChange,\r\n inputProps: { accept: 'text/csv' },\r\n InputLabelProps: { shrink: this.mergeConfigs.labelShrink },\r\n ...this.mergeConfigs.textFieldProps\r\n }\r\n return mergedProps\r\n }\r\n\r\n upgradeMergeConfigs = (currentProps: IInputFileCsvLocalParserProps<T, C>): IMergeConfigs<T> => {\r\n const { name, label, onBlur, messageErrors } = currentProps\r\n return {\r\n textFieldProps: Object.assign({}, params?.textFieldProps, currentProps.slots?.textFieldProps),\r\n wrapProps: Object.assign({}, params?.wrapProps, currentProps.slots?.wrapProps),\r\n name: name as keyof T,\r\n onBlur: onBlur || (() => {}),\r\n messageErrors: messageErrors || {},\r\n downloadSampleUrl: currentProps.slots?.downloadSampleUrl ?? params?.downloadSampleUrl,\r\n instructionalText: currentProps.slots?.instructionalText ?? params?.instructionalText,\r\n labelShrink: (currentProps.slots?.labelShrink ?? params?.labelShrink) !== false && !!label\r\n }\r\n }\r\n\r\n handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0]\r\n if (!file) return\r\n try {\r\n const result = await tryParseCsvFileToArray(file)\r\n if (this.refInput) this.refInput.value = JSON.stringify(result)\r\n this.setState({ parsedData: result as C[] }, () => {\r\n this.props.onChange && this.props.onChange(result as C[])\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n })\r\n } catch (err) {\r\n console.error('Error parsing CSV:', err)\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n }\r\n }\r\n }\r\n return InputFileCsvLocalParser\r\n}\r\n\r\nconst DownloadButton = styled((p: TypographyProps & { href: string }) => (\r\n <Typography variant='subtitle2' component='a' target='_blank' download {...p} />\r\n))({\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'var(--color-blue)',\r\n cursor: 'pointer',\r\n fontWeight: 600,\r\n marginLeft: '6px',\r\n gap: '4px',\r\n '&:hover': {\r\n textDecoration: 'underline'\r\n }\r\n})\r\n"],"names":["createInputFileCsvLocalParser","params","InputFileCsvLocalParser","props","_this","_classCallCheck","_callSuper","_defineProperty","name","onBlur","messageErrors","label","eMessage","getErrorMessage","mergeConfigs","_objectSpread","error","helperText","message","type","variant","fullWidth","onChange","handleChange","inputProps","accept","InputLabelProps","shrink","labelShrink","textFieldProps","currentProps","_currentProps$slots","_currentProps$slots2","_currentProps$slots$d","_currentProps$slots3","_currentProps$slots$i","_currentProps$slots4","_currentProps$slots$l","_currentProps$slots5","Object","assign","slots","wrapProps","downloadSampleUrl","instructionalText","_ref","_asyncToGenerator","_regenerator","m","_callee","e","_e$target$files","file","result","_t","w","_context","n","target","files","a","p","tryParseCsvFileToArray","v","refInput","value","JSON","stringify","setState","parsedData","console","_x","apply","this","arguments","mergeConfigsCache","upgradeMergeConfigs","state","_inherits","Component","_createClass","key","get","length","nextProps","_this$mergeConfigs$in","_this$props$name","_this2","_jsxs","Box","children","sx","display","alignItems","mb","_jsx","Typography","component","DownloadButton","href","DownloadIcon","fontSize","hidden","toString","ref","defaultValue","TextField","getTextFieldProps","inputRef","refTextFiled","styled","download","color","cursor","fontWeight","marginLeft","gap","textDecoration"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as e,createClass as t,objectSpread2 as r,classCallCheck as o,callSuper as a,defineProperty as i,objectWithoutProperties as n,asyncToGenerator as l,regeneratorRuntime as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as p,jsx as u,Fragment as d}from"react/jsx-runtime";import{Component as m}from"react";import{styled as c,Box as h,TextField as v,InputAdornment as g,IconButton as f,Collapse as b,CircularProgress as x}from"@mui/material";import S from"@mui/icons-material/ContentPaste";import{mergeObjects as j}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import{getErrorMessage as k}from"./helpers.js";import"../components/breadcrumbs.js";import"../components/buttons.js";import"clipboard-copy";import"@mui/icons-material/Done";import"@mui/icons-material/ContentCopy";import"../components/create.multi-select-dropdown.js";import y from"../components/image-with-fallback.js";import"../components/help-tooltip.js";import"../components/text-editor.js";var P=["srcGetter","element","alt","fallbackSrc","debounceDelay"],C=function(c){return function(){function x(e){var t,p;return o(this,x),p=a(this,x,[e]),i(p,"_cachedSlots",{}),i(p,"mapTextFieldProps",(function(){var e,t,o,a,i=k(p.props.messageErrors,p.props.name),n={fullWidth:!0,variant:"outlined",name:null===(e=p.props.name)||void 0===e?void 0:e.toString(),error:i.error,helperText:i.message,disabled:p.props.disabled,onBlur:function(){p.props.name&&p.props.onBlur&&p.props.onBlur(p.props.name)},label:p.getLabel(),placeholder:p.props.placeholder,InputLabelProps:p.state.value?{shrink:!0}:{},value:null!==(t=p.state.value)&&void 0!==t?t:"",onChange:p.handleChange};return!0===p.slots.pastenable&&(n.InputProps={endAdornment:u(g,{position:"end",children:u(f,{onClick:p.handlePaste,edge:"end",children:u(S,{})})})}),null!==(o=p.slots)&&void 0!==o&&o.maxLength&&(n.inputProps=r(r({},n.inputProps),{},{maxLength:p.slots.maxLength})),j({},n,null===(a=p.slots)||void 0===a?void 0:a.textFieldProps)})),i(p,"renderImageSide",(function(e){var t,o="left"===e?p.slots.imageLeft:p.slots.imageRight;if(!o)return u(d,{});var a=o.srcGetter,i=o.element,l=o.alt,s=void 0===l?"input-image":l,m=o.fallbackSrc,c=void 0===m?"":m,h=o.debounceDelay,v=void 0===h?700:h,g=n(o,P);if(i)return u(w,{children:u(i,{value:p.state.value,model:p.props.data})});var f=a?a(p.state.value,p.props.data):null!==(t=g.src)&&void 0!==t?t:p.state.value,x={src:f,alt:s,fallbackSrc:c,debounceDelay:v};return u(b,{sx:{mx:"10px"},in:!!f,unmountOnExit:!0,orientation:"horizontal",children:u(w,{children:u(y,r(r(r({},g),x),{},{loading:u(L,{})}))})})})),i(p,"mergeSlots",(function(e){var t=j({},c,e),o=t.imageLeft,a=t.imageRight;return null!=o&&o.mirror&&!a?(t.imageRight=r({},o),delete t.imageRight.mirror):null!=a&&a.mirror&&!o&&(t.imageLeft=r({},a),delete t.imageLeft.mirror),t})),i(p,"getLabel",(function(){var e,t,r;if(p.props.label)return null!==(e=p.slots)&&void 0!==e&&e.maxLength?"".concat(p.props.label," (").concat(null!==(t=null===(r=p.state.value)||void 0===r?void 0:r.length)&&void 0!==t?t:0,"/").concat(p.slots.maxLength,")"):p.props.label})),i(p,"handleChange",(function(e){p.setState({value:e.target.value})})),i(p,"handlePaste",l(s().mark((function e(){var t;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.clipboard.readText();case 3:t=e.sent,p.setState({value:t}),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),console.error("Error clipboard:",e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))),p._cachedSlots=null!==(t=p.mergeSlots(e.slots))&&void 0!==t?t:{},p.state={value:p.defaulValue},p}return e(x,m),t(x,[{key:"slots",get:function(){return this._cachedSlots}},{key:"defaulValue",get:function(){var e,t,r=this.props,o=r.data,a=r.name;return null!==(e=this.props.defaultValue)&&void 0!==e?e:o&&a?null===(t=o[a])||void 0===t?void 0:t.toString():void 0}},{key:"componentDidUpdate",value:function(e){e.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"shouldComponentUpdate",value:function(e){var t=this.props,r=t.name;t.slots;if(r){var o,a,i,n,l=null!==(o=null===(a=this.props.data)||void 0===a||null===(a=a[r])||void 0===a?void 0:a.toString())&&void 0!==o?o:"",s=null!==(i=null===(n=e.data)||void 0===n||null===(n=n[r])||void 0===n?void 0:n.toString())&&void 0!==i?i:"";if(l!==s)return this.setState({value:s}),!1}return e.slots,!0}},{key:"render",value:function(){var e;return p(h,{sx:{display:"flex",alignItems:"center"},children:[!!this.props.disabled&&u("input",{hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaulValue}),this.renderImageSide("left"),u(v,r({},this.mapTextFieldProps())),this.renderImageSide("right")]})}}])}()},L=function(){return u("div",{children:u(x,{size:24})})},w=c(h)({fontSize:"1rem",height:"var(--input-base-image-size, 54px)",width:"var(--input-base-image-size, 54px)",position:"relative",borderRadius:"8px",boxShadow:"rgba(0, 0, 0, 0.16) 0px 1px 4px",overflow:"hidden","& > img":{position:"absolute",top:0,left:0,backgroundRepeat:"no-repeat",height:"100%",width:"100%",backgroundSize:"contain"},"& > div":{position:"absolute",top:0,left:0,height:"100%",width:"100%",background:"#fafafa",zIndex:1,display:"flex",alignItems:"center",justifyContent:"center"}});export{C as default};
1
+ import{inherits as e,createClass as t,objectSpread2 as r,classCallCheck as o,callSuper as a,defineProperty as i,objectWithoutProperties as n,asyncToGenerator as l,regenerator as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as p,jsx as u,Fragment as d}from"react/jsx-runtime";import{Component as m}from"react";import{styled as c,Box as h,TextField as v,InputAdornment as g,IconButton as f,Collapse as b,CircularProgress as x}from"@mui/material";import S from"@mui/icons-material/ContentPaste";import{mergeObjects as j}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import{getErrorMessage as y}from"./helpers.js";import"../components/breadcrumbs.js";import"../components/buttons.js";import"clipboard-copy";import"@mui/icons-material/Done";import"@mui/icons-material/ContentCopy";import"../components/create.multi-select-dropdown.js";import k from"../components/image-with-fallback.js";import"../components/help-tooltip.js";import"../components/text-editor.js";var P=["srcGetter","element","alt","fallbackSrc","debounceDelay"],C=function(c){return function(){function x(e){var t,p;return o(this,x),p=a(this,x,[e]),i(p,"_cachedSlots",{}),i(p,"mapTextFieldProps",(function(){var e,t,o,a,i=y(p.props.messageErrors,p.props.name),n={fullWidth:!0,variant:"outlined",name:null===(e=p.props.name)||void 0===e?void 0:e.toString(),error:i.error,helperText:i.message,disabled:p.props.disabled,onBlur:function(){p.props.name&&p.props.onBlur&&p.props.onBlur(p.props.name)},label:p.getLabel(),placeholder:p.props.placeholder,InputLabelProps:p.state.value?{shrink:!0}:{},value:null!==(t=p.state.value)&&void 0!==t?t:"",onChange:p.handleChange};return!0===p.slots.pastenable&&(n.InputProps={endAdornment:u(g,{position:"end",children:u(f,{onClick:p.handlePaste,edge:"end",children:u(S,{})})})}),null!==(o=p.slots)&&void 0!==o&&o.maxLength&&(n.inputProps=r(r({},n.inputProps),{},{maxLength:p.slots.maxLength})),j({},n,null===(a=p.slots)||void 0===a?void 0:a.textFieldProps)})),i(p,"renderImageSide",(function(e){var t,o="left"===e?p.slots.imageLeft:p.slots.imageRight;if(!o)return u(d,{});var a=o.srcGetter,i=o.element,l=o.alt,s=void 0===l?"input-image":l,m=o.fallbackSrc,c=void 0===m?"":m,h=o.debounceDelay,v=void 0===h?700:h,g=n(o,P);if(i)return u(w,{children:u(i,{value:p.state.value,model:p.props.data})});var f=a?a(p.state.value,p.props.data):null!==(t=g.src)&&void 0!==t?t:p.state.value,x={src:f,alt:s,fallbackSrc:c,debounceDelay:v};return u(b,{sx:{mx:"10px"},in:!!f,unmountOnExit:!0,orientation:"horizontal",children:u(w,{children:u(k,r(r(r({},g),x),{},{loading:u(L,{})}))})})})),i(p,"mergeSlots",(function(e){var t=j({},c,e),o=t.imageLeft,a=t.imageRight;return null!=o&&o.mirror&&!a?(t.imageRight=r({},o),delete t.imageRight.mirror):null!=a&&a.mirror&&!o&&(t.imageLeft=r({},a),delete t.imageLeft.mirror),t})),i(p,"getLabel",(function(){var e,t,r;if(p.props.label)return null!==(e=p.slots)&&void 0!==e&&e.maxLength?"".concat(p.props.label," (").concat(null!==(t=null===(r=p.state.value)||void 0===r?void 0:r.length)&&void 0!==t?t:0,"/").concat(p.slots.maxLength,")"):p.props.label})),i(p,"handleChange",(function(e){p.setState({value:e.target.value})})),i(p,"handlePaste",l(s().m((function e(){var t,r;return s().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,navigator.clipboard.readText();case 1:t=e.v,p.setState({value:t}),e.n=3;break;case 2:e.p=2,r=e.v,console.error("Error clipboard:",r);case 3:return e.a(2)}}),e,null,[[0,2]])})))),p._cachedSlots=null!==(t=p.mergeSlots(e.slots))&&void 0!==t?t:{},p.state={value:p.defaulValue},p}return e(x,m),t(x,[{key:"slots",get:function(){return this._cachedSlots}},{key:"defaulValue",get:function(){var e,t,r=this.props,o=r.data,a=r.name;return null!==(e=this.props.defaultValue)&&void 0!==e?e:o&&a?null===(t=o[a])||void 0===t?void 0:t.toString():void 0}},{key:"componentDidUpdate",value:function(e){e.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"shouldComponentUpdate",value:function(e){var t=this.props,r=t.name;t.slots;if(r){var o,a,i,n,l=null!==(o=null===(a=this.props.data)||void 0===a||null===(a=a[r])||void 0===a?void 0:a.toString())&&void 0!==o?o:"",s=null!==(i=null===(n=e.data)||void 0===n||null===(n=n[r])||void 0===n?void 0:n.toString())&&void 0!==i?i:"";if(l!==s)return this.setState({value:s}),!1}return e.slots,!0}},{key:"render",value:function(){var e;return p(h,{sx:{display:"flex",alignItems:"center"},children:[!!this.props.disabled&&u("input",{hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaulValue}),this.renderImageSide("left"),u(v,r({},this.mapTextFieldProps())),this.renderImageSide("right")]})}}])}()},L=function(){return u("div",{children:u(x,{size:24})})},w=c(h)({fontSize:"1rem",height:"var(--input-base-image-size, 54px)",width:"var(--input-base-image-size, 54px)",position:"relative",borderRadius:"8px",boxShadow:"rgba(0, 0, 0, 0.16) 0px 1px 4px",overflow:"hidden","& > img":{position:"absolute",top:0,left:0,backgroundRepeat:"no-repeat",height:"100%",width:"100%",backgroundSize:"contain"},"& > div":{position:"absolute",top:0,left:0,height:"100%",width:"100%",background:"#fafafa",zIndex:1,display:"flex",alignItems:"center",justifyContent:"center"}});export{C as default};
2
2
  //# sourceMappingURL=create.input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.input.js","sources":["../../src/form/create.input.tsx"],"sourcesContent":["import React, { Component, ComponentType, FC } from 'react'\r\nimport { Box, CircularProgress, Collapse, IconButton, InputAdornment, styled, TextField, TextFieldProps } from '@mui/material'\r\nimport ContentPasteIcon from '@mui/icons-material/ContentPaste'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ImageWithFallback, IImageWithFallbackPropsOwner } from '../components'\r\n\r\nexport interface InputBaseImage<T> extends Partial<IImageWithFallbackPropsOwner> {\r\n srcGetter?: (value: any, model?: Partial<T>) => string\r\n element?: React.ComponentType<{ value: any; model?: Partial<T> }>\r\n mirror?: boolean\r\n}\r\n\r\nexport interface IInputSlots<T> {\r\n maxLength?: number\r\n textFieldProps?: TextFieldProps\r\n pastenable?: boolean\r\n imageLeft?: InputBaseImage<T>\r\n imageRight?: InputBaseImage<T>\r\n}\r\n\r\nexport interface IInputProps<T> extends IFormInputBase<T, IInputSlots<T>> {}\r\n\r\nexport interface IInputState {\r\n value?: string\r\n}\r\n\r\nexport interface IInputParams<T> extends IInputSlots<T> {}\r\n\r\nconst CreateInput = function <T>(params?: IInputParams<T>): ComponentType<IInputProps<T>> {\r\n class InputBase extends Component<IInputProps<T>, IInputState> {\r\n private _cachedSlots: IInputSlots<T> = {}\r\n constructor(props: IInputProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.defaulValue }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n get defaulValue(): string {\r\n const { data, name } = this.props\r\n return this.props.defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n }\r\n\r\n componentDidUpdate(prevProps: IInputProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputProps<T>>): boolean {\r\n const { name, slots } = this.props\r\n if (!!name) {\r\n const currentDataValue = this.props.data?.[name]?.toString() ?? ''\r\n const nextDataValue = nextProps.data?.[name]?.toString() ?? ''\r\n if (currentDataValue !== nextDataValue) {\r\n this.setState({ value: nextDataValue })\r\n return false\r\n }\r\n }\r\n\r\n if (slots !== nextProps.slots) {\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const tfp: TextFieldProps = {\r\n fullWidth: true,\r\n variant: 'outlined',\r\n name: this.props.name?.toString(),\r\n error: errorMessage.error,\r\n helperText: errorMessage.message,\r\n disabled: this.props.disabled,\r\n onBlur: () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n },\r\n label: this.getLabel(),\r\n placeholder: this.props.placeholder,\r\n InputLabelProps: !!this.state.value ? { shrink: true } : {},\r\n value: this.state.value ?? '',\r\n onChange: this.handleChange\r\n }\r\n if (this.slots.pastenable === true) {\r\n tfp.InputProps = {\r\n endAdornment: (\r\n <InputAdornment position='end'>\r\n <IconButton onClick={this.handlePaste} edge='end'>\r\n <ContentPasteIcon />\r\n </IconButton>\r\n </InputAdornment>\r\n )\r\n }\r\n }\r\n if (this.slots?.maxLength) tfp.inputProps = { ...tfp.inputProps, maxLength: this.slots.maxLength }\r\n return mergeObjects<TextFieldProps>({}, tfp, this.slots?.textFieldProps)\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.defaulValue} />}\r\n {this.renderImageSide('left')}\r\n <TextField {...this.mapTextFieldProps()} />\r\n {this.renderImageSide('right')}\r\n </Box>\r\n )\r\n }\r\n\r\n renderImageSide = (side: 'left' | 'right') => {\r\n const image = side === 'left' ? this.slots.imageLeft : this.slots.imageRight\r\n if (!image) return <></>\r\n const { srcGetter, element, alt = 'input-image', fallbackSrc = '', debounceDelay = 700, ...imageOther } = image\r\n if (element) {\r\n const Element = element\r\n return (\r\n <WrapImage>\r\n <Element value={this.state.value} model={this.props.data} />\r\n </WrapImage>\r\n )\r\n }\r\n const src = srcGetter ? srcGetter(this.state.value, this.props.data) : imageOther.src ?? this.state.value\r\n const imageProps: IImageWithFallbackPropsOwner = { src, alt, fallbackSrc, debounceDelay }\r\n return (\r\n <Collapse sx={{ mx: '10px' }} in={!!src} unmountOnExit orientation='horizontal'>\r\n <WrapImage>\r\n <ImageWithFallback {...imageOther} {...imageProps} loading={<LoadingCircularProgress />} />\r\n </WrapImage>\r\n </Collapse>\r\n )\r\n }\r\n //#endregion\r\n\r\n private mergeSlots = (currentSlots?: IInputSlots<T>): IInputSlots<T> => {\r\n const base = mergeObjects<IInputSlots<T>>({}, params, currentSlots)\r\n const { imageLeft, imageRight } = base\r\n\r\n // mirror from left to right\r\n if (imageLeft?.mirror && !imageRight) {\r\n base.imageRight = { ...imageLeft }\r\n delete base.imageRight.mirror\r\n }\r\n // mirror from right to left\r\n else if (imageRight?.mirror && !imageLeft) {\r\n base.imageLeft = { ...imageRight }\r\n delete base.imageLeft.mirror\r\n }\r\n\r\n return base\r\n }\r\n\r\n getLabel = () => {\r\n if (!this.props.label) return\r\n if (!this.slots?.maxLength) return this.props.label\r\n return `${this.props.label} (${this.state.value?.length ?? 0}/${this.slots.maxLength})`\r\n }\r\n\r\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n this.setState({ value: event.target.value })\r\n }\r\n\r\n handlePaste = async () => {\r\n try {\r\n const clipboardText = await navigator.clipboard.readText()\r\n this.setState({ value: clipboardText })\r\n } catch (error) {\r\n console.error('Error clipboard:', error)\r\n }\r\n }\r\n }\r\n return InputBase\r\n}\r\n\r\nexport default CreateInput\r\n\r\n// export type InputTextType<T> = ReturnType<typeof CreateInputBase<T>>\r\n\r\nconst LoadingCircularProgress: FC = () => (\r\n <div>\r\n <CircularProgress size={24} />\r\n </div>\r\n)\r\n\r\nconst WrapImage = styled(Box)({\r\n fontSize: '1rem',\r\n height: 'var(--input-base-image-size, 54px)',\r\n width: 'var(--input-base-image-size, 54px)',\r\n position: 'relative',\r\n borderRadius: '8px',\r\n boxShadow: 'rgba(0, 0, 0, 0.16) 0px 1px 4px',\r\n overflow: 'hidden',\r\n '& > img': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n backgroundRepeat: 'no-repeat',\r\n height: '100%',\r\n width: '100%',\r\n backgroundSize: 'contain'\r\n },\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n width: '100%',\r\n background: '#fafafa',\r\n zIndex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n})\r\n"],"names":["CreateInput","params","InputBase","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$state$value","_this$slots","_this$slots2","errorMessage","getErrorMessage","messageErrors","name","tfp","fullWidth","variant","toString","error","helperText","message","disabled","onBlur","label","getLabel","placeholder","InputLabelProps","state","value","shrink","onChange","handleChange","slots","pastenable","InputProps","endAdornment","_jsx","InputAdornment","position","children","IconButton","onClick","handlePaste","edge","ContentPasteIcon","maxLength","inputProps","_objectSpread","mergeObjects","textFieldProps","side","_imageOther$src","image","imageLeft","imageRight","srcGetter","element","_image$alt","alt","_image$fallbackSrc","fallbackSrc","_image$debounceDelay","debounceDelay","imageOther","_objectWithoutProperties","_excluded","WrapImage","model","data","src","imageProps","Collapse","sx","mx","in","unmountOnExit","orientation","ImageWithFallback","loading","LoadingCircularProgress","currentSlots","base","mirror","_this$slots3","_this$state$value$len","_this$state$value2","concat","length","event","setState","target","_asyncToGenerator","_regeneratorRuntime","mark","_callee","clipboardText","wrap","_context","prev","next","navigator","clipboard","readText","sent","t0","console","stop","_cachedSlots","mergeSlots","defaulValue","_inherits","Component","_createClass","key","get","this","_this$props$defaultVa","_data$name","_this$props","defaultValue","undefined","prevProps","nextProps","_this$props2","_this$props$data$name","_this$props$data","_nextProps$data$name$","_nextProps$data","currentDataValue","nextDataValue","_this$props$name2","_jsxs","Box","display","alignItems","hidden","renderImageSide","TextField","mapTextFieldProps","CircularProgress","size","styled","fontSize","height","width","borderRadius","boxShadow","overflow","top","left","backgroundRepeat","backgroundSize","background","zIndex","justifyContent"],"mappings":"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"}
1
+ {"version":3,"file":"create.input.js","sources":["../../src/form/create.input.tsx"],"sourcesContent":["import React, { Component, ComponentType, FC } from 'react'\r\nimport { Box, CircularProgress, Collapse, IconButton, InputAdornment, styled, TextField, TextFieldProps } from '@mui/material'\r\nimport ContentPasteIcon from '@mui/icons-material/ContentPaste'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ImageWithFallback, IImageWithFallbackPropsOwner } from '../components'\r\n\r\nexport interface InputBaseImage<T> extends Partial<IImageWithFallbackPropsOwner> {\r\n srcGetter?: (value: any, model?: Partial<T>) => string\r\n element?: React.ComponentType<{ value: any; model?: Partial<T> }>\r\n mirror?: boolean\r\n}\r\n\r\nexport interface IInputSlots<T> {\r\n maxLength?: number\r\n textFieldProps?: TextFieldProps\r\n pastenable?: boolean\r\n imageLeft?: InputBaseImage<T>\r\n imageRight?: InputBaseImage<T>\r\n}\r\n\r\nexport interface IInputProps<T> extends IFormInputBase<T, IInputSlots<T>> {}\r\n\r\nexport interface IInputState {\r\n value?: string\r\n}\r\n\r\nexport interface IInputParams<T> extends IInputSlots<T> {}\r\n\r\nconst CreateInput = function <T>(params?: IInputParams<T>): ComponentType<IInputProps<T>> {\r\n class InputBase extends Component<IInputProps<T>, IInputState> {\r\n private _cachedSlots: IInputSlots<T> = {}\r\n constructor(props: IInputProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.defaulValue }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n get defaulValue(): string {\r\n const { data, name } = this.props\r\n return this.props.defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n }\r\n\r\n componentDidUpdate(prevProps: IInputProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputProps<T>>): boolean {\r\n const { name, slots } = this.props\r\n if (!!name) {\r\n const currentDataValue = this.props.data?.[name]?.toString() ?? ''\r\n const nextDataValue = nextProps.data?.[name]?.toString() ?? ''\r\n if (currentDataValue !== nextDataValue) {\r\n this.setState({ value: nextDataValue })\r\n return false\r\n }\r\n }\r\n\r\n if (slots !== nextProps.slots) {\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const tfp: TextFieldProps = {\r\n fullWidth: true,\r\n variant: 'outlined',\r\n name: this.props.name?.toString(),\r\n error: errorMessage.error,\r\n helperText: errorMessage.message,\r\n disabled: this.props.disabled,\r\n onBlur: () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n },\r\n label: this.getLabel(),\r\n placeholder: this.props.placeholder,\r\n InputLabelProps: !!this.state.value ? { shrink: true } : {},\r\n value: this.state.value ?? '',\r\n onChange: this.handleChange\r\n }\r\n if (this.slots.pastenable === true) {\r\n tfp.InputProps = {\r\n endAdornment: (\r\n <InputAdornment position='end'>\r\n <IconButton onClick={this.handlePaste} edge='end'>\r\n <ContentPasteIcon />\r\n </IconButton>\r\n </InputAdornment>\r\n )\r\n }\r\n }\r\n if (this.slots?.maxLength) tfp.inputProps = { ...tfp.inputProps, maxLength: this.slots.maxLength }\r\n return mergeObjects<TextFieldProps>({}, tfp, this.slots?.textFieldProps)\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.defaulValue} />}\r\n {this.renderImageSide('left')}\r\n <TextField {...this.mapTextFieldProps()} />\r\n {this.renderImageSide('right')}\r\n </Box>\r\n )\r\n }\r\n\r\n renderImageSide = (side: 'left' | 'right') => {\r\n const image = side === 'left' ? this.slots.imageLeft : this.slots.imageRight\r\n if (!image) return <></>\r\n const { srcGetter, element, alt = 'input-image', fallbackSrc = '', debounceDelay = 700, ...imageOther } = image\r\n if (element) {\r\n const Element = element\r\n return (\r\n <WrapImage>\r\n <Element value={this.state.value} model={this.props.data} />\r\n </WrapImage>\r\n )\r\n }\r\n const src = srcGetter ? srcGetter(this.state.value, this.props.data) : imageOther.src ?? this.state.value\r\n const imageProps: IImageWithFallbackPropsOwner = { src, alt, fallbackSrc, debounceDelay }\r\n return (\r\n <Collapse sx={{ mx: '10px' }} in={!!src} unmountOnExit orientation='horizontal'>\r\n <WrapImage>\r\n <ImageWithFallback {...imageOther} {...imageProps} loading={<LoadingCircularProgress />} />\r\n </WrapImage>\r\n </Collapse>\r\n )\r\n }\r\n //#endregion\r\n\r\n private mergeSlots = (currentSlots?: IInputSlots<T>): IInputSlots<T> => {\r\n const base = mergeObjects<IInputSlots<T>>({}, params, currentSlots)\r\n const { imageLeft, imageRight } = base\r\n\r\n // mirror from left to right\r\n if (imageLeft?.mirror && !imageRight) {\r\n base.imageRight = { ...imageLeft }\r\n delete base.imageRight.mirror\r\n }\r\n // mirror from right to left\r\n else if (imageRight?.mirror && !imageLeft) {\r\n base.imageLeft = { ...imageRight }\r\n delete base.imageLeft.mirror\r\n }\r\n\r\n return base\r\n }\r\n\r\n getLabel = () => {\r\n if (!this.props.label) return\r\n if (!this.slots?.maxLength) return this.props.label\r\n return `${this.props.label} (${this.state.value?.length ?? 0}/${this.slots.maxLength})`\r\n }\r\n\r\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n this.setState({ value: event.target.value })\r\n }\r\n\r\n handlePaste = async () => {\r\n try {\r\n const clipboardText = await navigator.clipboard.readText()\r\n this.setState({ value: clipboardText })\r\n } catch (error) {\r\n console.error('Error clipboard:', error)\r\n }\r\n }\r\n }\r\n return InputBase\r\n}\r\n\r\nexport default CreateInput\r\n\r\n// export type InputTextType<T> = ReturnType<typeof CreateInputBase<T>>\r\n\r\nconst LoadingCircularProgress: FC = () => (\r\n <div>\r\n <CircularProgress size={24} />\r\n </div>\r\n)\r\n\r\nconst WrapImage = styled(Box)({\r\n fontSize: '1rem',\r\n height: 'var(--input-base-image-size, 54px)',\r\n width: 'var(--input-base-image-size, 54px)',\r\n position: 'relative',\r\n borderRadius: '8px',\r\n boxShadow: 'rgba(0, 0, 0, 0.16) 0px 1px 4px',\r\n overflow: 'hidden',\r\n '& > img': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n backgroundRepeat: 'no-repeat',\r\n height: '100%',\r\n width: '100%',\r\n backgroundSize: 'contain'\r\n },\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n width: '100%',\r\n background: '#fafafa',\r\n zIndex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n})\r\n"],"names":["CreateInput","params","InputBase","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$state$value","_this$slots","_this$slots2","errorMessage","getErrorMessage","messageErrors","name","tfp","fullWidth","variant","toString","error","helperText","message","disabled","onBlur","label","getLabel","placeholder","InputLabelProps","state","value","shrink","onChange","handleChange","slots","pastenable","InputProps","endAdornment","_jsx","InputAdornment","position","children","IconButton","onClick","handlePaste","edge","ContentPasteIcon","maxLength","inputProps","_objectSpread","mergeObjects","textFieldProps","side","_imageOther$src","image","imageLeft","imageRight","srcGetter","element","_image$alt","alt","_image$fallbackSrc","fallbackSrc","_image$debounceDelay","debounceDelay","imageOther","_objectWithoutProperties","_excluded","WrapImage","model","data","src","imageProps","Collapse","sx","mx","in","unmountOnExit","orientation","ImageWithFallback","loading","LoadingCircularProgress","currentSlots","base","mirror","_this$slots3","_this$state$value$len","_this$state$value2","concat","length","event","setState","target","_asyncToGenerator","_regenerator","m","_callee","clipboardText","_t","w","_context","n","p","navigator","clipboard","readText","v","console","a","_cachedSlots","mergeSlots","defaulValue","_inherits","Component","_createClass","key","get","this","_this$props$defaultVa","_data$name","_this$props","defaultValue","undefined","prevProps","nextProps","_this$props2","_this$props$data$name","_this$props$data","_nextProps$data$name$","_nextProps$data","currentDataValue","nextDataValue","_this$props$name2","_jsxs","Box","display","alignItems","hidden","renderImageSide","TextField","mapTextFieldProps","CircularProgress","size","styled","fontSize","height","width","borderRadius","boxShadow","overflow","top","left","backgroundRepeat","backgroundSize","background","zIndex","justifyContent"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as t,createClass as e,objectSpread2 as n,classCallCheck as r,callSuper as o,defineProperty as i,asyncToGenerator as a,regeneratorRuntime as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,Fragment as u,jsx as p}from"react/jsx-runtime";import{Component as d}from"react";import{Autocomplete as c,TextField as f}from"@mui/material";import{getErrorMessage as v}from"./helpers.js";import{ApiAlertContext as h}from"../api-context/alert-global.js";import"../api-context/drawer-global.js";import"../api-context/global-modal.js";var m=function(m){var g=function(){function g(t){var e,n,s;return r(this,g),n=o(this,g,[t]),i(n,"abortController",{signalController:new AbortController}),i(n,"refInput",null),i(n,"existedIds",[]),i(n,"getFetchDataFunc",(function(){var t,e;return null!==(t=null!==(e=n.props.fetchData)&&void 0!==e?e:null==m?void 0:m.fetchData)&&void 0!==t?t:function(){return Promise.resolve([])}})),i(n,"timer",{_timer:0,_second:500,callback:(s=a(l().mark((function t(e){var r,o,i;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,n.abortController.signalController=new AbortController,t.next=4,n.getFetchDataFunc()(e,n.abortController.signalController.signal);case 4:r=t.sent,o=n.getOptionsFilter(r,n.existedIds),n.setState({options:o}),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),null===(i=h.ApiAlert)||void 0===i||i.PushError("Error from server!");case 12:return t.prev=12,n.setState({statusText:"no items"}),t.finish(12);case 15:case"end":return t.stop()}}),t,null,[[0,9,12,15]])}))),function(t){return s.apply(this,arguments)}),start:function(t){n.timer.clear(),n.timer._timer=window.setTimeout((function(){return n.timer.callback(t)}),n.timer._second)},clear:function(){n.abortController.signalController.abort(),clearTimeout(n.timer._timer)}}),i(n,"fetchData",a(l().mark((function t(){var e,r,o,i,a,s;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=n.getDefaultValue(),t.next=4,n.getFetchDataFunc()(r,n.abortController.signalController.signal);case 4:if(o=t.sent,Array.isArray(o)){t.next=7;break}return t.abrupt("return");case 7:return i=n.getOptionsFilter(o,n.existedIds),a=null!==(e=i.find((function(t){return t.Id===r})))&&void 0!==e?e:null,n.setState({options:i,optionSelected:a,loading:!1}),t.abrupt("return");case 13:t.prev=13,t.t0=t.catch(0),null===(s=h.ApiAlert)||void 0===s||s.PushError("Error from server!");case 16:return t.prev=16,n.setState({statusText:"no items",loading:!1}),t.finish(16);case 19:case"end":return t.stop()}}),t,null,[[0,13,16,19]])})))),i(n,"handleChange",(function(t,e){var r;n.setState({optionSelected:e}),n.refInput&&(n.refInput.value=null!==(r=null==e?void 0:e.Id)&&void 0!==r?r:""),n.props.onChange&&n.props.onChange(e)})),i(n,"handleInputChange",(function(t,e){var r,o={inputValue:e};if(e!==(null===(r=n.state.optionSelected)||void 0===r?void 0:r.Name)){var i=e.trim().toLowerCase(),a=n.state.options.findIndex((function(t){var e;return null===(e=t.Name)||void 0===e?void 0:e.trim().toLowerCase().includes(i)}));(a<0||""===i)&&(o.statusText="loading..."),n.setState(o,(function(){(a<0||""===i)&&n.timer.start(i)}))}else n.setState(o)})),i(n,"fillterOptions",(function(t,e){return t.filter((function(t){var n,r=e.inputValue.toLowerCase();return t.Id.toLowerCase().includes(r)||(null===(n=t.Name)||void 0===n?void 0:n.toLowerCase().includes(r))}))})),i(n,"getLabel",(function(){var t,e;return null!==(t=n.props.label)&&void 0!==t?t:null===(e=n.props.name)||void 0===e?void 0:e.toString()})),i(n,"getDefaultValue",(function(){var t,e,r;if(n.props.name)return null===(t=null!==(e=n.props.defaultValue)&&void 0!==e?e:null===(r=n.props.data)||void 0===r?void 0:r[n.props.name])||void 0===t?void 0:t.toString()})),n.state={options:[],statusText:"no items",optionSelected:null,inputValue:"",loading:!0},n.existedIds=null!==(e=t.existedIds)&&void 0!==e?e:[],n}return t(g,d),e(g,[{key:"render",value:function(){var t,e,r,o,i=this,a=this.getDefaultValue(),l=v(this.props.messageErrors,this.props.name);return s(u,{children:[p(c,{disabled:this.state.loading||this.props.disabled,fullWidth:!0,noOptionsText:this.state.statusText,options:this.state.options,getOptionLabel:function(t){var e;return null!==(e=t.Name)&&void 0!==e?e:t.Id},getOptionKey:function(t){return JSON.stringify(t)},isOptionEqualToValue:function(t,e){return t.Id.toString()===e.Id.toString()&&t.Name===e.Name},filterOptions:this.fillterOptions,value:this.state.optionSelected,onChange:this.handleChange,inputValue:this.state.inputValue,onInputChange:this.handleInputChange,renderInput:function(t){var e;return p(f,n(n({},t),{},{label:i.getLabel(),error:l.error,helperText:l.message,onBlur:function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name)}},null===(e=i.props.slots)||void 0===e?void 0:e.textFieldProps))}}),p("input",{ref:function(t){return i.refInput=t},hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:a}),(null===(e=this.state.optionSelected)||void 0===e?void 0:e.Other)&&p("input",{hidden:!0,name:"".concat(null===(r=this.props.name)||void 0===r?void 0:r.toString(),"Other"),defaultValue:JSON.stringify(this.state.optionSelected.Other)},null!==(o=this.state.optionSelected.Id)&&void 0!==o?o:"key")]})}},{key:"componentDidMount",value:function(){this.fetchData()}},{key:"componentWillUnmount",value:function(){this.timer.clear()}},{key:"componentDidUpdate",value:function(t){var e;JSON.stringify(t.existedIds)!==JSON.stringify(this.props.existedIds)&&(this.existedIds=null!==(e=this.props.existedIds)&&void 0!==e?e:[])}},{key:"getOptionsFilter",value:function(t){var e=new Set(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]);return t.reduce((function(t,n){return e.has(n.Id)||(t.push(n),e.add(n.Id)),t}),[])}}])}();return g};export{m as default};
1
+ import{inherits as t,createClass as e,objectSpread2 as n,classCallCheck as r,callSuper as o,defineProperty as i,asyncToGenerator as a,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,Fragment as u,jsx as d}from"react/jsx-runtime";import{Component as p}from"react";import{Autocomplete as c,TextField as f}from"@mui/material";import{getErrorMessage as v}from"./helpers.js";import{ApiAlertContext as h}from"../api-context/alert-global.js";import"../api-context/drawer-global.js";import"../api-context/global-modal.js";var m=function(m){var g=function(){function g(t){var e,n,s;return r(this,g),n=o(this,g,[t]),i(n,"abortController",{signalController:new AbortController}),i(n,"refInput",null),i(n,"existedIds",[]),i(n,"getFetchDataFunc",(function(){var t,e;return null!==(t=null!==(e=n.props.fetchData)&&void 0!==e?e:null==m?void 0:m.fetchData)&&void 0!==t?t:function(){return Promise.resolve([])}})),i(n,"timer",{_timer:0,_second:500,callback:(s=a(l().m((function t(e){var r,o,i;return l().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,n.abortController.signalController=new AbortController,t.n=1,n.getFetchDataFunc()(e,n.abortController.signalController.signal);case 1:r=t.v,o=n.getOptionsFilter(r,n.existedIds),n.setState({options:o}),t.n=3;break;case 2:t.p=2,t.v,null===(i=h.ApiAlert)||void 0===i||i.PushError("Error from server!");case 3:return t.p=3,n.setState({statusText:"no items"}),t.f(3);case 4:return t.a(2)}}),t,null,[[0,2,3,4]])}))),function(t){return s.apply(this,arguments)}),start:function(t){n.timer.clear(),n.timer._timer=window.setTimeout((function(){return n.timer.callback(t)}),n.timer._second)},clear:function(){n.abortController.signalController.abort(),clearTimeout(n.timer._timer)}}),i(n,"fetchData",a(l().m((function t(){var e,r,o,i,a,s;return l().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,r=n.getDefaultValue(),t.n=1,n.getFetchDataFunc()(r,n.abortController.signalController.signal);case 1:if(o=t.v,Array.isArray(o)){t.n=2;break}return t.a(2);case 2:return i=n.getOptionsFilter(o,n.existedIds),a=null!==(e=i.find((function(t){return t.Id===r})))&&void 0!==e?e:null,n.setState({options:i,optionSelected:a,loading:!1}),t.a(2);case 3:t.p=3,t.v,null===(s=h.ApiAlert)||void 0===s||s.PushError("Error from server!");case 4:return t.p=4,n.setState({statusText:"no items",loading:!1}),t.f(4);case 5:return t.a(2)}}),t,null,[[0,3,4,5]])})))),i(n,"handleChange",(function(t,e){var r;n.setState({optionSelected:e}),n.refInput&&(n.refInput.value=null!==(r=null==e?void 0:e.Id)&&void 0!==r?r:""),n.props.onChange&&n.props.onChange(e)})),i(n,"handleInputChange",(function(t,e){var r,o={inputValue:e};if(e!==(null===(r=n.state.optionSelected)||void 0===r?void 0:r.Name)){var i=e.trim().toLowerCase(),a=n.state.options.findIndex((function(t){var e;return null===(e=t.Name)||void 0===e?void 0:e.trim().toLowerCase().includes(i)}));(a<0||""===i)&&(o.statusText="loading..."),n.setState(o,(function(){(a<0||""===i)&&n.timer.start(i)}))}else n.setState(o)})),i(n,"fillterOptions",(function(t,e){return t.filter((function(t){var n,r=e.inputValue.toLowerCase();return t.Id.toLowerCase().includes(r)||(null===(n=t.Name)||void 0===n?void 0:n.toLowerCase().includes(r))}))})),i(n,"getLabel",(function(){var t,e;return null!==(t=n.props.label)&&void 0!==t?t:null===(e=n.props.name)||void 0===e?void 0:e.toString()})),i(n,"getDefaultValue",(function(){var t,e,r;if(n.props.name)return null===(t=null!==(e=n.props.defaultValue)&&void 0!==e?e:null===(r=n.props.data)||void 0===r?void 0:r[n.props.name])||void 0===t?void 0:t.toString()})),n.state={options:[],statusText:"no items",optionSelected:null,inputValue:"",loading:!0},n.existedIds=null!==(e=t.existedIds)&&void 0!==e?e:[],n}return t(g,p),e(g,[{key:"render",value:function(){var t,e,r,o,i=this,a=this.getDefaultValue(),l=v(this.props.messageErrors,this.props.name);return s(u,{children:[d(c,{disabled:this.state.loading||this.props.disabled,fullWidth:!0,noOptionsText:this.state.statusText,options:this.state.options,getOptionLabel:function(t){var e;return null!==(e=t.Name)&&void 0!==e?e:t.Id},getOptionKey:function(t){return JSON.stringify(t)},isOptionEqualToValue:function(t,e){return t.Id.toString()===e.Id.toString()&&t.Name===e.Name},filterOptions:this.fillterOptions,value:this.state.optionSelected,onChange:this.handleChange,inputValue:this.state.inputValue,onInputChange:this.handleInputChange,renderInput:function(t){var e;return d(f,n(n({},t),{},{label:i.getLabel(),error:l.error,helperText:l.message,onBlur:function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name)}},null===(e=i.props.slots)||void 0===e?void 0:e.textFieldProps))}}),d("input",{ref:function(t){return i.refInput=t},hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:a}),(null===(e=this.state.optionSelected)||void 0===e?void 0:e.Other)&&d("input",{hidden:!0,name:"".concat(null===(r=this.props.name)||void 0===r?void 0:r.toString(),"Other"),defaultValue:JSON.stringify(this.state.optionSelected.Other)},null!==(o=this.state.optionSelected.Id)&&void 0!==o?o:"key")]})}},{key:"componentDidMount",value:function(){this.fetchData()}},{key:"componentWillUnmount",value:function(){this.timer.clear()}},{key:"componentDidUpdate",value:function(t){var e;JSON.stringify(t.existedIds)!==JSON.stringify(this.props.existedIds)&&(this.existedIds=null!==(e=this.props.existedIds)&&void 0!==e?e:[])}},{key:"getOptionsFilter",value:function(t){var e=new Set(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]);return t.reduce((function(t,n){return e.has(n.Id)||(t.push(n),e.add(n.Id)),t}),[])}}])}();return g};export{m as default};
2
2
  //# sourceMappingURL=create.select-with-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.select-with-api.js","sources":["../../src/form/create.select-with-api.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Autocomplete, FilterOptionsState, TextField, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ApiAlertContext } from '../api-context'\r\n\r\nexport interface ISelectWithApiOption<TOther = any> {\r\n Id: string\r\n Name?: string\r\n Other?: TOther\r\n}\r\n\r\nexport interface ISelectWithApiPropsSlots {\r\n textFieldProps: TextFieldProps\r\n}\r\n\r\nexport type ISelectWithApiFetchData<O extends ISelectWithApiOption> = (value?: string, signal?: AbortSignal) => Promise<O[]>\r\n\r\nexport interface ISelectWithApiProps<T, O extends ISelectWithApiOption> extends IFormInputBase<T>, ISelectWithApiParams<O> {\r\n onChange?: (value: O | null) => void\r\n existedIds?: string[]\r\n slots?: ISelectWithApiPropsSlots\r\n}\r\n\r\nexport interface ISelectWithApiState<O extends ISelectWithApiOption> {\r\n options: O[]\r\n statusText?: string\r\n optionSelected: O | null\r\n inputValue: string\r\n loading?: boolean\r\n}\r\n\r\nexport interface ISelectWithApiParams<O extends ISelectWithApiOption> {\r\n fetchData?: ISelectWithApiFetchData<O>\r\n}\r\n\r\nconst CreateSelectWithApi = function <T, O extends ISelectWithApiOption = ISelectWithApiOption>(\r\n params?: ISelectWithApiParams<O>\r\n): ComponentType<ISelectWithApiProps<T, O>> {\r\n class SelectWithApi extends Component<ISelectWithApiProps<T, O>, ISelectWithApiState<O>> {\r\n abortController = { signalController: new AbortController() }\r\n refInput: HTMLInputElement | null = null\r\n existedIds: string[] = []\r\n constructor(props: ISelectWithApiProps<T, O>) {\r\n super(props)\r\n this.state = {\r\n options: [],\r\n statusText: 'no items',\r\n optionSelected: null,\r\n inputValue: '',\r\n loading: true\r\n }\r\n this.existedIds = props.existedIds ?? []\r\n }\r\n\r\n render() {\r\n const defaultValue = this.getDefaultValue()\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <>\r\n <Autocomplete\r\n disabled={this.state.loading || this.props.disabled}\r\n fullWidth\r\n noOptionsText={this.state.statusText}\r\n options={this.state.options}\r\n getOptionLabel={(x) => x.Name ?? x.Id}\r\n getOptionKey={(x) => JSON.stringify(x)}\r\n isOptionEqualToValue={(o, v) => o.Id.toString() === v.Id.toString() && o.Name === v.Name}\r\n filterOptions={this.fillterOptions}\r\n // select\r\n value={this.state.optionSelected}\r\n onChange={this.handleChange}\r\n // input\r\n inputValue={this.state.inputValue}\r\n onInputChange={this.handleInputChange}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n label={this.getLabel()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n onBlur={() => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }}\r\n {...this.props.slots?.textFieldProps}\r\n />\r\n )}\r\n />\r\n <input ref={(ref) => (this.refInput = ref)} hidden name={this.props.name?.toString()} defaultValue={defaultValue} />\r\n {this.state.optionSelected?.Other && (\r\n <input\r\n hidden\r\n name={`${this.props.name?.toString()}Other`}\r\n key={this.state.optionSelected.Id ?? 'key'}\r\n defaultValue={JSON.stringify(this.state.optionSelected.Other)}\r\n />\r\n )}\r\n </>\r\n )\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData()\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.timer.clear()\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ISelectWithApiProps<T, O>>): void {\r\n if (JSON.stringify(prevProps.existedIds) !== JSON.stringify(this.props.existedIds)) {\r\n this.existedIds = this.props.existedIds ?? []\r\n }\r\n }\r\n\r\n getFetchDataFunc = (): ISelectWithApiFetchData<O> => {\r\n return this.props.fetchData ?? params?.fetchData ?? (() => Promise.resolve([]))\r\n }\r\n\r\n timer = {\r\n _timer: 0,\r\n _second: 500,\r\n callback: async (value: string) => {\r\n try {\r\n this.abortController.signalController = new AbortController()\r\n const res = await this.getFetchDataFunc()(value, this.abortController.signalController.signal)\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n this.setState({ options })\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items' })\r\n }\r\n },\r\n start: (text: string) => {\r\n this.timer.clear()\r\n this.timer._timer = window.setTimeout(() => this.timer.callback(text), this.timer._second)\r\n },\r\n clear: () => {\r\n this.abortController.signalController.abort()\r\n clearTimeout(this.timer._timer)\r\n }\r\n }\r\n\r\n fetchData = async () => {\r\n try {\r\n const defaultValue = this.getDefaultValue()\r\n const res = await this.getFetchDataFunc()(defaultValue, this.abortController.signalController.signal)\r\n if (!Array.isArray(res)) return\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n const optionSelected = options.find((x) => x.Id === defaultValue) ?? null\r\n this.setState({ options, optionSelected, loading: false })\r\n return\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items', loading: false })\r\n }\r\n }\r\n\r\n handleChange = (_: React.SyntheticEvent, value: O | null) => {\r\n this.setState({ optionSelected: value })\r\n if (this.refInput) this.refInput.value = value?.Id ?? ''\r\n this.props.onChange && this.props.onChange(value)\r\n }\r\n\r\n handleInputChange = (_: React.SyntheticEvent, value: string) => {\r\n const state: Pick<ISelectWithApiState<O>, 'inputValue' | 'statusText' | 'loading'> = { inputValue: value }\r\n if (value === this.state.optionSelected?.Name) {\r\n this.setState(state)\r\n return\r\n }\r\n const valueFormated = value.trim().toLowerCase()\r\n const selectedIndex = this.state.options.findIndex((x) => {\r\n return x.Name?.trim().toLowerCase().includes(valueFormated)\r\n })\r\n if (selectedIndex < 0 || valueFormated === '') state.statusText = 'loading...'\r\n this.setState(state, () => {\r\n if (selectedIndex < 0 || valueFormated === '') this.timer.start(valueFormated)\r\n })\r\n }\r\n\r\n fillterOptions = (options: O[], state: FilterOptionsState<O>) => {\r\n return options.filter((x) => {\r\n const value = state.inputValue.toLowerCase()\r\n return x.Id.toLowerCase().includes(value) || x.Name?.toLowerCase().includes(value)\r\n })\r\n }\r\n\r\n getLabel = () => {\r\n return this.props.label ?? this.props.name?.toString()\r\n }\r\n\r\n getDefaultValue = () => {\r\n if (!this.props.name) return\r\n return (this.props.defaultValue ?? this.props.data?.[this.props.name])?.toString()\r\n }\r\n\r\n getOptionsFilter<O extends ISelectWithApiOption = ISelectWithApiOption>(options: O[], existedId: string[] = []): O[] {\r\n const ids = new Set<string | number>(existedId)\r\n return options.reduce<O[]>((a, b) => {\r\n if (!ids.has(b.Id)) {\r\n a.push(b)\r\n ids.add(b.Id)\r\n }\r\n return a\r\n }, [])\r\n }\r\n }\r\n return SelectWithApi\r\n}\r\nexport default CreateSelectWithApi\r\n"],"names":["CreateSelectWithApi","params","SelectWithApi","props","_props$existedIds","_this","_callback","_classCallCheck","_callSuper","_defineProperty","signalController","AbortController","_ref","_this$props$fetchData","fetchData","Promise","resolve","_timer","_second","callback","_asyncToGenerator","_regeneratorRuntime","mark","_callee","value","res","options","_ApiAlertContext$ApiA","wrap","_context","prev","next","abortController","getFetchDataFunc","signal","sent","getOptionsFilter","existedIds","setState","t0","ApiAlertContext","ApiAlert","PushError","statusText","finish","stop","_x","apply","this","arguments","start","text","timer","clear","window","setTimeout","abort","clearTimeout","_callee2","_options$find","defaultValue","optionSelected","_ApiAlertContext$ApiA2","_context2","getDefaultValue","Array","isArray","abrupt","find","x","Id","loading","_","_value$Id","refInput","onChange","_this$state$optionSel","state","inputValue","Name","valueFormated","trim","toLowerCase","selectedIndex","findIndex","_x$Name","includes","filter","_x$Name2","_this$props$label","_this$props$name","label","name","toString","_ref3","_this$props$defaultVa","_this$props$data","data","_inherits","Component","_createClass","key","_this$props$name2","_this$state$optionSel2","_this$props$name3","_this$state$optionSel3","_this2","eMessage","getErrorMessage","messageErrors","_jsxs","_jsx","Autocomplete","disabled","fullWidth","noOptionsText","getOptionLabel","_x$Name3","getOptionKey","JSON","stringify","isOptionEqualToValue","o","v","filterOptions","fillterOptions","handleChange","onInputChange","handleInputChange","renderInput","_this2$props$slots","TextField","_objectSpread","getLabel","error","helperText","message","onBlur","slots","textFieldProps","ref","hidden","Other","concat","prevProps","_this$props$existedId","ids","Set","length","undefined","reduce","a","b","has","push","add"],"mappings":"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"}
1
+ {"version":3,"file":"create.select-with-api.js","sources":["../../src/form/create.select-with-api.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Autocomplete, FilterOptionsState, TextField, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ApiAlertContext } from '../api-context'\r\n\r\nexport interface ISelectWithApiOption<TOther = any> {\r\n Id: string\r\n Name?: string\r\n Other?: TOther\r\n}\r\n\r\nexport interface ISelectWithApiPropsSlots {\r\n textFieldProps: TextFieldProps\r\n}\r\n\r\nexport type ISelectWithApiFetchData<O extends ISelectWithApiOption> = (value?: string, signal?: AbortSignal) => Promise<O[]>\r\n\r\nexport interface ISelectWithApiProps<T, O extends ISelectWithApiOption> extends IFormInputBase<T>, ISelectWithApiParams<O> {\r\n onChange?: (value: O | null) => void\r\n existedIds?: string[]\r\n slots?: ISelectWithApiPropsSlots\r\n}\r\n\r\nexport interface ISelectWithApiState<O extends ISelectWithApiOption> {\r\n options: O[]\r\n statusText?: string\r\n optionSelected: O | null\r\n inputValue: string\r\n loading?: boolean\r\n}\r\n\r\nexport interface ISelectWithApiParams<O extends ISelectWithApiOption> {\r\n fetchData?: ISelectWithApiFetchData<O>\r\n}\r\n\r\nconst CreateSelectWithApi = function <T, O extends ISelectWithApiOption = ISelectWithApiOption>(\r\n params?: ISelectWithApiParams<O>\r\n): ComponentType<ISelectWithApiProps<T, O>> {\r\n class SelectWithApi extends Component<ISelectWithApiProps<T, O>, ISelectWithApiState<O>> {\r\n abortController = { signalController: new AbortController() }\r\n refInput: HTMLInputElement | null = null\r\n existedIds: string[] = []\r\n constructor(props: ISelectWithApiProps<T, O>) {\r\n super(props)\r\n this.state = {\r\n options: [],\r\n statusText: 'no items',\r\n optionSelected: null,\r\n inputValue: '',\r\n loading: true\r\n }\r\n this.existedIds = props.existedIds ?? []\r\n }\r\n\r\n render() {\r\n const defaultValue = this.getDefaultValue()\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <>\r\n <Autocomplete\r\n disabled={this.state.loading || this.props.disabled}\r\n fullWidth\r\n noOptionsText={this.state.statusText}\r\n options={this.state.options}\r\n getOptionLabel={(x) => x.Name ?? x.Id}\r\n getOptionKey={(x) => JSON.stringify(x)}\r\n isOptionEqualToValue={(o, v) => o.Id.toString() === v.Id.toString() && o.Name === v.Name}\r\n filterOptions={this.fillterOptions}\r\n // select\r\n value={this.state.optionSelected}\r\n onChange={this.handleChange}\r\n // input\r\n inputValue={this.state.inputValue}\r\n onInputChange={this.handleInputChange}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n label={this.getLabel()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n onBlur={() => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }}\r\n {...this.props.slots?.textFieldProps}\r\n />\r\n )}\r\n />\r\n <input ref={(ref) => (this.refInput = ref)} hidden name={this.props.name?.toString()} defaultValue={defaultValue} />\r\n {this.state.optionSelected?.Other && (\r\n <input\r\n hidden\r\n name={`${this.props.name?.toString()}Other`}\r\n key={this.state.optionSelected.Id ?? 'key'}\r\n defaultValue={JSON.stringify(this.state.optionSelected.Other)}\r\n />\r\n )}\r\n </>\r\n )\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData()\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.timer.clear()\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ISelectWithApiProps<T, O>>): void {\r\n if (JSON.stringify(prevProps.existedIds) !== JSON.stringify(this.props.existedIds)) {\r\n this.existedIds = this.props.existedIds ?? []\r\n }\r\n }\r\n\r\n getFetchDataFunc = (): ISelectWithApiFetchData<O> => {\r\n return this.props.fetchData ?? params?.fetchData ?? (() => Promise.resolve([]))\r\n }\r\n\r\n timer = {\r\n _timer: 0,\r\n _second: 500,\r\n callback: async (value: string) => {\r\n try {\r\n this.abortController.signalController = new AbortController()\r\n const res = await this.getFetchDataFunc()(value, this.abortController.signalController.signal)\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n this.setState({ options })\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items' })\r\n }\r\n },\r\n start: (text: string) => {\r\n this.timer.clear()\r\n this.timer._timer = window.setTimeout(() => this.timer.callback(text), this.timer._second)\r\n },\r\n clear: () => {\r\n this.abortController.signalController.abort()\r\n clearTimeout(this.timer._timer)\r\n }\r\n }\r\n\r\n fetchData = async () => {\r\n try {\r\n const defaultValue = this.getDefaultValue()\r\n const res = await this.getFetchDataFunc()(defaultValue, this.abortController.signalController.signal)\r\n if (!Array.isArray(res)) return\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n const optionSelected = options.find((x) => x.Id === defaultValue) ?? null\r\n this.setState({ options, optionSelected, loading: false })\r\n return\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items', loading: false })\r\n }\r\n }\r\n\r\n handleChange = (_: React.SyntheticEvent, value: O | null) => {\r\n this.setState({ optionSelected: value })\r\n if (this.refInput) this.refInput.value = value?.Id ?? ''\r\n this.props.onChange && this.props.onChange(value)\r\n }\r\n\r\n handleInputChange = (_: React.SyntheticEvent, value: string) => {\r\n const state: Pick<ISelectWithApiState<O>, 'inputValue' | 'statusText' | 'loading'> = { inputValue: value }\r\n if (value === this.state.optionSelected?.Name) {\r\n this.setState(state)\r\n return\r\n }\r\n const valueFormated = value.trim().toLowerCase()\r\n const selectedIndex = this.state.options.findIndex((x) => {\r\n return x.Name?.trim().toLowerCase().includes(valueFormated)\r\n })\r\n if (selectedIndex < 0 || valueFormated === '') state.statusText = 'loading...'\r\n this.setState(state, () => {\r\n if (selectedIndex < 0 || valueFormated === '') this.timer.start(valueFormated)\r\n })\r\n }\r\n\r\n fillterOptions = (options: O[], state: FilterOptionsState<O>) => {\r\n return options.filter((x) => {\r\n const value = state.inputValue.toLowerCase()\r\n return x.Id.toLowerCase().includes(value) || x.Name?.toLowerCase().includes(value)\r\n })\r\n }\r\n\r\n getLabel = () => {\r\n return this.props.label ?? this.props.name?.toString()\r\n }\r\n\r\n getDefaultValue = () => {\r\n if (!this.props.name) return\r\n return (this.props.defaultValue ?? this.props.data?.[this.props.name])?.toString()\r\n }\r\n\r\n getOptionsFilter<O extends ISelectWithApiOption = ISelectWithApiOption>(options: O[], existedId: string[] = []): O[] {\r\n const ids = new Set<string | number>(existedId)\r\n return options.reduce<O[]>((a, b) => {\r\n if (!ids.has(b.Id)) {\r\n a.push(b)\r\n ids.add(b.Id)\r\n }\r\n return a\r\n }, [])\r\n }\r\n }\r\n return SelectWithApi\r\n}\r\nexport default CreateSelectWithApi\r\n"],"names":["CreateSelectWithApi","params","SelectWithApi","props","_props$existedIds","_this","_callback","_classCallCheck","_callSuper","_defineProperty","signalController","AbortController","_ref","_this$props$fetchData","fetchData","Promise","resolve","_timer","_second","callback","_asyncToGenerator","_regenerator","m","_callee","value","res","options","_ApiAlertContext$ApiA","w","_context","n","p","abortController","getFetchDataFunc","signal","v","getOptionsFilter","existedIds","setState","ApiAlertContext","ApiAlert","PushError","statusText","f","a","_x","apply","this","arguments","start","text","timer","clear","window","setTimeout","abort","clearTimeout","_callee2","_options$find","defaultValue","optionSelected","_ApiAlertContext$ApiA2","_context2","getDefaultValue","Array","isArray","find","x","Id","loading","_","_value$Id","refInput","onChange","_this$state$optionSel","state","inputValue","Name","valueFormated","trim","toLowerCase","selectedIndex","findIndex","_x$Name","includes","filter","_x$Name2","_this$props$label","_this$props$name","label","name","toString","_ref3","_this$props$defaultVa","_this$props$data","data","_inherits","Component","_createClass","key","_this$props$name2","_this$state$optionSel2","_this$props$name3","_this$state$optionSel3","_this2","eMessage","getErrorMessage","messageErrors","_jsxs","_jsx","Autocomplete","disabled","fullWidth","noOptionsText","getOptionLabel","_x$Name3","getOptionKey","JSON","stringify","isOptionEqualToValue","o","filterOptions","fillterOptions","handleChange","onInputChange","handleInputChange","renderInput","_this2$props$slots","TextField","_objectSpread","getLabel","error","helperText","message","onBlur","slots","textFieldProps","ref","hidden","Other","concat","prevProps","_this$props$existedId","ids","Set","length","undefined","reduce","b","has","push","add"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as ApiPopover,ApiPopoverContext,mapApiPopoverContext,withApiPopoverContext}from"./api-context/popover.js";export{AlertDialog,default as AlertGlobal,ApiAlertContext}from"./api-context/alert-global.js";export{default as DrawerGlobal}from"./api-context/drawer-global.js";export{default as GlobalModal,GlobalModalContext,mapGlobalModalContext,withApiGlobalModalConsumerContext,withApiGlobalModalContext}from"./api-context/global-modal.js";export{default as PopoverGlobal,PopoverGlobalApi,PopoverGlobalContext,PopoverGlobalProvider,mapPopoverGlobalContext,withPopoverGlobalContext}from"./api-context/popover-global.js";export{default as Breadcrumbs}from"./components/breadcrumbs.js";export{LoadingButton}from"./components/buttons.js";export{default as CopyToClipboard}from"./components/copy-to-clipboard.js";export{default as CreateMultiSelectDropdown}from"./components/create.multi-select-dropdown.js";export{default as ImageWithFallback}from"./components/image-with-fallback.js";export{default as HelpTooltip,HelpTooltipWrap}from"./components/help-tooltip.js";export{default as TextEditorPreview}from"./components/text-editor.preview.js";export{default as TextEditor,textEditorClasses}from"./components/text-editor.js";export{default as CreateFilterBar}from"./filter-bar/create.filter-bar.js";export{EFieldValidate,ESearchMatch}from"./filter-bar/types.js";export{default as FormValidator,SingleRuleValidate,createFormValidator,mapRuleOptions}from"./form/validator.js";export{default as DinoForm}from"./form/dino-form.js";export{convertFormDataToJson,getErrorMessage,validateCsvModel}from"./form/helpers.js";export{useCheckScrolled,useDebounce}from"./hooks/index.js";export{ELazyStatus}from"./redux/types.js";export{default as DinoRedux}from"./redux/dino.js";export{default as CreateHocLazy,EmptyComponent,defaultOptionHocLazy}from"./redux/create.hoc-lazy.js";export{ELogic,EOperator,EOrder}from"./table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";export{cleanObject,decodeBase64,encodeBase64,fetchDelay,formatCapitalizeFirstText,formatCurrency,formatDatetime,formatFileSize,formatNumberWithCommas,mergeClasses,mergeObjects,sleep,tryParseArray,tryParseCsvFileToArray,tryParseIntRequired,tryParseObject,windowScrollToTop}from"./utils/helpers.js";import"./utils/dayjs-config.js";export{default as JObject}from"./utils/json-object.js";export{MFEventProvider,useMFEvent}from"./utils/mfe-events.js";export{QueryParam}from"./utils/query-param.js";export{default as CreateTable}from"./table/create.table.js";export{default as DinoTable}from"./table/dino.js";export{dinoTableClasses}from"./table/helpers.js";export{default as DinoTableGrid}from"./table-grid/dino.js";export{CreateTableGridItemActions}from"./table-grid/item-actions.js";export{default as dayjsCustom}from"dayjs";
1
+ export{default as ApiPopover,ApiPopoverContext,mapApiPopoverContext,withApiPopoverContext}from"./api-context/popover.js";export{AlertDialog,default as AlertGlobal,ApiAlertContext}from"./api-context/alert-global.js";export{default as DrawerGlobal}from"./api-context/drawer-global.js";export{default as GlobalModal,GlobalModalContext,mapGlobalModalContext,withApiGlobalModalConsumerContext,withApiGlobalModalContext}from"./api-context/global-modal.js";export{default as PopoverGlobal,PopoverGlobalApi,PopoverGlobalContext,PopoverGlobalProvider,mapPopoverGlobalContext,withPopoverGlobalContext}from"./api-context/popover-global.js";export{default as Breadcrumbs}from"./components/breadcrumbs.js";export{LoadingButton}from"./components/buttons.js";export{default as CopyToClipboard}from"./components/copy-to-clipboard.js";export{default as CreateMultiSelectDropdown}from"./components/create.multi-select-dropdown.js";export{default as ImageWithFallback}from"./components/image-with-fallback.js";export{default as HelpTooltip,HelpTooltipWrap}from"./components/help-tooltip.js";export{default as TextEditorPreview}from"./components/text-editor.preview.js";export{default as TextEditor,textEditorClasses}from"./components/text-editor.js";export{default as CreateFilterBar}from"./filter-bar/create.filter-bar.js";export{EFieldValidate,ESearchMatch}from"./filter-bar/types.js";export{default as FormValidator,SingleRuleValidate,createFormValidator,mapRuleOptions}from"./form/validator.js";export{default as DinoForm}from"./form/dino-form.js";export{convertFormDataToJson,getErrorMessage,validateCsvModel}from"./form/helpers.js";export{useCheckScrolled,useDebounce}from"./hooks/index.js";export{ELazyStatus}from"./redux/types.js";export{default as DinoRedux}from"./redux/dino.js";export{default as CreateHocLazy,EmptyComponent,defaultOptionHocLazy}from"./redux/create.hoc-lazy.js";export{ELogic,EOperator,EOrder}from"./table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";export{cleanObject,decodeBase64,encodeBase64,fetchDelay,formatCapitalizeFirstText,formatCurrency,formatDatetime,formatFileSize,formatNumberWithCommas,isGuid,mergeClasses,mergeObjects,sleep,tryParseArray,tryParseCsvFileToArray,tryParseIntRequired,tryParseObject,windowScrollToTop}from"./utils/helpers.js";import"./utils/dayjs-config.js";export{default as JObject}from"./utils/json-object.js";export{MFEventProvider,useMFEvent}from"./utils/mfe-events.js";export{QueryParam}from"./utils/query-param.js";export{default as CreateTable}from"./table/create.table.js";export{default as DinoTable}from"./table/dino.js";export{dinoTableClasses}from"./table/helpers.js";export{default as DinoTableGrid}from"./table-grid/dino.js";export{CreateTableGridItemActions}from"./table-grid/item-actions.js";export{default as dayjsCustom}from"dayjs";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{inherits as e,createClass as r,objectSpread2 as t,classCallCheck as n,callSuper as o,defineProperty as i,regeneratorRuntime as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a}from"react/jsx-runtime";import s,{Component as u}from"react";import{Box as c,Tooltip as p,IconButton as d}from"@mui/material";import f from"@mui/icons-material/Edit";import m from"@mui/icons-material/Delete";import{mergeObjects as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import{MapTableBaseContext as g}from"./context.js";function h(h){var x=function(){function x(){var e;n(this,x);for(var r=arguments.length,u=new Array(r),c=0;c<r;c++)u[c]=arguments[c];return e=o(this,x,[].concat(u)),i(e,"getButtons",l().mark((function e(r,n,o){var i,u,c,v,g,x,b,y,k,j,C,w,D,E;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(k=null!==(i=null===(u=r.props)||void 0===u?void 0:u.before)&&void 0!==i?i:null==n?void 0:n.before)){e.next=4;break}return e.next=4,a(s.Fragment,{children:k(r.props.value,o)},"Before");case 4:if(j=null!==(c=null===(v=r.props)||void 0===v?void 0:v.formEdit)&&void 0!==c?c:null==n?void 0:n.formEdit,C=j?j(r.props.value,o):void 0,!j||!C){e.next=9;break}return e.next=9,a(p,{title:"Edit",arrow:!0,children:a(d,{color:"primary",onClick:function(){null==o||o.showModal(t({renderContent:function(){return C||a(s.Fragment,{})},sx:{display:"flex",justifyContent:"center",alignItems:"center"},backdropActivated:!0},null==h?void 0:h.buttonEditConfig))},children:a(f,{fontSize:"small"})})},"Edit");case 9:if(w=null!==(g=null===(x=r.props)||void 0===x?void 0:x.formDelete)&&void 0!==g?g:null==n?void 0:n.formDelete,D=w?w(r.props.value,o):void 0,!w||!D){e.next=14;break}return e.next=14,a(p,{title:"Delete",arrow:!0,children:a(d,{color:"error",onClick:function(){null==o||o.showModal(t({renderContent:function(){return D||a(s.Fragment,{})},sx:{display:"flex",justifyContent:"center",alignItems:"center"},backdropActivated:!0},null==h?void 0:h.buttonDeleteConfig))},children:a(m,{fontSize:"small"})})},"Delete");case 14:if(!(E=null!==(b=null===(y=r.props)||void 0===y?void 0:y.after)&&void 0!==b?b:null==n?void 0:n.after)){e.next=18;break}return e.next=18,a(s.Fragment,{children:E(r.props.value,o)},"After");case 18:case"end":return e.stop()}}),e)}))),e}return e(x,u),r(x,[{key:"propsMerge",get:function(){return v(h,this.props)}},{key:"render",value:function(){var e=this;return g((function(r){return a(c,t(t({sx:{display:"flex",alignItems:"center",height:"100%"}},e.propsMerge.wrapProps),{},{children:Array.from(e.getButtons(e,e.propsMerge,r))}))}))}}])}();return x}export{h as default};
1
+ import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as n,callSuper as o,defineProperty as i,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a}from"react/jsx-runtime";import s,{Component as u}from"react";import{Box as c,Tooltip as p,IconButton as d}from"@mui/material";import f from"@mui/icons-material/Edit";import m from"@mui/icons-material/Delete";import{mergeObjects as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import{MapTableBaseContext as g}from"./context.js";function h(h){var b=function(){function b(){var r;n(this,b);for(var e=arguments.length,u=new Array(e),c=0;c<e;c++)u[c]=arguments[c];return r=o(this,b,[].concat(u)),i(r,"getButtons",l().m((function r(e,n,o){var i,u,c,v,g,b,y,j,k,C,x,w,D,E;return l().w((function(r){for(;;)switch(r.n){case 0:if(!(k=null!==(i=null===(u=e.props)||void 0===u?void 0:u.before)&&void 0!==i?i:null==n?void 0:n.before)){r.n=1;break}return r.n=1,a(s.Fragment,{children:k(e.props.value,o)},"Before");case 1:if(C=null!==(c=null===(v=e.props)||void 0===v?void 0:v.formEdit)&&void 0!==c?c:null==n?void 0:n.formEdit,x=C?C(e.props.value,o):void 0,!C||!x){r.n=2;break}return r.n=2,a(p,{title:"Edit",arrow:!0,children:a(d,{color:"primary",onClick:function(){null==o||o.showModal(t({renderContent:function(){return x||a(s.Fragment,{})},sx:{display:"flex",justifyContent:"center",alignItems:"center"},backdropActivated:!0},null==h?void 0:h.buttonEditConfig))},children:a(f,{fontSize:"small"})})},"Edit");case 2:if(w=null!==(g=null===(b=e.props)||void 0===b?void 0:b.formDelete)&&void 0!==g?g:null==n?void 0:n.formDelete,D=w?w(e.props.value,o):void 0,!w||!D){r.n=3;break}return r.n=3,a(p,{title:"Delete",arrow:!0,children:a(d,{color:"error",onClick:function(){null==o||o.showModal(t({renderContent:function(){return D||a(s.Fragment,{})},sx:{display:"flex",justifyContent:"center",alignItems:"center"},backdropActivated:!0},null==h?void 0:h.buttonDeleteConfig))},children:a(m,{fontSize:"small"})})},"Delete");case 3:if(!(E=null!==(y=null===(j=e.props)||void 0===j?void 0:j.after)&&void 0!==y?y:null==n?void 0:n.after)){r.n=4;break}return r.n=4,a(s.Fragment,{children:E(e.props.value,o)},"After");case 4:return r.a(2)}}),r)}))),r}return r(b,u),e(b,[{key:"propsMerge",get:function(){return v(h,this.props)}},{key:"render",value:function(){var r=this;return g((function(e){return a(c,t(t({sx:{display:"flex",alignItems:"center",height:"100%"}},r.propsMerge.wrapProps),{},{children:Array.from(r.getButtons(r,r.propsMerge,e))}))}))}}])}();return b}export{h as default};
2
2
  //# sourceMappingURL=create.action-row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.action-row.js","sources":["../../src/table/create.action-row.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, IconButton, Tooltip } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport DeleteIcon from '@mui/icons-material/Delete'\r\nimport { mergeObjects } from '../utils'\r\nimport { GlobalModalState } from '../api-context'\r\nimport { ITableBaseContext, MapTableBaseContext } from './context'\r\n\r\nexport interface IActionRowProps<T> {\r\n value: T\r\n formEdit?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n formDelete?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n after?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n before?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n wrapProps?: BoxProps\r\n buttonEditConfig?: GlobalModalState\r\n buttonDeleteConfig?: GlobalModalState\r\n}\r\n\r\nfunction CreateActionRow<T>(params?: Omit<IActionRowProps<T>, 'value'>): ComponentType<IActionRowProps<T>> {\r\n class ActionRow extends Component<IActionRowProps<T>> {\r\n get propsMerge() {\r\n return mergeObjects<IActionRowProps<T>>(params, this.props)\r\n }\r\n\r\n getButtons = function* (that: ActionRow, thatProps: Omit<IActionRowProps<T>, 'value'>, tableContext: ITableBaseContext) {\r\n const beforeFunc = that.props?.before ?? thatProps?.before\r\n if (beforeFunc) {\r\n yield <React.Fragment key='Before'>{beforeFunc(that.props.value, tableContext)}</React.Fragment>\r\n }\r\n const editFunc = that.props?.formEdit ?? thatProps?.formEdit\r\n const editContent = editFunc ? editFunc(that.props.value, tableContext) : undefined\r\n if (editFunc && !!editContent) {\r\n yield (\r\n <Tooltip title='Edit' arrow key='Edit'>\r\n <IconButton\r\n color='primary'\r\n onClick={() => {\r\n tableContext?.showModal({\r\n renderContent: () => editContent || <React.Fragment />,\r\n sx: { display: 'flex', justifyContent: 'center', alignItems: 'center' },\r\n backdropActivated: true,\r\n ...params?.buttonEditConfig\r\n })\r\n }}\r\n >\r\n <EditIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )\r\n }\r\n const deleteFunc = that.props?.formDelete ?? thatProps?.formDelete\r\n const deleteContent = deleteFunc ? deleteFunc(that.props.value, tableContext) : undefined\r\n if (deleteFunc && !!deleteContent) {\r\n yield (\r\n <Tooltip title='Delete' arrow key='Delete'>\r\n <IconButton\r\n color='error'\r\n onClick={() => {\r\n tableContext?.showModal({\r\n renderContent: () => deleteContent || <React.Fragment />,\r\n sx: { display: 'flex', justifyContent: 'center', alignItems: 'center' },\r\n backdropActivated: true,\r\n ...params?.buttonDeleteConfig\r\n })\r\n }}\r\n >\r\n <DeleteIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )\r\n }\r\n const afterFunc = that.props?.after ?? thatProps?.after\r\n if (afterFunc) {\r\n yield <React.Fragment key='After'>{afterFunc(that.props.value, tableContext)}</React.Fragment>\r\n }\r\n }\r\n\r\n render() {\r\n return MapTableBaseContext((context) => (\r\n <Box sx={{ display: 'flex', alignItems: 'center', height: '100%' }} {...this.propsMerge.wrapProps}>\r\n {Array.from(this.getButtons(this, this.propsMerge, context))}\r\n </Box>\r\n ))\r\n }\r\n }\r\n\r\n return ActionRow\r\n}\r\nexport default CreateActionRow\r\n"],"names":["CreateActionRow","params","ActionRow","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_regeneratorRuntime","mark","_callee","that","thatProps","tableContext","_that$props$before","_that$props","_that$props$formEdit","_that$props2","_that$props$formDelet","_that$props3","_that$props$after","_that$props4","beforeFunc","editFunc","editContent","deleteFunc","deleteContent","afterFunc","wrap","_context","prev","next","props","before","_jsx","React","Fragment","children","value","formEdit","undefined","Tooltip","title","arrow","IconButton","color","onClick","showModal","_objectSpread","renderContent","sx","display","justifyContent","alignItems","backdropActivated","buttonEditConfig","EditIcon","fontSize","formDelete","buttonDeleteConfig","DeleteIcon","after","stop","_inherits","Component","_createClass","key","get","mergeObjects","_this2","MapTableBaseContext","context","Box","height","propsMerge","wrapProps","from","getButtons"],"mappings":"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"}
1
+ {"version":3,"file":"create.action-row.js","sources":["../../src/table/create.action-row.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, IconButton, Tooltip } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport DeleteIcon from '@mui/icons-material/Delete'\r\nimport { mergeObjects } from '../utils'\r\nimport { GlobalModalState } from '../api-context'\r\nimport { ITableBaseContext, MapTableBaseContext } from './context'\r\n\r\nexport interface IActionRowProps<T> {\r\n value: T\r\n formEdit?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n formDelete?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n after?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n before?: (value: T, tableContext: ITableBaseContext) => React.ReactNode\r\n wrapProps?: BoxProps\r\n buttonEditConfig?: GlobalModalState\r\n buttonDeleteConfig?: GlobalModalState\r\n}\r\n\r\nfunction CreateActionRow<T>(params?: Omit<IActionRowProps<T>, 'value'>): ComponentType<IActionRowProps<T>> {\r\n class ActionRow extends Component<IActionRowProps<T>> {\r\n get propsMerge() {\r\n return mergeObjects<IActionRowProps<T>>(params, this.props)\r\n }\r\n\r\n getButtons = function* (that: ActionRow, thatProps: Omit<IActionRowProps<T>, 'value'>, tableContext: ITableBaseContext) {\r\n const beforeFunc = that.props?.before ?? thatProps?.before\r\n if (beforeFunc) {\r\n yield <React.Fragment key='Before'>{beforeFunc(that.props.value, tableContext)}</React.Fragment>\r\n }\r\n const editFunc = that.props?.formEdit ?? thatProps?.formEdit\r\n const editContent = editFunc ? editFunc(that.props.value, tableContext) : undefined\r\n if (editFunc && !!editContent) {\r\n yield (\r\n <Tooltip title='Edit' arrow key='Edit'>\r\n <IconButton\r\n color='primary'\r\n onClick={() => {\r\n tableContext?.showModal({\r\n renderContent: () => editContent || <React.Fragment />,\r\n sx: { display: 'flex', justifyContent: 'center', alignItems: 'center' },\r\n backdropActivated: true,\r\n ...params?.buttonEditConfig\r\n })\r\n }}\r\n >\r\n <EditIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )\r\n }\r\n const deleteFunc = that.props?.formDelete ?? thatProps?.formDelete\r\n const deleteContent = deleteFunc ? deleteFunc(that.props.value, tableContext) : undefined\r\n if (deleteFunc && !!deleteContent) {\r\n yield (\r\n <Tooltip title='Delete' arrow key='Delete'>\r\n <IconButton\r\n color='error'\r\n onClick={() => {\r\n tableContext?.showModal({\r\n renderContent: () => deleteContent || <React.Fragment />,\r\n sx: { display: 'flex', justifyContent: 'center', alignItems: 'center' },\r\n backdropActivated: true,\r\n ...params?.buttonDeleteConfig\r\n })\r\n }}\r\n >\r\n <DeleteIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )\r\n }\r\n const afterFunc = that.props?.after ?? thatProps?.after\r\n if (afterFunc) {\r\n yield <React.Fragment key='After'>{afterFunc(that.props.value, tableContext)}</React.Fragment>\r\n }\r\n }\r\n\r\n render() {\r\n return MapTableBaseContext((context) => (\r\n <Box sx={{ display: 'flex', alignItems: 'center', height: '100%' }} {...this.propsMerge.wrapProps}>\r\n {Array.from(this.getButtons(this, this.propsMerge, context))}\r\n </Box>\r\n ))\r\n }\r\n }\r\n\r\n return ActionRow\r\n}\r\nexport default CreateActionRow\r\n"],"names":["CreateActionRow","params","ActionRow","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_regenerator","m","_callee","that","thatProps","tableContext","_that$props$before","_that$props","_that$props$formEdit","_that$props2","_that$props$formDelet","_that$props3","_that$props$after","_that$props4","beforeFunc","editFunc","editContent","deleteFunc","deleteContent","afterFunc","w","_context","n","props","before","_jsx","React","Fragment","children","value","formEdit","undefined","Tooltip","title","arrow","IconButton","color","onClick","showModal","_objectSpread","renderContent","sx","display","justifyContent","alignItems","backdropActivated","buttonEditConfig","EditIcon","fontSize","formDelete","buttonDeleteConfig","DeleteIcon","after","a","_inherits","Component","_createClass","key","get","mergeObjects","_this2","MapTableBaseContext","context","Box","height","propsMerge","wrapProps","from","getButtons"],"mappings":"glBAmBA,SAASA,EAAmBC,GAA0C,IAC9DC,aAAU,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAwDb,OAxDaP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAAY,aAAAA,IAAAC,GAKD,SAAAC,EAAWC,EAAiBC,EAA8CC,GAA+B,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAnB,IAAAoB,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAC1D,KAApDR,EAA+B,QAArBR,EAAaC,QAAbA,EAAGJ,EAAKoB,aAALhB,IAAUA,OAAVA,EAAAA,EAAYiB,cAAM,IAAAlB,EAAAA,EAAIF,aAAS,EAATA,EAAWoB,QACtC,CAAAH,EAAAC,EAAA,EAAA,KAAA,CACZ,OADYD,EAAAC,EAAA,EACNG,EAACC,EAAMC,SAAuB,CAAAC,SAAAd,EAAWX,EAAKoB,MAAMM,MAAOxB,IAAvC,UAAsE,KAAA,EAGf,GAD7EU,EAA+B,QAAvBP,EAAaC,QAAbA,EAAGN,EAAKoB,aAALd,IAAUA,OAAVA,EAAAA,EAAYqB,gBAAQ,IAAAtB,EAAAA,EAAIJ,aAAS,EAATA,EAAW0B,SAC9Cd,EAAcD,EAAWA,EAASZ,EAAKoB,MAAMM,MAAOxB,QAAgB0B,GACtEhB,IAAcC,EAAW,CAAAK,EAAAC,EAAA,EAAA,KAAA,CAC3B,OAD2BD,EAAAC,EAAA,EAEzBG,EAACO,EAAO,CAACC,MAAM,OAAOC,OAAK,EAAAN,SACzBH,EAACU,EAAU,CACTC,MAAM,UACNC,QAAS,WACPhC,SAAAA,EAAciC,UAASC,EAAA,CACrBC,cAAe,WAAF,OAAQxB,GAAeS,EAACC,EAAMC,SAAW,CAAA,EAAA,EACtDc,GAAI,CAAEC,QAAS,OAAQC,eAAgB,SAAUC,WAAY,UAC7DC,mBAAmB,GAChB3D,aAAM,EAANA,EAAQ4D,kBAEd,EAEDlB,SAAAH,EAACsB,EAAQ,CAACC,SAAS,aAZS,QAejC,KAAA,EAGsF,GADnF/B,EAAmC,QAAzBP,EAAaC,QAAbA,EAAGR,EAAKoB,aAALZ,IAAUA,OAAVA,EAAAA,EAAYsC,kBAAU,IAAAvC,EAAAA,EAAIN,aAAS,EAATA,EAAW6C,WAClD/B,EAAgBD,EAAaA,EAAWd,EAAKoB,MAAMM,MAAOxB,QAAgB0B,GAC5Ed,IAAgBC,EAAa,CAAAG,EAAAC,EAAA,EAAA,KAAA,CAC/B,OAD+BD,EAAAC,EAAA,EAE7BG,EAACO,EAAO,CAACC,MAAM,SAASC,OAAK,EAAAN,SAC3BH,EAACU,EAAU,CACTC,MAAM,QACNC,QAAS,WACPhC,SAAAA,EAAciC,UAASC,EAAA,CACrBC,cAAe,WAAF,OAAQtB,GAAiBO,EAACC,EAAMC,SAAW,CAAA,EAAA,EACxDc,GAAI,CAAEC,QAAS,OAAQC,eAAgB,SAAUC,WAAY,UAC7DC,mBAAmB,GAChB3D,aAAM,EAANA,EAAQgE,oBAEd,EAEDtB,SAAAH,EAAC0B,EAAU,CAACH,SAAS,aAZS,UAenC,KAAA,EAEoD,KAAjD7B,EAA6B,QAApBP,EAAaC,QAAbA,EAAGV,EAAKoB,aAALV,IAAUA,OAAVA,EAAAA,EAAYuC,aAAK,IAAAxC,EAAAA,EAAIR,aAAS,EAATA,EAAWgD,OACrC,CAAA/B,EAAAC,EAAA,EAAA,KAAA,CACX,OADWD,EAAAC,EAAA,EACLG,EAACC,EAAMC,SAAsB,CAAAC,SAAAT,EAAUhB,EAAKoB,MAAMM,MAAOxB,IAArC,SAAoE,KAAA,EAAA,OAAAgB,EAAAgC,EAAA,GAAA,GAAAnD,OAEjGd,CAAA,CAAA,OAAAkE,EAAAnE,EAxDqBoE,GAwDrBC,EAAArE,EAAA,CAAA,CAAAsE,IAAA,aAAAC,IAvDD,WACE,OAAOC,EAAiCzE,EAAQW,KAAK0B,MACvD,GAAC,CAAAkC,IAAA,SAAA5B,MAuDD,WAAM,IAAA+B,EAAA/D,KACJ,OAAOgE,GAAoB,SAACC,GAAO,OACjCrC,EAACsC,EAAGxB,EAAAA,EAAA,CAACE,GAAI,CAAEC,QAAS,OAAQE,WAAY,SAAUoB,OAAQ,SAAcJ,EAAKK,WAAWC,WAAS,CAAA,EAAA,CAAAtC,SAC9FlC,MAAMyE,KAAKP,EAAKQ,WAAWR,EAAMA,EAAKK,WAAYH,MAC/C,GAEV,IAAC,IAGH,OAAO3E,CACT"}
@@ -1,5 +1,6 @@
1
1
  export declare const sleep: (sec: number) => Promise<unknown>;
2
2
  export declare const fetchDelay: <TModel>(action: () => Promise<TModel>, sec: number) => Promise<TModel>;
3
+ export declare const isGuid: (value: string) => boolean;
3
4
  export declare const windowScrollToTop: (options?: ScrollToOptions, delay?: number) => void;
4
5
  export declare const mergeClasses: (...classes: string[]) => string;
5
6
  type DeepPartial<T> = {
@@ -1,2 +1,2 @@
1
- import{slicedToArray as r,asyncToGenerator as t,typeof as n,regeneratorRuntime as e,objectSpread2 as o,toArray as a}from"../_virtual/_rollupPluginBabelHelpers.js";import c from"dayjs";var i=function(r){return new Promise((function(t){return setTimeout(t,r)}))},u=function(){var n=t(e().mark((function t(n,o){var a,c,u;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all([n(),i(o)]);case 2:return a=t.sent,c=r(a,1),u=c[0],t.abrupt("return",u);case 6:case"end":return t.stop()}}),t)})));return function(r,t){return n.apply(this,arguments)}}(),f=function(r,t){setTimeout((function(){window.scrollTo(o({top:0,left:0,behavior:"smooth"},r))}),t||50)},s=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.join(" ")},l=function(r){return r&&"object"===n(r)&&!Array.isArray(r)},d=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.reduce((function(r,t){return t?(Object.keys(t).forEach((function(n){l(r[n])&&l(t[n])?r[n]=d(r[n],t[n]):r[n]=t[n]})),r):r}),{})},v=function(t){try{return t?Object.entries(t).reduce((function(t,n){var e=r(n,2),o=e[0],a=e[1];return void 0!==a&&(t[o]=a),t}),{}):{}}catch(r){return{}}},h=function(r){try{var t=(new TextEncoder).encode(r),n="";return t.forEach((function(r){n+=String.fromCharCode(r)})),btoa(n)}catch(r){return console.error("Error encoding to base64",r),""}},p=function(r){try{for(var t=atob(r),n=new Uint8Array(t.length),e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return(new TextDecoder).decode(n)}catch(r){return void console.error("Error decoding base64",r)}},y=function(r,t){try{if(!r)throw new Error("Value is required!");return JSON.parse(r)}catch(r){return t}},m=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{if(!r)return[];var n=JSON.parse(r);return Array.isArray(n)?n:[]}catch(r){return t}},g=function(r,t){try{return r?parseInt(r):t}catch(r){return t}},w=function(r){return new Promise((function(t,n){var e=new FileReader;e.onload=function(){try{var r=e.result.split(/\r?\n/).filter(Boolean);if(r.length<1)return t([]);var n=r[0].split(",").map((function(r){return r.trim()})),o=r.slice(1).map((function(r){var t=r.split(",").map((function(r){return r.trim()})),e={};return n.forEach((function(r,n){var o;e[r]=null!==(o=t[n])&&void 0!==o?o:""})),e}));t(o)}catch(r){t([])}},e.onerror=function(){n(new Error("Error reading file"))},e.readAsText(r)}))},b=function(r){return r<1024?r.toFixed(2)+" Kb":r<1048576?(r/1024).toFixed(2)+" Mb":r<1073741824?(r/1048576).toFixed(2)+" Gb":(r/1073741824).toFixed(2)+" Tb"},A=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"$ ",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";try{n=parseFloat(t),isNaN(n)&&(n=0)}catch(r){n=0}var a=n.toFixed(2).split("."),c=r(a,2),i=c[0],u=c[1],f=i.replace(/\B(?=(\d{3})+(?!\d))/g," "),s=f;return"00"!==u&&(s="".concat(f,".").concat(u)),"".concat(e).concat(s).concat(o)},Y=function(r){return r.toLocaleString("en-US")},x=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!r)return r;var t=Array.from(r),n=a(t),e=n[0],o=n.slice(1);return"".concat(e.toUpperCase()).concat(o.join(""))},E={style1:"DD/MM/YYYY HH:mm",style2:"MMMM D, YYYY",style3:"MM-DD-YYYY"},j=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"style1";try{if(!r)throw new Error;return c(r).format(E[t])}catch(r){return"unknown"}};export{v as cleanObject,p as decodeBase64,h as encodeBase64,u as fetchDelay,x as formatCapitalizeFirstText,A as formatCurrency,j as formatDatetime,b as formatFileSize,Y as formatNumberWithCommas,s as mergeClasses,d as mergeObjects,i as sleep,m as tryParseArray,w as tryParseCsvFileToArray,g as tryParseIntRequired,y as tryParseObject,f as windowScrollToTop};
1
+ import{slicedToArray as r,asyncToGenerator as n,typeof as t,regenerator as e,objectSpread2 as o,toArray as a}from"../_virtual/_rollupPluginBabelHelpers.js";import c from"dayjs";var i=function(r){return new Promise((function(n){return setTimeout(n,r)}))},u=function(){var t=n(e().m((function n(t,o){var a,c,u;return e().w((function(n){for(;;)switch(n.n){case 0:return n.n=1,Promise.all([t(),i(o)]);case 1:return a=n.v,c=r(a,1),u=c[0],n.a(2,u)}}),n)})));return function(r,n){return t.apply(this,arguments)}}(),f=function(r){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(r)},s=function(r,n){setTimeout((function(){window.scrollTo(o({top:0,left:0,behavior:"smooth"},r))}),n||50)},l=function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++)n[t]=arguments[t];return n.join(" ")},d=function(r){return r&&"object"===t(r)&&!Array.isArray(r)},v=function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++)n[t]=arguments[t];return n.reduce((function(r,n){return n?(Object.keys(n).forEach((function(t){d(r[t])&&d(n[t])?r[t]=v(r[t],n[t]):r[t]=n[t]})),r):r}),{})},h=function(n){try{return n?Object.entries(n).reduce((function(n,t){var e=r(t,2),o=e[0],a=e[1];return void 0!==a&&(n[o]=a),n}),{}):{}}catch(r){return{}}},y=function(r){try{var n=(new TextEncoder).encode(r),t="";return n.forEach((function(r){t+=String.fromCharCode(r)})),btoa(t)}catch(r){return console.error("Error encoding to base64",r),""}},p=function(r){try{for(var n=atob(r),t=new Uint8Array(n.length),e=0;e<n.length;e++)t[e]=n.charCodeAt(e);return(new TextDecoder).decode(t)}catch(r){return void console.error("Error decoding base64",r)}},m=function(r,n){try{if(!r)throw new Error("Value is required!");return JSON.parse(r)}catch(r){return n}},g=function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{if(!r)return[];var t=JSON.parse(r);return Array.isArray(t)?t:[]}catch(r){return n}},w=function(r,n){try{return r?parseInt(r):n}catch(r){return n}},A=function(r){return new Promise((function(n,t){var e=new FileReader;e.onload=function(){try{var r=e.result.split(/\r?\n/).filter(Boolean);if(r.length<1)return n([]);var t=r[0].split(",").map((function(r){return r.trim()})),o=r.slice(1).map((function(r){var n=r.split(",").map((function(r){return r.trim()})),e={};return t.forEach((function(r,t){var o;e[r]=null!==(o=n[t])&&void 0!==o?o:""})),e}));n(o)}catch(r){n([])}},e.onerror=function(){t(new Error("Error reading file"))},e.readAsText(r)}))},b=function(r){return r<1024?r.toFixed(2)+" Kb":r<1048576?(r/1024).toFixed(2)+" Mb":r<1073741824?(r/1048576).toFixed(2)+" Gb":(r/1073741824).toFixed(2)+" Tb"},F=function(n){var t,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"$ ",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";try{t=parseFloat(n),isNaN(t)&&(t=0)}catch(r){t=0}var a=t.toFixed(2).split("."),c=r(a,2),i=c[0],u=c[1],f=i.replace(/\B(?=(\d{3})+(?!\d))/g," "),s=f;return"00"!==u&&(s="".concat(f,".").concat(u)),"".concat(e).concat(s).concat(o)},Y=function(r){return r.toLocaleString("en-US")},E=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!r)return r;var n=Array.from(r),t=a(n),e=t[0],o=t.slice(1);return"".concat(e.toUpperCase()).concat(o.join(""))},j={style1:"DD/MM/YYYY HH:mm",style2:"MMMM D, YYYY",style3:"MM-DD-YYYY"},x=function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"style1";try{if(!r)throw new Error;return c(r).format(j[n])}catch(r){return"unknown"}};export{h as cleanObject,p as decodeBase64,y as encodeBase64,u as fetchDelay,E as formatCapitalizeFirstText,F as formatCurrency,x as formatDatetime,b as formatFileSize,Y as formatNumberWithCommas,f as isGuid,l as mergeClasses,v as mergeObjects,i as sleep,g as tryParseArray,A as tryParseCsvFileToArray,w as tryParseIntRequired,m as tryParseObject,s as windowScrollToTop};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\nexport const windowScrollToTop = (options?: ScrollToOptions, delay?: number) => {\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth', ...options })\r\n }, delay || 50)\r\n}\r\n\r\nexport const mergeClasses = (...classes: string[]) => {\r\n return classes.join(' ')\r\n}\r\n\r\n/**\r\n * Simple object check.\r\n * @param item\r\n * @returns {boolean}\r\n */\r\nconst isObject = (obj: any) => {\r\n return obj && typeof obj === 'object' && !Array.isArray(obj)\r\n}\r\n\r\ntype DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] } | undefined\r\n\r\nexport const mergeObjects = <T>(...objects: DeepPartial<T>[]): T => {\r\n return objects.reduce((prev, obj) => {\r\n if (!obj) return prev\r\n Object.keys(obj).forEach((key) => {\r\n if (isObject((prev as any)[key]) && isObject((obj as any)[key])) {\r\n ;(prev as any)[key] = mergeObjects((prev as any)[key], (obj as any)[key])\r\n } else {\r\n ;(prev as any)[key] = (obj as any)[key]\r\n }\r\n })\r\n return prev\r\n }, {} as T) as any\r\n}\r\n\r\nexport const cleanObject = <T extends object>(obj: T): Partial<T> => {\r\n try {\r\n if (!obj) return {}\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (value !== undefined) {\r\n ;(acc as any)[key] = value\r\n }\r\n return acc\r\n }, {} as Partial<T>)\r\n } catch (error) {\r\n return {}\r\n }\r\n}\r\n\r\nexport const encodeBase64 = (input: string): string => {\r\n try {\r\n const utf8Bytes = new TextEncoder().encode(input)\r\n let binaryString = ''\r\n utf8Bytes.forEach((byte) => {\r\n binaryString += String.fromCharCode(byte)\r\n })\r\n return btoa(binaryString)\r\n } catch (error) {\r\n console.error('Error encoding to base64', error)\r\n return ''\r\n }\r\n}\r\n\r\nexport const decodeBase64 = (encoded: string): string | undefined => {\r\n try {\r\n const binaryString = atob(encoded)\r\n const utf8Bytes = new Uint8Array(binaryString.length)\r\n for (let i = 0; i < binaryString.length; i++) {\r\n utf8Bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return new TextDecoder().decode(utf8Bytes)\r\n } catch (error) {\r\n console.error('Error decoding base64', error)\r\n return\r\n }\r\n}\r\n\r\n//#region Try Parse\r\nexport const tryParseObject = function <T>(value: any, defaultValue: T): T {\r\n try {\r\n if (!value) {\r\n throw new Error('Value is required!')\r\n }\r\n return JSON.parse(value)\r\n } catch {\r\n // console.log(error)\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseArray = function <T>(value: any, defaultValue: T[] = []): T[] {\r\n try {\r\n if (!value) return []\r\n const parseValue = JSON.parse(value)\r\n return Array.isArray(parseValue) ? parseValue : []\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseIntRequired = function (value: any, defaultValue: number): number {\r\n try {\r\n if (!value) return defaultValue\r\n return parseInt(value)\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseCsvFileToArray = (file: File): Promise<Record<string, string>[]> => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n\r\n reader.onload = () => {\r\n try {\r\n const text = reader.result as string\r\n const rows = text.split(/\\r?\\n/).filter(Boolean)\r\n\r\n if (rows.length < 1) return resolve([])\r\n\r\n const headers = rows[0].split(',').map((h) => h.trim())\r\n\r\n const data = rows.slice(1).map((row) => {\r\n const values = row.split(',').map((v) => v.trim())\r\n const item: Record<string, string> = {}\r\n\r\n headers.forEach((header, index) => {\r\n item[header] = values[index] ?? ''\r\n })\r\n\r\n return item\r\n })\r\n\r\n resolve(data)\r\n } catch (error) {\r\n resolve([])\r\n }\r\n }\r\n\r\n reader.onerror = () => {\r\n reject(new Error('Error reading file'))\r\n }\r\n\r\n reader.readAsText(file)\r\n })\r\n}\r\n//#endregion\r\n\r\n//#region Format\r\nexport const formatFileSize = (sizeInKb: number) => {\r\n if (sizeInKb < 1024) {\r\n return sizeInKb.toFixed(2) + ' Kb'\r\n } else if (sizeInKb < 1024 * 1024) {\r\n return (sizeInKb / 1024).toFixed(2) + ' Mb'\r\n } else if (sizeInKb < 1024 * 1024 * 1024) {\r\n return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb'\r\n } else {\r\n return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb'\r\n }\r\n}\r\n\r\nexport const formatCurrency = (value?: any, prefix = '$ ', suffix = ''): string => {\r\n let parsedValue\r\n try {\r\n parsedValue = parseFloat(value)\r\n if (isNaN(parsedValue)) parsedValue = 0\r\n } catch (e) {\r\n parsedValue = 0\r\n }\r\n const roundedValue = parsedValue.toFixed(2)\r\n const [integerPart, decimalPart] = roundedValue.split('.')\r\n const formattedIntegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\r\n\r\n let formattedValue = formattedIntegerPart\r\n if (decimalPart !== '00') {\r\n formattedValue = `${formattedIntegerPart}.${decimalPart}`\r\n }\r\n return `${prefix}${formattedValue}${suffix}`\r\n}\r\n\r\nexport const formatNumberWithCommas = (number: number): string => {\r\n return number.toLocaleString('en-US')\r\n}\r\n\r\nexport const formatCapitalizeFirstText = (value: string = '') => {\r\n if (!value) return value\r\n const [first, ...data] = Array.from(value)\r\n return `${first.toUpperCase()}${data.join('')}`\r\n}\r\n\r\nconst formatDatetimeStyle = {\r\n style1: 'DD/MM/YYYY HH:mm',\r\n style2: 'MMMM D, YYYY',\r\n style3: 'MM-DD-YYYY'\r\n}\r\n\r\n/**\r\n * Formats a datetime string using one of the predefined styles.\r\n *\r\n * Available format styles:\r\n * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'\r\n * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'\r\n * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'\r\n * @param value - A datetime string (ISO format or any format parsable by dayjs).\r\n * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.\r\n * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.\r\n */\r\nexport const formatDatetime = (value: string, format: keyof typeof formatDatetimeStyle = 'style1'): string => {\r\n try {\r\n if (!value) throw new Error()\r\n return dayjs(value).format(formatDatetimeStyle[format])\r\n } catch (error) {\r\n return 'unknown'\r\n }\r\n}\r\n//#endregion\r\n"],"names":["sleep","sec","Promise","res","setTimeout","fetchDelay","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","action","_yield$Promise$all","_yield$Promise$all2","wrap","_context","prev","next","all","sent","_slicedToArray","abrupt","stop","_x","_x2","apply","this","arguments","windowScrollToTop","options","delay","window","scrollTo","_objectSpread","top","left","behavior","mergeClasses","_len","length","classes","Array","_key","join","isObject","obj","_typeof","isArray","mergeObjects","_len2","objects","_key2","reduce","Object","keys","forEach","key","cleanObject","entries","acc","_ref2","_ref3","value","undefined","error","encodeBase64","input","utf8Bytes","TextEncoder","encode","binaryString","byte","String","fromCharCode","btoa","console","decodeBase64","encoded","atob","Uint8Array","i","charCodeAt","TextDecoder","decode","tryParseObject","defaultValue","Error","JSON","parse","_unused","tryParseArray","parseValue","_unused2","tryParseIntRequired","parseInt","_unused3","tryParseCsvFileToArray","file","resolve","reject","reader","FileReader","onload","rows","result","split","filter","Boolean","headers","map","h","trim","data","slice","row","values","v","item","header","index","_values$index","onerror","readAsText","formatFileSize","sizeInKb","toFixed","formatCurrency","parsedValue","prefix","suffix","parseFloat","isNaN","e","_roundedValue$split","_roundedValue$split2","integerPart","decimalPart","formattedIntegerPart","replace","formattedValue","concat","formatNumberWithCommas","number","toLocaleString","formatCapitalizeFirstText","_Array$from","from","_Array$from2","_toArray","first","toUpperCase","formatDatetimeStyle","style1","style2","style3","formatDatetime","format","dayjs"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\nexport const isGuid = (value: string): boolean => {\r\n const guidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/\r\n return guidRegex.test(value)\r\n}\r\n\r\nexport const windowScrollToTop = (options?: ScrollToOptions, delay?: number) => {\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth', ...options })\r\n }, delay || 50)\r\n}\r\n\r\nexport const mergeClasses = (...classes: string[]) => {\r\n return classes.join(' ')\r\n}\r\n\r\n/**\r\n * Simple object check.\r\n * @param item\r\n * @returns {boolean}\r\n */\r\nconst isObject = (obj: any) => {\r\n return obj && typeof obj === 'object' && !Array.isArray(obj)\r\n}\r\n\r\ntype DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] } | undefined\r\n\r\nexport const mergeObjects = <T>(...objects: DeepPartial<T>[]): T => {\r\n return objects.reduce((prev, obj) => {\r\n if (!obj) return prev\r\n Object.keys(obj).forEach((key) => {\r\n if (isObject((prev as any)[key]) && isObject((obj as any)[key])) {\r\n ;(prev as any)[key] = mergeObjects((prev as any)[key], (obj as any)[key])\r\n } else {\r\n ;(prev as any)[key] = (obj as any)[key]\r\n }\r\n })\r\n return prev\r\n }, {} as T) as any\r\n}\r\n\r\nexport const cleanObject = <T extends object>(obj: T): Partial<T> => {\r\n try {\r\n if (!obj) return {}\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (value !== undefined) {\r\n ;(acc as any)[key] = value\r\n }\r\n return acc\r\n }, {} as Partial<T>)\r\n } catch (error) {\r\n return {}\r\n }\r\n}\r\n\r\nexport const encodeBase64 = (input: string): string => {\r\n try {\r\n const utf8Bytes = new TextEncoder().encode(input)\r\n let binaryString = ''\r\n utf8Bytes.forEach((byte) => {\r\n binaryString += String.fromCharCode(byte)\r\n })\r\n return btoa(binaryString)\r\n } catch (error) {\r\n console.error('Error encoding to base64', error)\r\n return ''\r\n }\r\n}\r\n\r\nexport const decodeBase64 = (encoded: string): string | undefined => {\r\n try {\r\n const binaryString = atob(encoded)\r\n const utf8Bytes = new Uint8Array(binaryString.length)\r\n for (let i = 0; i < binaryString.length; i++) {\r\n utf8Bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return new TextDecoder().decode(utf8Bytes)\r\n } catch (error) {\r\n console.error('Error decoding base64', error)\r\n return\r\n }\r\n}\r\n\r\n//#region Try Parse\r\nexport const tryParseObject = function <T>(value: any, defaultValue: T): T {\r\n try {\r\n if (!value) {\r\n throw new Error('Value is required!')\r\n }\r\n return JSON.parse(value)\r\n } catch {\r\n // console.log(error)\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseArray = function <T>(value: any, defaultValue: T[] = []): T[] {\r\n try {\r\n if (!value) return []\r\n const parseValue = JSON.parse(value)\r\n return Array.isArray(parseValue) ? parseValue : []\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseIntRequired = function (value: any, defaultValue: number): number {\r\n try {\r\n if (!value) return defaultValue\r\n return parseInt(value)\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseCsvFileToArray = (file: File): Promise<Record<string, string>[]> => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n\r\n reader.onload = () => {\r\n try {\r\n const text = reader.result as string\r\n const rows = text.split(/\\r?\\n/).filter(Boolean)\r\n\r\n if (rows.length < 1) return resolve([])\r\n\r\n const headers = rows[0].split(',').map((h) => h.trim())\r\n\r\n const data = rows.slice(1).map((row) => {\r\n const values = row.split(',').map((v) => v.trim())\r\n const item: Record<string, string> = {}\r\n\r\n headers.forEach((header, index) => {\r\n item[header] = values[index] ?? ''\r\n })\r\n\r\n return item\r\n })\r\n\r\n resolve(data)\r\n } catch (error) {\r\n resolve([])\r\n }\r\n }\r\n\r\n reader.onerror = () => {\r\n reject(new Error('Error reading file'))\r\n }\r\n\r\n reader.readAsText(file)\r\n })\r\n}\r\n//#endregion\r\n\r\n//#region Format\r\nexport const formatFileSize = (sizeInKb: number) => {\r\n if (sizeInKb < 1024) {\r\n return sizeInKb.toFixed(2) + ' Kb'\r\n } else if (sizeInKb < 1024 * 1024) {\r\n return (sizeInKb / 1024).toFixed(2) + ' Mb'\r\n } else if (sizeInKb < 1024 * 1024 * 1024) {\r\n return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb'\r\n } else {\r\n return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb'\r\n }\r\n}\r\n\r\nexport const formatCurrency = (value?: any, prefix = '$ ', suffix = ''): string => {\r\n let parsedValue\r\n try {\r\n parsedValue = parseFloat(value)\r\n if (isNaN(parsedValue)) parsedValue = 0\r\n } catch (e) {\r\n parsedValue = 0\r\n }\r\n const roundedValue = parsedValue.toFixed(2)\r\n const [integerPart, decimalPart] = roundedValue.split('.')\r\n const formattedIntegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\r\n\r\n let formattedValue = formattedIntegerPart\r\n if (decimalPart !== '00') {\r\n formattedValue = `${formattedIntegerPart}.${decimalPart}`\r\n }\r\n return `${prefix}${formattedValue}${suffix}`\r\n}\r\n\r\nexport const formatNumberWithCommas = (number: number): string => {\r\n return number.toLocaleString('en-US')\r\n}\r\n\r\nexport const formatCapitalizeFirstText = (value: string = '') => {\r\n if (!value) return value\r\n const [first, ...data] = Array.from(value)\r\n return `${first.toUpperCase()}${data.join('')}`\r\n}\r\n\r\nconst formatDatetimeStyle = {\r\n style1: 'DD/MM/YYYY HH:mm',\r\n style2: 'MMMM D, YYYY',\r\n style3: 'MM-DD-YYYY'\r\n}\r\n\r\n/**\r\n * Formats a datetime string using one of the predefined styles.\r\n *\r\n * Available format styles:\r\n * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'\r\n * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'\r\n * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'\r\n * @param value - A datetime string (ISO format or any format parsable by dayjs).\r\n * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.\r\n * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.\r\n */\r\nexport const formatDatetime = (value: string, format: keyof typeof formatDatetimeStyle = 'style1'): string => {\r\n try {\r\n if (!value) throw new Error()\r\n return dayjs(value).format(formatDatetimeStyle[format])\r\n } catch (error) {\r\n return 'unknown'\r\n }\r\n}\r\n//#endregion\r\n"],"names":["sleep","sec","Promise","res","setTimeout","fetchDelay","_ref","_asyncToGenerator","_regenerator","m","_callee","action","_yield$Promise$all","_yield$Promise$all2","w","_context","n","all","v","_slicedToArray","a","_x","_x2","apply","this","arguments","isGuid","value","test","windowScrollToTop","options","delay","window","scrollTo","_objectSpread","top","left","behavior","mergeClasses","_len","length","classes","Array","_key","join","isObject","obj","_typeof","isArray","mergeObjects","_len2","objects","_key2","reduce","prev","Object","keys","forEach","key","cleanObject","entries","acc","_ref2","_ref3","undefined","error","encodeBase64","input","utf8Bytes","TextEncoder","encode","binaryString","byte","String","fromCharCode","btoa","console","decodeBase64","encoded","atob","Uint8Array","i","charCodeAt","TextDecoder","decode","tryParseObject","defaultValue","Error","JSON","parse","_unused","tryParseArray","parseValue","_unused2","tryParseIntRequired","parseInt","_unused3","tryParseCsvFileToArray","file","resolve","reject","reader","FileReader","onload","rows","result","split","filter","Boolean","headers","map","h","trim","data","slice","row","values","item","header","index","_values$index","onerror","readAsText","formatFileSize","sizeInKb","toFixed","formatCurrency","parsedValue","prefix","suffix","parseFloat","isNaN","e","_roundedValue$split","_roundedValue$split2","integerPart","decimalPart","formattedIntegerPart","replace","formattedValue","concat","formatNumberWithCommas","number","toLocaleString","formatCapitalizeFirstText","_Array$from","from","_Array$from2","_toArray","first","toUpperCase","formatDatetimeStyle","style1","style2","style3","formatDatetime","format","dayjs"],"mappings":"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"}
package/package.json CHANGED
@@ -1,64 +1,64 @@
1
- {
2
- "name": "dinocollab-core",
3
- "version": "1.0.25",
4
- "description": "",
5
- "main": "dist/index.js",
6
- "module": "dist/index.js",
7
- "types": "dist/types/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": "./dist/index.js",
11
- "types": "./dist/types/index.d.ts"
12
- }
13
- },
14
- "files": [
15
- "dist"
16
- ],
17
- "scripts": {
18
- "build": "npx rimraf dist && rollup -c",
19
- "build:watch": "rollup -c -w"
20
- },
21
- "keywords": [],
22
- "author": "",
23
- "license": "ISC",
24
- "peerDependencies": {
25
- "@emotion/react": "11.14.0",
26
- "@emotion/styled": "11.14.0",
27
- "@mui/icons-material": "5.17.1",
28
- "@mui/material": "5.17.1",
29
- "@mui/x-data-grid": "6.20.4",
30
- "@mui/x-date-pickers": "6.20.2",
31
- "axios": "1.8.3",
32
- "clipboard-copy": "4.0.1",
33
- "dayjs": "1.11.5",
34
- "dotenv": "16.4.7",
35
- "query-string": "9.1.1",
36
- "react": "18.3.1",
37
- "react-dom": "18.3.1",
38
- "react-quill": "2.0.0",
39
- "react-router-dom": "6.30.0"
40
- },
41
- "devDependencies": {
42
- "@babel/core": "7.27.1",
43
- "@babel/preset-env": "7.27.2",
44
- "@babel/preset-react": "7.27.1",
45
- "@babel/preset-typescript": "7.27.1",
46
- "@rollup/plugin-babel": "6.0.4",
47
- "@rollup/plugin-commonjs": "28.0.3",
48
- "@rollup/plugin-node-resolve": "16.0.1",
49
- "@rollup/plugin-typescript": "12.1.2",
50
- "@rollup/plugin-url": "8.0.2",
51
- "@types/node": "16.18.126",
52
- "@types/react": "18.3.20",
53
- "@types/react-dom": "18.3.5",
54
- "babel-preset-react": "6.24.1",
55
- "babel-preset-typescript": "7.0.0-alpha.19",
56
- "rollup": "4.41.0",
57
- "rollup-plugin-copy": "3.5.0",
58
- "rollup-plugin-peer-deps-external": "2.2.4",
59
- "rollup-plugin-postcss": "4.0.2",
60
- "rollup-plugin-terser": "7.0.2",
61
- "tslib": "2.8.1",
62
- "typescript": "4.9.5"
63
- }
64
- }
1
+ {
2
+ "name": "dinocollab-core",
3
+ "version": "1.0.26",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/types/index.d.ts"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "npx rimraf dist && rollup -c",
19
+ "build:watch": "rollup -c -w"
20
+ },
21
+ "keywords": [],
22
+ "author": "",
23
+ "license": "ISC",
24
+ "peerDependencies": {
25
+ "@emotion/react": "11.14.0",
26
+ "@emotion/styled": "11.14.0",
27
+ "@mui/icons-material": "5.17.1",
28
+ "@mui/material": "5.17.1",
29
+ "@mui/x-data-grid": "6.20.4",
30
+ "@mui/x-date-pickers": "6.20.2",
31
+ "axios": "1.8.3",
32
+ "clipboard-copy": "4.0.1",
33
+ "dayjs": "1.11.5",
34
+ "dotenv": "16.4.7",
35
+ "query-string": "9.1.1",
36
+ "react": "18.3.1",
37
+ "react-dom": "18.3.1",
38
+ "react-quill": "2.0.0",
39
+ "react-router-dom": "6.30.0"
40
+ },
41
+ "devDependencies": {
42
+ "@babel/core": "7.27.1",
43
+ "@babel/preset-env": "7.27.2",
44
+ "@babel/preset-react": "7.27.1",
45
+ "@babel/preset-typescript": "7.27.1",
46
+ "@rollup/plugin-babel": "6.0.4",
47
+ "@rollup/plugin-commonjs": "28.0.3",
48
+ "@rollup/plugin-node-resolve": "16.0.1",
49
+ "@rollup/plugin-typescript": "12.1.2",
50
+ "@rollup/plugin-url": "8.0.2",
51
+ "@types/node": "16.18.126",
52
+ "@types/react": "18.3.20",
53
+ "@types/react-dom": "18.3.5",
54
+ "babel-preset-react": "6.24.1",
55
+ "babel-preset-typescript": "7.0.0-alpha.19",
56
+ "rollup": "4.41.0",
57
+ "rollup-plugin-copy": "3.5.0",
58
+ "rollup-plugin-peer-deps-external": "2.2.4",
59
+ "rollup-plugin-postcss": "4.0.2",
60
+ "rollup-plugin-terser": "7.0.2",
61
+ "tslib": "2.8.1",
62
+ "typescript": "4.9.5"
63
+ }
64
+ }