dinocollab-shared 1.0.2 → 1.0.4

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.
Files changed (35) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +2 -2
  2. package/dist/cart/cart-store.js +2 -0
  3. package/dist/cart/cart-store.js.map +1 -0
  4. package/dist/cart/helpers.js +1 -1
  5. package/dist/cart/helpers.js.map +1 -1
  6. package/dist/cart/hook.js +2 -0
  7. package/dist/cart/hook.js.map +1 -0
  8. package/dist/cart/index.js +1 -1
  9. package/dist/cart/styled.js +1 -1
  10. package/dist/cart/styled.js.map +1 -1
  11. package/dist/cart/widget.js +1 -1
  12. package/dist/cart/widget.js.map +1 -1
  13. package/dist/layout-global/app-header.styled.js +1 -1
  14. package/dist/layout-global/app-header.styled.js.map +1 -1
  15. package/dist/types/cart/cart-store.d.ts +62 -0
  16. package/dist/types/cart/cart-store.d.ts.map +1 -0
  17. package/dist/types/cart/helpers.d.ts +12 -1
  18. package/dist/types/cart/helpers.d.ts.map +1 -1
  19. package/dist/types/cart/hook.d.ts +12 -0
  20. package/dist/types/cart/hook.d.ts.map +1 -0
  21. package/dist/types/cart/index.d.ts +67 -3
  22. package/dist/types/cart/index.d.ts.map +1 -1
  23. package/dist/types/cart/styled.d.ts +1 -0
  24. package/dist/types/cart/styled.d.ts.map +1 -1
  25. package/dist/types/cart/widget.d.ts +4 -2
  26. package/dist/types/cart/widget.d.ts.map +1 -1
  27. package/package.json +2 -2
  28. package/dist/cart/provider.js +0 -2
  29. package/dist/cart/provider.js.map +0 -1
  30. package/dist/cart/subscriber.js +0 -2
  31. package/dist/cart/subscriber.js.map +0 -1
  32. package/dist/types/cart/provider.d.ts +0 -16
  33. package/dist/types/cart/provider.d.ts.map +0 -1
  34. package/dist/types/cart/subscriber.d.ts +0 -10
  35. package/dist/types/cart/subscriber.d.ts.map +0 -1
@@ -1,4 +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(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function n(t,r,e,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void e(t)}c.done?r(u):Promise.resolve(u).then(n,o)}function o(t){return function(){var r=this,e=arguments;return new Promise(function(o,i){var a=t.apply(r,e);function c(t){n(a,o,i,c,u,"next",t)}function u(t){n(a,o,i,c,u,"throw",t)}c(void 0)})}}function i(t,r,e){return r=f(r),d(t,s()?Reflect.construct(r,e||[],f(t).constructor):r.apply(t,e))}function a(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function c(t,r,e){return r&&function(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,S(n.key),n)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function u(t,r,e){return(r=S(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function f(t){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},f(t)}function l(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&&g(t,r)}function s(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(s=function(){return!!t})()}function p(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,c=[],u=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r);else for(;!(u=(n=i.call(e)).done)&&(c.push(n.value),c.length!==r);u=!0);}catch(t){f=!0,o=t}finally{try{if(!u&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return c}}function y(){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 b(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 v(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?b(Object(e),!0).forEach(function(r){u(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):b(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=h(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 h(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 d(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 e(t)}function j(){
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(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function n(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 o(t){return function(){var r=this,e=arguments;return new Promise(function(o,i){var a=t.apply(r,e);function u(t){n(a,o,i,u,c,"next",t)}function c(t){n(a,o,i,u,c,"throw",t)}u(void 0)})}}function i(t,r,e){return r=l(r),g(t,p()?Reflect.construct(r,e||[],l(t).constructor):r.apply(t,e))}function a(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function u(t,r,e){return r&&function(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,E(n.key),n)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function c(t,r,e){return(r=E(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function f(){return f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,r,e){var n=S(t,r);if(n){var o=Object.getOwnPropertyDescriptor(n,r);return o.get?o.get.call(arguments.length<3?t:e):o.value}},f.apply(null,arguments)}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function s(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&&m(t,r)}function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(p=function(){return!!t})()}function y(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);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 b(){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 v(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 O(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?v(Object(e),!0).forEach(function(r){c(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):v(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}function h(t,r){if(null==t)return{};var e,n,o=d(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 d(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 g(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 e(t)}function j(){
2
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 u=n&&n.prototype instanceof c?n:c,f=Object.create(u.prototype);return m(f,"_invoke",function(e,n,o){var i,c,u,f=0,l=o||[],s=!1,p={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(r,e){return i=r,c=0,u=t,p.n=e,a}};function y(e,n){for(c=e,u=n,r=0;!s&&f&&!o&&r<l.length;r++){var o,i=l[r],y=p.p,b=i[2];e>3?(o=b===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=t):i[0]<=y&&((o=e<2&&y<i[1])?(c=0,p.v=n,p.n=i[1]):y<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,p.n=b,c=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&&y(l,b),c=l,u=b;(r=c<2?t:u)||!s;){i||(c?c<3?(c>1&&(p.n=-1),y(c,u)):p.n=u:p.v=u);try{if(f=2,i){if(c||(o="next"),r=i[o]){if(!(r=r.call(i,u)))throw TypeError("iterator result is not an object");if(!r.done)return r;u=r.value,c<2&&(c=0)}else 1===c&&(r=i.return)&&r.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=t}else if((r=(s=p.n<0)?u:e.call(n,p))!==a)break}catch(r){i=t,c=1,u=r}finally{f=1}}return{value:r,done:s}}}(e,o,i),!0),f}var a={};function c(){}function u(){}function f(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(m(r={},n,function(){return this}),r),s=f.prototype=c.prototype=Object.create(l);function p(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,m(t,o,"GeneratorFunction")),t.prototype=Object.create(s),t}return u.prototype=f,m(s,"constructor",f),m(f,"constructor",u),u.displayName="GeneratorFunction",m(f,o,"GeneratorFunction"),m(s),m(s,o,"Generator"),m(s,n,function(){return this}),m(s,"toString",function(){return"[object Generator]"}),(j=function(){return{w:i,m:p}})()}function m(t,r,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}m=function(t,r,e,n){function i(r,e){m(t,r,function(t){return this._invoke(r,e,t)})}r?o?o(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n}):t[r]=e:(i("next",0),i("throw",1),i("return",2))},m(t,r,e,n)}function g(t,r){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},g(t,r)}function w(t,e){return r(t)||p(t,e)||T(t,e)||y()}function P(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 S(t){var r=P(t,"string");return"symbol"==typeof r?r:r+""}function T(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 assertThisInitialized,o as asyncToGenerator,i as callSuper,a as classCallCheck,c as createClass,u as defineProperty,f as getPrototypeOf,l as inherits,s as isNativeReflectConstruct,p as iterableToArrayLimit,y as nonIterableRest,v as objectSpread2,O as objectWithoutProperties,h as objectWithoutPropertiesLoose,d as possibleConstructorReturn,j as regenerator,m as regeneratorDefine,g as setPrototypeOf,w as slicedToArray,P as toPrimitive,S as toPropertyKey,T as unsupportedIterableToArray};
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 P(f,"_invoke",function(e,n,o){var i,u,c,f=0,l=o||[],s=!1,p={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(r,e){return i=r,u=0,c=t,p.n=e,a}};function y(e,n){for(u=e,c=n,r=0;!s&&f&&!o&&r<l.length;r++){var o,i=l[r],y=p.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]<=y&&((o=e<2&&y<i[1])?(u=0,p.v=n,p.n=i[1]):y<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,p.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&&y(l,b),u=l,c=b;(r=u<2?t:c)||!s;){i||(u?u<3?(u>1&&(p.n=-1),y(u,c)):p.n=c:p.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=p.n<0)?c:e.call(n,p))!==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]())):(P(r={},n,function(){return this}),r),s=f.prototype=u.prototype=Object.create(l);function p(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,P(t,o,"GeneratorFunction")),t.prototype=Object.create(s),t}return c.prototype=f,P(s,"constructor",f),P(f,"constructor",c),c.displayName="GeneratorFunction",P(f,o,"GeneratorFunction"),P(s),P(s,o,"Generator"),P(s,n,function(){return this}),P(s,"toString",function(){return"[object Generator]"}),(j=function(){return{w:i,m:p}})()}function P(t,r,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}P=function(t,r,e,n){function i(r,e){P(t,r,function(t){return this._invoke(r,e,t)})}r?o?o(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n}):t[r]=e:(i("next",0),i("throw",1),i("return",2))},P(t,r,e,n)}function m(t,r){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},m(t,r)}function w(t,e){return r(t)||y(t,e)||A(t,e)||b()}function S(t,r){for(;!{}.hasOwnProperty.call(t,r)&&null!==(t=l(t)););return t}function T(t,r,e,n){var o=f(l(t.prototype),r,e);return"function"==typeof o?function(t){return o.apply(e,t)}:o}function _(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 E(t){var r=_(t,"string");return"symbol"==typeof r?r:r+""}function A(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 assertThisInitialized,o as asyncToGenerator,i as callSuper,a as classCallCheck,u as createClass,c as defineProperty,f as get,l as getPrototypeOf,s as inherits,p as isNativeReflectConstruct,y as iterableToArrayLimit,b as nonIterableRest,O as objectSpread2,h as objectWithoutProperties,d as objectWithoutPropertiesLoose,g as possibleConstructorReturn,j as regenerator,P as regeneratorDefine,m as setPrototypeOf,w as slicedToArray,S as superPropBase,T as superPropGet,_ as toPrimitive,E as toPropertyKey,A as unsupportedIterableToArray};
4
4
  //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -0,0 +1,2 @@
1
+ import{createClass as t,objectSpread2 as e,classCallCheck as a,inherits as r,superPropGet as i,callSuper as n,defineProperty as o}from"../_virtual/_rollupPluginBabelHelpers.js";import s from"events";var l=function(){function e(){var t;return a(this,e),t=n(this,e),o(t,"_createWrapListener",function(t){return function(){try{t.apply(void 0,arguments)}catch(t){console.error("Error in MfeBridge listener:",t)}}}),t}return r(e,s),t(e,[{key:"subscribe",value:function(t,a){var r=this,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?this._createWrapListener(a):a;return i(e,"addListener",this)([t,n]),function(){i(e,"removeListener",r)([t,n])}}}])}();function c(){return void 0===globalThis.CartEventStore&&(globalThis.CartEventStore=new l),globalThis.CartEventStore}var u=function(){return t(function t(e){a(this,t),this.configs=e,this.configs.localStorageKey||(this.configs.localStorageKey="cartItems"),this.loadFromLocalStorage()},[{key:"emitStateChange",value:function(t){var e=c();this.saveToLocalStorage(t),e.emit("stateChange",{items:t,options:{message:"Cart items updated"}})}},{key:"add",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=this.getState();return!e&&this.configs.idGetter(t)in a||(a[this.configs.idGetter(t)]=t),this.emitStateChange(a),this}},{key:"addMany",value:function(t){var e=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.getState();return t.forEach(function(t){!a&&e.configs.idGetter(t)in r||(r[e.configs.idGetter(t)]=t)}),this.emitStateChange(r),this}},{key:"updateOrAdd",value:function(t,a){var r=this.getState(),i=r[t];return r[t]=i?e(e({},i),a):a,this.emitStateChange(r),this}},{key:"remove",value:function(t){var e=this.getState();return t in e&&(delete e[t],this.emitStateChange(e)),this}},{key:"clear",value:function(){return this.emitStateChange({}),this}},{key:"getState",value:function(){return this.loadFromLocalStorage()||{}}},{key:"getItems",value:function(){var t=this.getState();return Array.isArray(t)?t:Object.values(t)}},{key:"loadFromLocalStorage",value:function(){var t=localStorage.getItem(this.configs.localStorageKey||"cartItems");if(t)return JSON.parse(t)}},{key:"saveToLocalStorage",value:function(t){this.configs.localStorageKey?localStorage.setItem(this.configs.localStorageKey,JSON.stringify(t)):console.warn("No localStorageKey provided, skipping storage")}}])}();export{l as CartEventStore,u as MfeCartStore,c as getCartEventStore};
2
+ //# sourceMappingURL=cart-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cart-store.js","sources":["../../src/cart/cart-store.ts"],"sourcesContent":["import EventEmitter from 'events'\r\n\r\nexport type IIdGetter<T = any> = (item: T) => string\r\n\r\ntype IItem = Record<string, any>\r\n\r\ninterface IEventOptions {\r\n message?: string\r\n}\r\n\r\nexport interface ICartEventConfigs {\r\n stateChange: [{ items: IItem; options?: IEventOptions }]\r\n requestState: [{ options?: IEventOptions }]\r\n add: [{ item: IItem }]\r\n update: [{ id: string; updates: Partial<IItem> }]\r\n remove: [{ id: string }]\r\n clear: []\r\n setState: [{ items: IItem }]\r\n}\r\n\r\nexport class CartEventStore extends EventEmitter<ICartEventConfigs> {\r\n constructor() {\r\n super()\r\n }\r\n /**\r\n * Subscribe to a specific channel\r\n * @param channel The channel to subscribe to\r\n * @param callback Function to call when an event occurs on this channel\r\n * @returns Unsubscribe function to remove the event listener\r\n */\r\n _createWrapListener = (callback: (...payload: any[]) => void) => {\r\n return (...payload: any[]) => {\r\n try {\r\n callback(...payload)\r\n } catch (error) {\r\n console.error('Error in MfeBridge listener:', error)\r\n }\r\n }\r\n }\r\n subscribe<K extends keyof ICartEventConfigs>(\r\n eventName: K,\r\n listener: K extends keyof ICartEventConfigs ? (ICartEventConfigs[K] extends unknown[] ? (...args: ICartEventConfigs[K]) => void : never) : never,\r\n isTry: boolean = true\r\n ) {\r\n const action = isTry ? this._createWrapListener(listener) : listener\r\n super.addListener(eventName, action as any)\r\n return () => {\r\n super.removeListener(eventName, action as any)\r\n }\r\n }\r\n}\r\n\r\nexport function getCartEventStore() {\r\n if (typeof (globalThis as any).CartEventStore === 'undefined') {\r\n // If CartEventStore is not defined globally, define it\r\n // This allows it to be used in other parts of the application\r\n // without needing to import it explicitly\r\n ;(globalThis as any).CartEventStore = new CartEventStore()\r\n }\r\n return (globalThis as any).CartEventStore as CartEventStore\r\n}\r\n\r\nexport interface ICartStoreConfigs {\r\n idGetter: IIdGetter\r\n localStorageKey?: string\r\n}\r\n\r\nexport class MfeCartStore {\r\n private configs: ICartStoreConfigs\r\n constructor(config: ICartStoreConfigs) {\r\n this.configs = config\r\n if (!this.configs.localStorageKey) {\r\n this.configs.localStorageKey = 'cartItems'\r\n }\r\n this.loadFromLocalStorage()\r\n }\r\n\r\n emitStateChange(items: IItem) {\r\n const eventStore = getCartEventStore()\r\n this.saveToLocalStorage(items)\r\n eventStore.emit('stateChange', { items, options: { message: 'Cart items updated' } })\r\n }\r\n\r\n add(item: any, overwrite: boolean = false) {\r\n const items = this.getState()\r\n if (overwrite || !(this.configs.idGetter(item) in items)) {\r\n items[this.configs.idGetter(item)] = item\r\n }\r\n this.emitStateChange(items)\r\n return this\r\n }\r\n\r\n addMany(items: any[], overwrite: boolean = false) {\r\n const currentItems = this.getState()\r\n items.forEach((item) => {\r\n if (overwrite || !(this.configs.idGetter(item) in currentItems)) {\r\n currentItems[this.configs.idGetter(item)] = item\r\n }\r\n })\r\n this.emitStateChange(currentItems)\r\n return this\r\n }\r\n\r\n updateOrAdd(id: string, updates: Partial<any>) {\r\n const items = this.getState()\r\n const item = items[id]\r\n if (item) {\r\n items[id] = { ...item, ...updates }\r\n } else {\r\n items[id] = updates\r\n }\r\n this.emitStateChange(items)\r\n return this\r\n }\r\n\r\n remove(id: string) {\r\n const items = this.getState()\r\n if (id in items) {\r\n delete items[id]\r\n this.emitStateChange(items)\r\n }\r\n return this\r\n }\r\n\r\n clear() {\r\n this.emitStateChange({})\r\n return this\r\n }\r\n\r\n getState(): IItem {\r\n return this.loadFromLocalStorage() || {}\r\n }\r\n getItems(): any[] {\r\n const items = this.getState()\r\n const item = Array.isArray(items) ? items : Object.values(items)\r\n return item\r\n }\r\n\r\n private loadFromLocalStorage() {\r\n const storedItems = localStorage.getItem(this.configs.localStorageKey || 'cartItems')\r\n if (storedItems) {\r\n return JSON.parse(storedItems)\r\n }\r\n }\r\n\r\n private saveToLocalStorage(items: IItem) {\r\n if (this.configs.localStorageKey) {\r\n localStorage.setItem(this.configs.localStorageKey, JSON.stringify(items))\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n}\r\n"],"names":["CartEventStore","_this","_classCallCheck","_callSuper","this","_defineProperty","callback","apply","arguments","error","console","_inherits","EventEmitter","_createClass","key","value","eventName","listener","_this2","action","_createWrapListener","_superPropGet","getCartEventStore","globalThis","MfeCartStore","config","configs","localStorageKey","loadFromLocalStorage","items","eventStore","saveToLocalStorage","emit","options","message","item","overwrite","length","undefined","getState","idGetter","emitStateChange","_this3","currentItems","forEach","id","updates","_objectSpread","Array","isArray","Object","values","storedItems","localStorage","getItem","JSON","parse","setItem","stringify","warn"],"mappings":"uMAoBaA,IAAAA,aACX,SAAAA,IAAA,IAAAC,EAiBC,OAjBDC,OAAAF,GACEC,EAAAE,EAAAC,KAAAJ,GAEFK,EAAAJ,EAMsB,sBAAA,SAACK,GACrB,OAAO,WACL,IACEA,EAAQC,WAAAC,EAAAA,UACT,CAAC,MAAOC,GACPC,QAAQD,MAAM,+BAAgCA,EAC/C,CACF,IACFR,CAfD,CAAC,OAAAU,EAAAX,EAHiCY,GAGjCC,EAAAb,EAAA,CAAA,CAAAc,IAAA,YAAAC,MAgBD,SACEC,EACAC,GACqB,IAAAC,EAAAd,KAEfe,6DAAiBf,KAAKgB,oBAAoBH,GAAYA,EAE5D,OADAI,EAAArB,EAAkBgB,cAAAA,KAAlBK,CAAkBL,CAAAA,EAAWG,IACtB,WACLE,EAAArB,EAAA,iBAAAkB,EAAAG,CAAqBL,CAAAA,EAAWG,GACjC,CACH,IAAC,aAGaG,IAOd,YANkD,IAAtCC,WAAmBvB,iBAI3BuB,WAAmBvB,eAAiB,IAAIA,GAEpCuB,WAAmBvB,cAC7B,CAOA,IAAawB,EAAY,WAQtB,OAAAX,EAND,SAAAW,EAAYC,GAAyBvB,OAAAsB,GACnCpB,KAAKsB,QAAUD,EACVrB,KAAKsB,QAAQC,kBAChBvB,KAAKsB,QAAQC,gBAAkB,aAEjCvB,KAAKwB,sBACP,EAAC,CAAA,CAAAd,IAAA,kBAAAC,MAED,SAAgBc,GACd,IAAMC,EAAaR,IACnBlB,KAAK2B,mBAAmBF,GACxBC,EAAWE,KAAK,cAAe,CAAEH,MAAAA,EAAOI,QAAS,CAAEC,QAAS,uBAC9D,GAAC,CAAApB,IAAA,MAAAC,MAED,SAAIoB,GAAqC,IAA1BC,EAAA5B,UAAA6B,OAAA,QAAAC,IAAA9B,UAAA,IAAAA,UAAA,GACPqB,EAAQzB,KAAKmC,WAKnB,OAJIH,GAAehC,KAAKsB,QAAQc,SAASL,KAASN,IAChDA,EAAMzB,KAAKsB,QAAQc,SAASL,IAASA,GAEvC/B,KAAKqC,gBAAgBZ,GACdzB,IACT,GAAC,CAAAU,IAAA,UAAAC,MAED,SAAQc,GAAwC,IAAAa,EAAAtC,KAA1BgC,EAAA5B,UAAA6B,OAAA,QAAAC,IAAA9B,UAAA,IAAAA,UAAA,GACdmC,EAAevC,KAAKmC,WAO1B,OANAV,EAAMe,QAAQ,SAACT,IACTC,GAAeM,EAAKhB,QAAQc,SAASL,KAASQ,IAChDA,EAAaD,EAAKhB,QAAQc,SAASL,IAASA,EAEhD,GACA/B,KAAKqC,gBAAgBE,GACdvC,IACT,GAAC,CAAAU,IAAA,cAAAC,MAED,SAAY8B,EAAYC,GACtB,IAAMjB,EAAQzB,KAAKmC,WACbJ,EAAON,EAAMgB,GAOnB,OALEhB,EAAMgB,GADJV,EACOY,EAAAA,EAAQZ,GAAAA,GAASW,GAEdA,EAEd1C,KAAKqC,gBAAgBZ,GACdzB,IACT,GAAC,CAAAU,IAAA,SAAAC,MAED,SAAO8B,GACL,IAAMhB,EAAQzB,KAAKmC,WAKnB,OAJIM,KAAMhB,WACDA,EAAMgB,GACbzC,KAAKqC,gBAAgBZ,IAEhBzB,IACT,GAAC,CAAAU,IAAA,QAAAC,MAED,WAEE,OADAX,KAAKqC,gBAAgB,IACdrC,IACT,GAAC,CAAAU,IAAA,WAAAC,MAED,WACE,OAAOX,KAAKwB,wBAA0B,CAAE,CAC1C,GAAC,CAAAd,IAAA,WAAAC,MACD,WACE,IAAMc,EAAQzB,KAAKmC,WAEnB,OADaS,MAAMC,QAAQpB,GAASA,EAAQqB,OAAOC,OAAOtB,EAE5D,GAAC,CAAAf,IAAA,uBAAAC,MAEO,WACN,IAAMqC,EAAcC,aAAaC,QAAQlD,KAAKsB,QAAQC,iBAAmB,aACzE,GAAIyB,EACF,OAAOG,KAAKC,MAAMJ,EAEtB,GAAC,CAAAtC,IAAA,qBAAAC,MAEO,SAAmBc,GACrBzB,KAAKsB,QAAQC,gBACf0B,aAAaI,QAAQrD,KAAKsB,QAAQC,gBAAiB4B,KAAKG,UAAU7B,IAElEnB,QAAQiD,KAAK,gDAEjB,IAAC,CApFsB"}
@@ -1,2 +1,2 @@
1
- var n=function(n){return n.reduce(function(n,r){return{amount:n.amount+r.Amount,price:n.price+(r.Price||0)*r.Amount}},{amount:0,price:0})};export{n as getTotalData};
1
+ var n=function(n){return n.reduce(function(n,r){return{amount:n.amount+(r.Amount||0),price:n.price+(r.Price||0)*(r.Amount||0)}},{amount:0,price:0})};export{n as getTotalData};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../src/cart/helpers.ts"],"sourcesContent":["import { ICartItem } from \"./types\";\r\n\r\nexport const convertStringToLinks = (text: string): string[] => {\r\n // Regex cải thiện để match URLs chính xác hơn\r\n const urlRegex =\r\n /https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)/g;\r\n return text.match(urlRegex) || [];\r\n};\r\n\r\nexport const getTotalData = (data: ICartItem[]) => {\r\n return data.reduce(\r\n (acc, item) => ({\r\n amount: acc.amount + item.Amount,\r\n price: acc.price + (item.Price || 0) * item.Amount,\r\n }),\r\n { amount: 0, price: 0 }\r\n );\r\n};\r\n"],"names":["getTotalData","data","reduce","acc","item","amount","Amount","price","Price"],"mappings":"IASaA,EAAe,SAACC,GAC3B,OAAOA,EAAKC,OACV,SAACC,EAAKC,GAAI,MAAM,CACdC,OAAQF,EAAIE,OAASD,EAAKE,OAC1BC,MAAOJ,EAAII,OAASH,EAAKI,OAAS,GAAKJ,EAAKE,OAC7C,EACD,CAAED,OAAQ,EAAGE,MAAO,GAExB"}
1
+ {"version":3,"file":"helpers.js","sources":["../../src/cart/helpers.ts"],"sourcesContent":["import { ICartItem } from './types'\r\n\r\n/**\r\n * Convert a string to an array of URLs using improved regex\r\n * @param text Input string\r\n * @returns Array of matched URLs\r\n */\r\nexport const convertStringToLinks = (text: string): string[] => {\r\n // Improved regex to match URLs more accurately\r\n const urlRegex = /https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)/g\r\n return text.match(urlRegex) || []\r\n}\r\n\r\n/**\r\n * Calculate total amount and price from an array of cart items\r\n * Note: If item.Amount is undefined, it will be treated as 0\r\n * @param data Array of ICartItem\r\n * @returns Object with total amount and total price\r\n */\r\nexport const getTotalData = (data: ICartItem[]) => {\r\n return data.reduce(\r\n (acc, item) => ({\r\n amount: acc.amount + (item.Amount || 0),\r\n price: acc.price + (item.Price || 0) * (item.Amount || 0)\r\n }),\r\n { amount: 0, price: 0 }\r\n )\r\n}\r\n"],"names":["getTotalData","data","reduce","acc","item","amount","Amount","price","Price"],"mappings":"IAmBaA,EAAe,SAACC,GAC3B,OAAOA,EAAKC,OACV,SAACC,EAAKC,GAAI,MAAM,CACdC,OAAQF,EAAIE,QAAUD,EAAKE,QAAU,GACrCC,MAAOJ,EAAII,OAASH,EAAKI,OAAS,IAAMJ,EAAKE,QAAU,GACxD,EACD,CAAED,OAAQ,EAAGE,MAAO,GAExB"}
@@ -0,0 +1,2 @@
1
+ import{slicedToArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{useState as t,useEffect as e}from"react";import{MfeCartStore as n,getCartEventStore as i}from"./cart-store.js";function a(){var a=new n({idGetter:function(r){return r.ProductId}}),o=t(a.getItems()),u=r(o,2),d=u[0],c=u[1];return e(function(){var r=i();r.emit("requestState",{});var t=r.subscribe("stateChange",function(r){var t=r.items,e=Array.isArray(t)?t:Object.values(t);c(e)});return function(){t()}},[]),{items:d}}function o(){var r=function(r){return r.ProductId};return{addToCart:function(t){new n({idGetter:r}).add(t)},updateOrAddCart:function(t,e){new n({idGetter:r}).updateOrAdd(t,e)},removeFromCart:function(t){new n({idGetter:r}).remove(t)},clearCart:function(){new n({idGetter:r}).clear()},idGetter:r}}export{o as useCartActions,a as useCartStore};
2
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sources":["../../src/cart/hook.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { getCartEventStore, MfeCartStore } from './cart-store'\r\nimport { ICartItem } from './types'\r\n\r\nexport function useCartStore<T extends ICartItem = ICartItem>() {\r\n const store = new MfeCartStore({ idGetter: (item: T) => item.ProductId })\r\n const [items, setItems] = useState<T[]>(store.getItems() as T[])\r\n\r\n useEffect(() => {\r\n const event = getCartEventStore()\r\n event.emit('requestState', {})\r\n\r\n const unsubscribe = event.subscribe('stateChange', ({ items }) => {\r\n const item = Array.isArray(items) ? items : Object.values(items)\r\n setItems(item as T[])\r\n })\r\n return () => {\r\n unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { items }\r\n}\r\nexport function useCartActions<T extends ICartItem = ICartItem>() {\r\n const idGetter = (item: T) => item.ProductId\r\n\r\n const addToCart = (item: T) => {\r\n const store = new MfeCartStore({ idGetter })\r\n store.add(item)\r\n }\r\n\r\n const updateOrAddCart = (id: string, updates: Partial<T>) => {\r\n const store = new MfeCartStore({ idGetter })\r\n store.updateOrAdd(id, updates)\r\n }\r\n\r\n const removeFromCart = (id: string) => {\r\n const store = new MfeCartStore({ idGetter })\r\n store.remove(id)\r\n }\r\n\r\n const clearCart = () => {\r\n const store = new MfeCartStore({ idGetter })\r\n store.clear()\r\n }\r\n\r\n return {\r\n addToCart,\r\n updateOrAddCart,\r\n removeFromCart,\r\n clearCart,\r\n idGetter\r\n }\r\n}\r\n"],"names":["useCartStore","store","MfeCartStore","idGetter","item","ProductId","_useState","useState","getItems","_useState2","_slicedToArray","items","setItems","useEffect","event","getCartEventStore","emit","unsubscribe","subscribe","_ref","Array","isArray","Object","values","useCartActions","addToCart","add","updateOrAddCart","id","updates","updateOrAdd","removeFromCart","remove","clearCart","clear"],"mappings":"wMAIgBA,IACd,IAAMC,EAAQ,IAAIC,EAAa,CAAEC,SAAU,SAACC,GAAO,OAAKA,EAAKC,SAAS,IACtEC,EAA0BC,EAAcN,EAAMO,YAAkBC,EAAAC,EAAAJ,EAAA,GAAzDK,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAetB,OAbAI,EAAU,WACR,IAAMC,EAAQC,IACdD,EAAME,KAAK,eAAgB,IAE3B,IAAMC,EAAcH,EAAMI,UAAU,cAAe,SAAAC,GAAc,IAAXR,EAAKQ,EAALR,MAC9CP,EAAOgB,MAAMC,QAAQV,GAASA,EAAQW,OAAOC,OAAOZ,GAC1DC,EAASR,EACX,GACA,OAAO,WACLa,GACD,CACF,EAAE,IAEI,CAAEN,MAAAA,EACX,UACgBa,IACd,IAAMrB,EAAW,SAACC,GAAO,OAAKA,EAAKC,SAAS,EAsB5C,MAAO,CACLoB,UArBgB,SAACrB,GACH,IAAIF,EAAa,CAAEC,SAAAA,IAC3BuB,IAAItB,EACX,EAmBCuB,gBAjBsB,SAACC,EAAYC,GACrB,IAAI3B,EAAa,CAAEC,SAAAA,IAC3B2B,YAAYF,EAAIC,EACvB,EAeCE,eAbqB,SAACH,GACR,IAAI1B,EAAa,CAAEC,SAAAA,IAC3B6B,OAAOJ,EACd,EAWCK,UATgB,WACF,IAAI/B,EAAa,CAAEC,SAAAA,IAC3B+B,OACP,EAOC/B,SAAAA,EAEJ"}
@@ -1,2 +1,2 @@
1
- export{CartWidget,createCartWidget}from"./widget.js";export{CartProvider,createCartProvider}from"./provider.js";export{CartSubscriber}from"./subscriber.js";
1
+ export{CartWidget,createCartWidget}from"./widget.js";export{useCartActions,useCartStore}from"./hook.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{styled as e,Menu as o,Box as r,alpha as i}from"@mui/material";var a=e(o)(function(t){var e=t.theme;return{"--color-bg":"#ffffff","--color-text":e.palette.common.black,marginTop:"45px",".MuiPaper-root":{overflow:"visible",backgroundColor:"var(--color-bg, #000000)",borderRadius:e.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:"var(--color-text, #000000)",display:"flex","@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:"var(--color-bg, #ffffff)",width:"10px",height:"10px",top:"-4px",right:e.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0}}}),n={root:"CartContent-root",header:"CartContent-header",footer:"CartContent-footer",items:"CartContent-items",item:"CartContent-item",itemContent:"CartContent-itemContent",itemImg:"CartContent-itemImg",itemTitle:"CartContent-itemTitle",itemPrice:"CartContent-itemPrice"},p=function(t,e){return"".concat((null==e?void 0:e.prefix)||"",".").concat(n[t]).concat((null==e?void 0:e.suffix)||"")},l=e(r)(function(e){var o=e.theme;return t(t(t(t(t(t(t(t({"--height-item":"80px"},p("root",{prefix:"&"}),{height:"100%"}),p("header"),{padding:"12px 16px",display:"flex",justifyContent:"space-between",alignItems:"center"}),p("footer"),{padding:"6px 12px",display:"flex",justifyContent:"flex-end",position:"relative"}),p("items"),{padding:"8px",overflowY:"auto",height:"100%"}),p("item"),{display:"flex",alignItems:"center",padding:"0 9px",transition:"0.3s",height:"var(--height-item)","& a":{textDecoration:"none"},"&:hover":{background:"#fafafa"},"&:hover a":{textDecoration:"underline"}}),p("itemImg"),{width:"60px",height:"60px",borderRadius:"6px",objectFit:"cover",marginRight:"12px",flex:"0 0 auto",backgroundColor:i(o.palette.grey[400],.2)}),p("itemContent"),{flex:1,display:"flex",alignItems:"center",minWidth:0}),p("itemTitle"),{color:"var(--color-body)",fontWeight:600,flex:1,width:"100%",margin:"0 12px",padding:"15px 0",minWidth:0,maxWidth:"300px"})});export{l as CartContentStyled,a as MenuStyled,n as cartContentClasses};
1
+ import{defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{styled as e,Menu as o,Box as i,alpha as r}from"@mui/material";var a=e(o)(function(t){var e=t.theme;return{"--color-bg":"#ffffff","--color-text":e.palette.common.black,marginTop:"45px",".MuiPaper-root":{overflow:"visible",backgroundColor:"var(--color-bg, #000000)",borderRadius:e.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:"var(--color-text, #000000)",display:"flex","@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:"var(--color-bg, #ffffff)",width:"10px",height:"10px",top:"-4px",right:e.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0}}}),n={root:"CartContent-root",header:"CartContent-header",footer:"CartContent-footer",items:"CartContent-items",item:"CartContent-item",itemContent:"CartContent-itemContent",itemImg:"CartContent-itemImg",itemTitle:"CartContent-itemTitle",itemPrice:"CartContent-itemPrice",itemTag:"CartContent-itemTag"},p=function(t,e){return"".concat((null==e?void 0:e.prefix)||"",".").concat(n[t]).concat((null==e?void 0:e.suffix)||"")},l=e(i)(function(e){var o=e.theme;return t(t(t(t(t(t(t(t(t({"--height-item":"80px"},p("root",{prefix:"&"}),{height:"100%"}),p("header"),{padding:"12px 16px",display:"flex",justifyContent:"space-between",alignItems:"center"}),p("footer"),{padding:"6px 12px",display:"flex",justifyContent:"flex-end",position:"relative"}),p("items"),{padding:"8px",overflowY:"auto",height:"100%"}),p("item"),{display:"flex",alignItems:"center",padding:"0 9px",transition:"0.3s",height:"var(--height-item)","& a":{textDecoration:"none"},"&:hover":{background:"#fafafa"},"&:hover a":{textDecoration:"underline"}}),p("itemImg"),{width:"60px",height:"60px",borderRadius:"6px",objectFit:"cover",marginRight:"12px",flex:"0 0 auto",backgroundColor:r(o.palette.grey[400],.2)}),p("itemContent"),{flex:1,display:"flex",alignItems:"center",minWidth:0,position:"relative"}),p("itemTitle"),{color:"var(--color-body)",fontWeight:600,flex:1,width:"100%",margin:"0 12px",padding:"15px 0",minWidth:0,maxWidth:"300px"}),p("itemTag"),{position:"absolute",top:0,left:"12px",fontWeight:600})});export{l as CartContentStyled,a as MenuStyled,n as cartContentClasses};
2
2
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../src/cart/styled.tsx"],"sourcesContent":["import { alpha, Box, Menu, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps, MenuProps } from '@mui/material'\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n // dark mode\r\n // '--color-bg': '#323234',\r\n // \"--color-text\": theme.palette.common.white,\r\n\r\n // light mode\r\n '--color-bg': '#ffffff',\r\n '--color-text': theme.palette.common.black,\r\n\r\n marginTop: '45px',\r\n '.MuiPaper-root': {\r\n overflow: 'visible',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: 'var(--color-text, #000000)',\r\n display: 'flex',\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: 'var(--color-bg, #ffffff)',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': { padding: 0 }\r\n}))\r\n\r\nexport const cartContentClasses = {\r\n root: 'CartContent-root',\r\n header: 'CartContent-header',\r\n footer: 'CartContent-footer',\r\n items: 'CartContent-items',\r\n item: 'CartContent-item',\r\n itemContent: 'CartContent-itemContent',\r\n itemImg: 'CartContent-itemImg',\r\n itemTitle: 'CartContent-itemTitle',\r\n itemPrice: 'CartContent-itemPrice'\r\n}\r\n\r\nconst getCartContentClasses = (key: keyof typeof cartContentClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${cartContentClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const CartContentStyled: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n '--height-item': '80px',\r\n [getCartContentClasses('root', { prefix: '&' })]: {\r\n height: '100%'\r\n },\r\n [getCartContentClasses('header')]: {\r\n padding: '12px 16px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center'\r\n },\r\n [getCartContentClasses('footer')]: {\r\n padding: '6px 12px',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n position: 'relative'\r\n },\r\n [getCartContentClasses('items')]: {\r\n padding: '8px',\r\n overflowY: 'auto',\r\n height: '100%'\r\n },\r\n [getCartContentClasses('item')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 9px',\r\n transition: '0.3s',\r\n height: 'var(--height-item)',\r\n '& a': {\r\n textDecoration: 'none'\r\n },\r\n '&:hover': {\r\n background: '#fafafa'\r\n },\r\n '&:hover a': {\r\n textDecoration: 'underline'\r\n }\r\n },\r\n [getCartContentClasses('itemImg')]: {\r\n width: '60px',\r\n height: '60px',\r\n borderRadius: '6px',\r\n objectFit: 'cover',\r\n marginRight: '12px',\r\n flex: '0 0 auto',\r\n backgroundColor: alpha(theme.palette.grey[400], 0.2)\r\n },\r\n [getCartContentClasses('itemContent')]: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n minWidth: 0\r\n },\r\n [getCartContentClasses('itemTitle')]: {\r\n color: 'var(--color-body)',\r\n fontWeight: 600,\r\n flex: 1,\r\n width: '100%',\r\n margin: '0 12px',\r\n padding: '15px 0',\r\n minWidth: 0,\r\n maxWidth: '300px'\r\n }\r\n}))\r\n"],"names":["MenuStyled","styled","Menu","_ref","theme","palette","common","black","marginTop","overflow","backgroundColor","borderRadius","shape","minWidth","maxWidth","boxShadow","animation","color","display","opacity","transform","content","position","width","height","top","right","spacing","zIndex","padding","cartContentClasses","root","header","footer","items","item","itemContent","itemImg","itemTitle","itemPrice","getCartContentClasses","key","options","concat","prefix","suffix","CartContentStyled","Box","_ref2","_defineProperty","justifyContent","alignItems","overflowY","transition","textDecoration","background","objectFit","marginRight","flex","alpha","grey","fontWeight","margin"],"mappings":"+IAIO,IAAMA,EAAuCC,EAAOC,EAAPD,CAAa,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAM/E,aAAc,UACd,eAAgBA,EAAMC,QAAQC,OAAOC,MAErCC,UAAW,OACX,iBAAkB,CAChBC,SAAU,UACVC,gBAAiB,2BACjBC,aAAcP,EAAMQ,MAAMD,aAC1BE,SAAU,QACVC,SAAU,QACVC,UAAsI,4HACtIC,UAAW,2BACXR,UAAW,MACXS,MAAO,6BACPC,QAAS,OAET,wBAAyB,CACvB,KAAM,CAAEC,QAAS,EAAGC,UAAW,qBAC/B,OAAQ,CAAED,QAAS,EAAGC,UAAW,kBAGnC,YAAa,CACXC,QAAS,KACTC,SAAU,WACVZ,gBAAiB,2BACjBa,MAAO,OACPC,OAAQ,OACRC,IAAK,OACLC,MAAOtB,EAAMuB,QAAQ,GACrBP,UAAW,iCACXQ,OAAQ,IAGZ,oBAAqB,CAAElB,gBAAiB,eACxC,gBAAiB,CAAEmB,QAAS,GAC7B,GAEYC,EAAqB,CAChCC,KAAM,mBACNC,OAAQ,qBACRC,OAAQ,qBACRC,MAAO,oBACPC,KAAM,mBACNC,YAAa,0BACbC,QAAS,sBACTC,UAAW,wBACXC,UAAW,yBAGPC,EAAwB,SAACC,EAAsCC,GACnE,MAAA,GAAAC,QAAUD,aAAAA,EAAAA,EAASE,SAAU,QAAED,OAAIb,EAAmBW,IAAIE,QAAGD,aAAAA,EAAAA,EAASG,SAAU,GAClF,EAEaC,EAA6C7C,EAAO8C,EAAP9C,CAAY,SAAA+C,GAAA,IAAG5C,EAAK4C,EAAL5C,MAAK,OAAA6C,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CAC5E,gBAAiB,QAChBT,EAAsB,OAAQ,CAAEI,OAAQ,MAAS,CAChDpB,OAAQ,SAETgB,EAAsB,UAAY,CACjCX,QAAS,YACTX,QAAS,OACTgC,eAAgB,gBAChBC,WAAY,WAEbX,EAAsB,UAAY,CACjCX,QAAS,WACTX,QAAS,OACTgC,eAAgB,WAChB5B,SAAU,aAEXkB,EAAsB,SAAW,CAChCX,QAAS,MACTuB,UAAW,OACX5B,OAAQ,SAETgB,EAAsB,QAAU,CAC/BtB,QAAS,OACTiC,WAAY,SACZtB,QAAS,QACTwB,WAAY,OACZ7B,OAAQ,qBACR,MAAO,CACL8B,eAAgB,QAElB,UAAW,CACTC,WAAY,WAEd,YAAa,CACXD,eAAgB,eAGnBd,EAAsB,WAAa,CAClCjB,MAAO,OACPC,OAAQ,OACRb,aAAc,MACd6C,UAAW,QACXC,YAAa,OACbC,KAAM,WACNhD,gBAAiBiD,EAAMvD,EAAMC,QAAQuD,KAAK,KAAM,MAEjDpB,EAAsB,eAAiB,CACtCkB,KAAM,EACNxC,QAAS,OACTiC,WAAY,SACZtC,SAAU,IAEX2B,EAAsB,aAAe,CACpCvB,MAAO,oBACP4C,WAAY,IACZH,KAAM,EACNnC,MAAO,OACPuC,OAAQ,SACRjC,QAAS,SACThB,SAAU,EACVC,SAAU,SACX"}
1
+ {"version":3,"file":"styled.js","sources":["../../src/cart/styled.tsx"],"sourcesContent":["import { alpha, Box, Menu, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps, MenuProps } from '@mui/material'\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n // dark mode\r\n // '--color-bg': '#323234',\r\n // \"--color-text\": theme.palette.common.white,\r\n\r\n // light mode\r\n '--color-bg': '#ffffff',\r\n '--color-text': theme.palette.common.black,\r\n\r\n marginTop: '45px',\r\n '.MuiPaper-root': {\r\n overflow: 'visible',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: 'var(--color-text, #000000)',\r\n display: 'flex',\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: 'var(--color-bg, #ffffff)',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': { padding: 0 }\r\n}))\r\n\r\nexport const cartContentClasses = {\r\n root: 'CartContent-root',\r\n header: 'CartContent-header',\r\n footer: 'CartContent-footer',\r\n items: 'CartContent-items',\r\n item: 'CartContent-item',\r\n itemContent: 'CartContent-itemContent',\r\n itemImg: 'CartContent-itemImg',\r\n itemTitle: 'CartContent-itemTitle',\r\n itemPrice: 'CartContent-itemPrice',\r\n itemTag: 'CartContent-itemTag'\r\n}\r\n\r\nconst getCartContentClasses = (key: keyof typeof cartContentClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${cartContentClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const CartContentStyled: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n '--height-item': '80px',\r\n [getCartContentClasses('root', { prefix: '&' })]: {\r\n height: '100%'\r\n },\r\n [getCartContentClasses('header')]: {\r\n padding: '12px 16px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center'\r\n },\r\n [getCartContentClasses('footer')]: {\r\n padding: '6px 12px',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n position: 'relative'\r\n },\r\n [getCartContentClasses('items')]: {\r\n padding: '8px',\r\n overflowY: 'auto',\r\n height: '100%'\r\n },\r\n [getCartContentClasses('item')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 9px',\r\n transition: '0.3s',\r\n height: 'var(--height-item)',\r\n '& a': {\r\n textDecoration: 'none'\r\n },\r\n '&:hover': {\r\n background: '#fafafa'\r\n },\r\n '&:hover a': {\r\n textDecoration: 'underline'\r\n }\r\n },\r\n [getCartContentClasses('itemImg')]: {\r\n width: '60px',\r\n height: '60px',\r\n borderRadius: '6px',\r\n objectFit: 'cover',\r\n marginRight: '12px',\r\n flex: '0 0 auto',\r\n backgroundColor: alpha(theme.palette.grey[400], 0.2)\r\n },\r\n [getCartContentClasses('itemContent')]: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n minWidth: 0,\r\n position: 'relative'\r\n },\r\n [getCartContentClasses('itemTitle')]: {\r\n color: 'var(--color-body)',\r\n fontWeight: 600,\r\n flex: 1,\r\n width: '100%',\r\n margin: '0 12px',\r\n padding: '15px 0',\r\n minWidth: 0,\r\n maxWidth: '300px'\r\n },\r\n [getCartContentClasses('itemTag')]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: '12px',\r\n fontWeight: 600\r\n }\r\n}))\r\n"],"names":["MenuStyled","styled","Menu","_ref","theme","palette","common","black","marginTop","overflow","backgroundColor","borderRadius","shape","minWidth","maxWidth","boxShadow","animation","color","display","opacity","transform","content","position","width","height","top","right","spacing","zIndex","padding","cartContentClasses","root","header","footer","items","item","itemContent","itemImg","itemTitle","itemPrice","itemTag","getCartContentClasses","key","options","concat","prefix","suffix","CartContentStyled","Box","_ref2","_defineProperty","justifyContent","alignItems","overflowY","transition","textDecoration","background","objectFit","marginRight","flex","alpha","grey","fontWeight","margin","left"],"mappings":"+IAIO,IAAMA,EAAuCC,EAAOC,EAAPD,CAAa,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAM/E,aAAc,UACd,eAAgBA,EAAMC,QAAQC,OAAOC,MAErCC,UAAW,OACX,iBAAkB,CAChBC,SAAU,UACVC,gBAAiB,2BACjBC,aAAcP,EAAMQ,MAAMD,aAC1BE,SAAU,QACVC,SAAU,QACVC,UAAsI,4HACtIC,UAAW,2BACXR,UAAW,MACXS,MAAO,6BACPC,QAAS,OAET,wBAAyB,CACvB,KAAM,CAAEC,QAAS,EAAGC,UAAW,qBAC/B,OAAQ,CAAED,QAAS,EAAGC,UAAW,kBAGnC,YAAa,CACXC,QAAS,KACTC,SAAU,WACVZ,gBAAiB,2BACjBa,MAAO,OACPC,OAAQ,OACRC,IAAK,OACLC,MAAOtB,EAAMuB,QAAQ,GACrBP,UAAW,iCACXQ,OAAQ,IAGZ,oBAAqB,CAAElB,gBAAiB,eACxC,gBAAiB,CAAEmB,QAAS,GAC7B,GAEYC,EAAqB,CAChCC,KAAM,mBACNC,OAAQ,qBACRC,OAAQ,qBACRC,MAAO,oBACPC,KAAM,mBACNC,YAAa,0BACbC,QAAS,sBACTC,UAAW,wBACXC,UAAW,wBACXC,QAAS,uBAGLC,EAAwB,SAACC,EAAsCC,GACnE,MAAA,GAAAC,QAAUD,aAAAA,EAAAA,EAASE,SAAU,QAAED,OAAId,EAAmBY,IAAIE,QAAGD,aAAAA,EAAAA,EAASG,SAAU,GAClF,EAEaC,EAA6C9C,EAAO+C,EAAP/C,CAAY,SAAAgD,GAAA,IAAG7C,EAAK6C,EAAL7C,MAAK,OAAA8C,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CAC5E,gBAAiB,QAChBT,EAAsB,OAAQ,CAAEI,OAAQ,MAAS,CAChDrB,OAAQ,SAETiB,EAAsB,UAAY,CACjCZ,QAAS,YACTX,QAAS,OACTiC,eAAgB,gBAChBC,WAAY,WAEbX,EAAsB,UAAY,CACjCZ,QAAS,WACTX,QAAS,OACTiC,eAAgB,WAChB7B,SAAU,aAEXmB,EAAsB,SAAW,CAChCZ,QAAS,MACTwB,UAAW,OACX7B,OAAQ,SAETiB,EAAsB,QAAU,CAC/BvB,QAAS,OACTkC,WAAY,SACZvB,QAAS,QACTyB,WAAY,OACZ9B,OAAQ,qBACR,MAAO,CACL+B,eAAgB,QAElB,UAAW,CACTC,WAAY,WAEd,YAAa,CACXD,eAAgB,eAGnBd,EAAsB,WAAa,CAClClB,MAAO,OACPC,OAAQ,OACRb,aAAc,MACd8C,UAAW,QACXC,YAAa,OACbC,KAAM,WACNjD,gBAAiBkD,EAAMxD,EAAMC,QAAQwD,KAAK,KAAM,MAEjDpB,EAAsB,eAAiB,CACtCkB,KAAM,EACNzC,QAAS,OACTkC,WAAY,SACZvC,SAAU,EACVS,SAAU,aAEXmB,EAAsB,aAAe,CACpCxB,MAAO,oBACP6C,WAAY,IACZH,KAAM,EACNpC,MAAO,OACPwC,OAAQ,SACRlC,QAAS,SACThB,SAAU,EACVC,SAAU,UAEX2B,EAAsB,WAAa,CAClCnB,SAAU,WACVG,IAAK,EACLuC,KAAM,OACNF,WAAY,KACb"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as r,inherits as e,createClass as n,classCallCheck as t,callSuper as o,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as l}from"react/jsx-runtime";import{Fragment as c,Component as s}from"react";import{ImageWithFallback as m}from"dinocollab-core/components";import{Badge as d,Typography as p,Divider as u,Button as h,Box as f,IconButton as v}from"@mui/material";import{useMfeCartData as g,useMfeCartActions as C,MfeLink as b}from"dinocollab-core/mfe-shared";import x from"@mui/icons-material/Remove";import y from"@mui/icons-material/ShoppingCartOutlined";import S from"@mui/icons-material/ShoppingCartCheckout";import{DarkIconButton as k}from"../components/buttons.js";import{NoDataPanel as N}from"../components/no-data-panel.js";import{MenuStyled as j,CartContentStyled as P,cartContentClasses as E}from"./styled.js";import{getTotalData as I}from"./helpers.js";var O=function(){function r(e){var n;return t(this,r),n=o(this,r,[e]),i(n,"render",function(){return l(c,{children:[a(k,{onClick:function(r){return n.onOpen(r.currentTarget)},children:a(d,{badgeContent:n.props.data.length,color:"primary",children:a(y,{})})}),a(j,{disableScrollLock:!0,anchorEl:n.state.anchorEl,open:Boolean(n.state.anchorEl),onClose:n.onClose,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:n.renderContent()})]})}),i(n,"renderContent",function(){var r=I(n.props.data);return l(P,{children:[l("div",{className:E.header,children:[l(p,{variant:"h6",component:"span",sx:{flex:1},children:["Your Cart (",r.amount," items)"]}),l(p,{variant:"h6",component:"span",children:["Total: $ ",r.price.toFixed(2)]})]}),a(u,{}),l("div",{className:E.items,children:[n.props.data.map(function(r,e){return a(c,{children:n.renderItem(r)},"key"+e)}),n.props.data.length<1&&a(N,{title:"Your cart is empty",subTitle:"Try adding some products",sx:{height:"100%"}})]}),a(u,{}),a("div",{className:E.footer,children:a(h,{component:b,primaryHref:n.props.baseUrl.client+"/cart",secondaryHref:"cart",internal:"client"===n.props.site,color:"inherit",endIcon:a(S,{}),onClick:n.onClose,disabled:n.props.data.length<1,children:"Show in cart"})})]})}),i(n,"renderItem",function(r){var e,t,o,i=n.props.baseUrl.api+(null==r?void 0:r.PictureUrl);return l("div",{className:E.item,children:[a(m,{className:E.itemImg,src:i,title:i,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),l("div",{className:E.itemContent,children:[a(p,{className:E.itemTitle,noWrap:!0,variant:"subtitle1",children:null!==(e=r.ProductName)&&void 0!==e?e:"Unknown Product"}),l(f,{sx:{display:"flex",alignItems:"flex-end",gap:"2px",justifyContent:"flex-end"},children:[l(p,{variant:"subtitle1",children:["$ ",null!==(t=r.Amount)&&void 0!==t?t:0]}),l(p,{variant:"body1",sx:{fontSize:"14px",mb:"3px",color:"#818181"},children:["x",null!==(o=r.Amount)&&void 0!==o?o:0," urls"]})]})]}),a(v,{size:"small",onClick:function(){var e,t;return null===(e=(t=n.props).onRemove)||void 0===e?void 0:e.call(t,r)},sx:{color:"#818181"},children:a(x,{})})]})}),i(n,"onOpen",function(r){n.setState({anchorEl:r})}),i(n,"onClose",function(){n.setState({anchorEl:null})}),n.state={anchorEl:null},n}return e(r,s),n(r)}(),T=function(e){var n=g().items,t=C().removeFromCart;return a(O,r({data:n,onRemove:function(r){console.log("Removing item from cart:",r),t(r.ProductId)}},e))},z=function(e){var n=function(n){return a(T,r(r({},e),n))};return n.displayName="CartWidget",n};export{T as CartWidget,z as createCartWidget,T as default};
1
+ import{objectSpread2 as r,inherits as e,createClass as n,classCallCheck as o,callSuper as t,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as l}from"react/jsx-runtime";import{Fragment as c,Component as s}from"react";import{ImageWithFallback as m}from"dinocollab-core/components";import{Badge as d,Typography as p,Divider as u,Button as h,Box as f,IconButton as v}from"@mui/material";import{MfeLink as C}from"dinocollab-core/mfe-shared";import g from"@mui/icons-material/Remove";import b from"@mui/icons-material/ShoppingCartOutlined";import x from"@mui/icons-material/ShoppingCartCheckout";import{MenuStyled as y,CartContentStyled as k,cartContentClasses as N}from"./styled.js";import{getTotalData as P}from"./helpers.js";import{useCartStore as S,useCartActions as j}from"./hook.js";import{DarkIconButton as E}from"../components/buttons.js";import{NoDataPanel as I}from"../components/no-data-panel.js";var T=function(){function r(e){var n;return o(this,r),n=t(this,r,[e]),i(n,"render",function(){return l(c,{children:[a(E,{onClick:function(r){return n.onOpen(r.currentTarget)},children:a(d,{badgeContent:n.props.data.length,color:"primary",children:a(b,{})})}),a(y,{disableScrollLock:!0,anchorEl:n.state.anchorEl,open:Boolean(n.state.anchorEl),onClose:n.onClose,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:n.renderContent()})]})}),i(n,"renderContent",function(){var r=P(n.props.data);return l(k,{children:[l("div",{className:N.header,children:[l(p,{variant:"h6",component:"span",sx:{flex:1},children:["Your Cart (",r.amount," items)"]}),l(p,{variant:"h6",component:"span",children:["Total: $ ",r.price.toFixed(2)]})]}),a(u,{}),l("div",{className:N.items,children:[n.props.data.map(function(r,e){return a(c,{children:n.renderItem(r)},"key"+e)}),n.props.data.length<1&&a(I,{title:"Your cart is empty",subTitle:"Try adding some products",sx:{height:"100%"}})]}),a(u,{}),a("div",{className:N.footer,children:a(h,{component:C,primaryHref:n.props.baseUrl.client+"/cart",secondaryHref:"cart",internal:"client"===n.props.site,color:"inherit",endIcon:a(x,{}),onClick:n.onClose,disabled:n.props.data.length<1,children:"Show in cart"})})]})}),i(n,"renderItem",function(r){var e,o,t,i,c,s=n.props.baseUrl.api+(null==r?void 0:r.PictureUrl);return l("div",{className:N.item,children:[a(m,{className:N.itemImg,src:s,title:s,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),l("div",{className:N.itemContent,children:[a(p,{className:N.itemTag,variant:"caption",sx:{color:null!==(e=r.PriceColor)&&void 0!==e?e:"#000"},children:null!==(o=r.PriceName)&&void 0!==o?o:"Unknown Price"}),a(p,{className:N.itemTitle,noWrap:!0,variant:"subtitle1",children:null!==(t=r.ProductName)&&void 0!==t?t:"Unknown Product"}),l(f,{sx:{display:"flex",alignItems:"flex-end",gap:"2px",justifyContent:"flex-end"},children:[l(p,{variant:"subtitle1",children:["$ ",null!==(i=r.Price)&&void 0!==i?i:0]}),l(p,{variant:"body1",sx:{fontSize:"14px",mb:"3px",color:"#818181"},children:["x",null!==(c=r.Amount)&&void 0!==c?c:0," urls"]})]})]}),a(v,{size:"small",onClick:function(){var e,o;return null===(e=(o=n.props).onRemove)||void 0===e?void 0:e.call(o,r)},sx:{color:"#818181"},children:a(g,{})})]})}),i(n,"onOpen",function(r){n.setState({anchorEl:r})}),i(n,"onClose",function(){n.setState({anchorEl:null})}),n.state={anchorEl:null},n}return e(r,s),n(r)}(),O=function(e){var n=S().items,o=j().removeFromCart;return a(T,r({data:n,onRemove:function(r){o(r.ProductId)}},e))},U=function(e){var n=function(n){return a(O,r(r({},e),n))};return n.displayName="CartWidget",n};export{O as CartWidget,U as createCartWidget};
2
2
  //# sourceMappingURL=widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { useMemo } from 'react'\r\nimport { ImageWithFallback } from 'dinocollab-core/components'\r\nimport { Badge, Box, Button, Divider, IconButton, Typography } from '@mui/material'\r\nimport { useMfeCartData, useMfeCartActions, MfeLink } from 'dinocollab-core/mfe-shared'\r\nimport type { FC } from 'react'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'\r\nimport ShoppingCartCheckoutIcon from '@mui/icons-material/ShoppingCartCheckout'\r\nimport { ICartItem } from './types'\r\nimport { DarkIconButton } from '../components/buttons'\r\nimport { NoDataPanel } from '../components/no-data-panel'\r\nimport { cartContentClasses, CartContentStyled, MenuStyled } from './styled'\r\nimport type { IAppSiteBaseUrl, IAppSiteProps } from '../types'\r\nimport { getTotalData } from './helpers'\r\n\r\ninterface ICartWidgetBaseProps extends IAppSiteProps {\r\n baseUrl: IAppSiteBaseUrl\r\n}\r\n\r\ninterface ICartWidgetProps extends ICartWidgetBaseProps {\r\n data: ICartItem[]\r\n onRemove?: (item: ICartItem) => void\r\n}\r\n\r\ninterface ICartWidgetState {\r\n anchorEl: HTMLElement | null\r\n}\r\n\r\nclass CartWidgetBase extends Component<ICartWidgetProps, ICartWidgetState> {\r\n constructor(props: ICartWidgetProps) {\r\n super(props)\r\n this.state = { anchorEl: null }\r\n }\r\n\r\n render = () => (\r\n <Fragment>\r\n <DarkIconButton onClick={(e) => this.onOpen(e.currentTarget)}>\r\n <Badge badgeContent={this.props.data.length} color='primary'>\r\n <ShoppingCartOutlinedIcon />\r\n </Badge>\r\n </DarkIconButton>\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={this.state.anchorEl}\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={this.onClose}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n {this.renderContent()}\r\n </MenuStyled>\r\n </Fragment>\r\n )\r\n\r\n renderContent = () => {\r\n const totalData = getTotalData(this.props.data)\r\n return (\r\n <CartContentStyled>\r\n <div className={cartContentClasses.header}>\r\n <Typography variant='h6' component='span' sx={{ flex: 1 }}>\r\n Your Cart ({totalData.amount} items)\r\n </Typography>\r\n <Typography variant='h6' component='span'>\r\n Total: $ {totalData.price.toFixed(2)}\r\n </Typography>\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.items}>\r\n {this.props.data.map((x, i) => (\r\n <Fragment key={'key' + i}>{this.renderItem(x)}</Fragment>\r\n ))}\r\n {this.props.data.length < 1 && <NoDataPanel title='Your cart is empty' subTitle='Try adding some products' sx={{ height: '100%' }} />}\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.footer}>\r\n <Button\r\n component={MfeLink}\r\n primaryHref={this.props.baseUrl.client + '/cart'}\r\n secondaryHref='cart'\r\n internal={this.props.site === 'client'}\r\n color='inherit'\r\n endIcon={<ShoppingCartCheckoutIcon />}\r\n onClick={this.onClose}\r\n disabled={this.props.data.length < 1}\r\n >\r\n Show in cart\r\n </Button>\r\n </div>\r\n </CartContentStyled>\r\n )\r\n }\r\n\r\n renderItem = (item: ICartItem) => {\r\n const src = this.props.baseUrl.api + item?.PictureUrl\r\n return (\r\n <div className={cartContentClasses.item}>\r\n <ImageWithFallback\r\n className={cartContentClasses.itemImg}\r\n src={src}\r\n title={src}\r\n fallbackSrc='images/default-video.webp'\r\n alt='product-picture'\r\n />\r\n <div className={cartContentClasses.itemContent}>\r\n <Typography className={cartContentClasses.itemTitle} noWrap variant='subtitle1'>\r\n {item.ProductName ?? 'Unknown Product'}\r\n </Typography>\r\n <Box sx={{ display: 'flex', alignItems: 'flex-end', gap: '2px', justifyContent: 'flex-end' }}>\r\n <Typography variant='subtitle1'>$ {item.Amount ?? 0}</Typography>\r\n <Typography variant='body1' sx={{ fontSize: '14px', mb: '3px', color: '#818181' }}>\r\n x{item.Amount ?? 0} urls\r\n </Typography>\r\n </Box>\r\n </div>\r\n <IconButton size='small' onClick={() => this.props.onRemove?.(item)} sx={{ color: '#818181' }}>\r\n <RemoveIcon />\r\n </IconButton>\r\n </div>\r\n )\r\n }\r\n\r\n onOpen = (target: HTMLElement) => {\r\n this.setState({ anchorEl: target })\r\n }\r\n\r\n onClose = () => {\r\n this.setState({ anchorEl: null })\r\n }\r\n}\r\n\r\nexport const CartWidget: FC<ICartWidgetBaseProps> = (props) => {\r\n const { items } = useMfeCartData<ICartItem>()\r\n const { removeFromCart } = useMfeCartActions()\r\n\r\n return (\r\n <CartWidgetBase\r\n data={items}\r\n onRemove={(x) => {\r\n console.log('Removing item from cart:', x)\r\n\r\n removeFromCart(x.ProductId)\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\nexport default CartWidget\r\n\r\nexport const createCartWidget = (params: ICartWidgetBaseProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetBaseProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartWidgetBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_jsxs","Fragment","children","_jsx","DarkIconButton","onClick","e","onOpen","currentTarget","Badge","badgeContent","data","length","color","ShoppingCartOutlinedIcon","MenuStyled","disableScrollLock","anchorEl","state","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","renderContent","totalData","getTotalData","CartContentStyled","className","cartContentClasses","header","Typography","variant","sx","flex","amount","price","toFixed","Divider","items","map","x","i","renderItem","NoDataPanel","title","subTitle","height","footer","Button","MfeLink","primaryHref","baseUrl","client","secondaryHref","internal","site","endIcon","ShoppingCartCheckoutIcon","disabled","item","_item$ProductName","_item$Amount","_item$Amount2","src","api","PictureUrl","ImageWithFallback","itemImg","fallbackSrc","alt","itemContent","itemTitle","noWrap","ProductName","Box","display","alignItems","gap","justifyContent","Amount","fontSize","mb","IconButton","size","_this$props$onRemove","_this$props","onRemove","call","RemoveIcon","target","setState","_inherits","Component","_createClass","CartWidget","useMfeCartData","removeFromCart","useMfeCartActions","_objectSpread","console","log","ProductId","createCartWidget","params","_CartWidget","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Component, Fragment, useCallback } from 'react'\r\nimport { ImageWithFallback } from 'dinocollab-core/components'\r\nimport { Badge, Box, Button, Divider, IconButton, Typography } from '@mui/material'\r\nimport { MfeLink } from 'dinocollab-core/mfe-shared'\r\nimport type { FC } from 'react'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'\r\nimport ShoppingCartCheckoutIcon from '@mui/icons-material/ShoppingCartCheckout'\r\nimport { ICartItem } from './types'\r\nimport { cartContentClasses, CartContentStyled, MenuStyled } from './styled'\r\nimport { getTotalData } from './helpers'\r\nimport { useCartActions, useCartStore } from './hook'\r\nimport { IAppSiteBaseUrl, IAppSiteProps } from '../types'\r\nimport { DarkIconButton, NoDataPanel } from '../components'\r\n\r\ninterface ICartWidgetBaseProps extends IAppSiteProps {\r\n baseUrl: IAppSiteBaseUrl\r\n /** Optional storage key to differentiate between different cart instances */\r\n storageKey?: string\r\n}\r\n\r\ninterface ICartWidgetProps extends ICartWidgetBaseProps {\r\n data: ICartItem[]\r\n onRemove?: (item: ICartItem) => void\r\n}\r\n\r\ninterface ICartWidgetState {\r\n anchorEl: HTMLElement | null\r\n}\r\n\r\nclass CartWidgetBase extends Component<ICartWidgetProps, ICartWidgetState> {\r\n constructor(props: ICartWidgetProps) {\r\n super(props)\r\n this.state = { anchorEl: null }\r\n }\r\n\r\n render = () => (\r\n <Fragment>\r\n <DarkIconButton onClick={(e) => this.onOpen(e.currentTarget)}>\r\n <Badge badgeContent={this.props.data.length} color='primary'>\r\n <ShoppingCartOutlinedIcon />\r\n </Badge>\r\n </DarkIconButton>\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={this.state.anchorEl}\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={this.onClose}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n {this.renderContent()}\r\n </MenuStyled>\r\n </Fragment>\r\n )\r\n\r\n renderContent = () => {\r\n const totalData = getTotalData(this.props.data)\r\n return (\r\n <CartContentStyled>\r\n <div className={cartContentClasses.header}>\r\n <Typography variant='h6' component='span' sx={{ flex: 1 }}>\r\n Your Cart ({totalData.amount} items)\r\n </Typography>\r\n <Typography variant='h6' component='span'>\r\n Total: $ {totalData.price.toFixed(2)}\r\n </Typography>\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.items}>\r\n {this.props.data.map((x, i) => (\r\n <Fragment key={'key' + i}>{this.renderItem(x)}</Fragment>\r\n ))}\r\n {this.props.data.length < 1 && <NoDataPanel title='Your cart is empty' subTitle='Try adding some products' sx={{ height: '100%' }} />}\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.footer}>\r\n <Button\r\n component={MfeLink}\r\n primaryHref={this.props.baseUrl.client + '/cart'}\r\n secondaryHref='cart'\r\n internal={this.props.site === 'client'}\r\n color='inherit'\r\n endIcon={<ShoppingCartCheckoutIcon />}\r\n onClick={this.onClose}\r\n disabled={this.props.data.length < 1}\r\n >\r\n Show in cart\r\n </Button>\r\n </div>\r\n </CartContentStyled>\r\n )\r\n }\r\n\r\n renderItem = (item: ICartItem) => {\r\n const src = this.props.baseUrl.api + item?.PictureUrl\r\n return (\r\n <div className={cartContentClasses.item}>\r\n <ImageWithFallback\r\n className={cartContentClasses.itemImg}\r\n src={src}\r\n title={src}\r\n fallbackSrc='images/default-video.webp'\r\n alt='product-picture'\r\n />\r\n <div className={cartContentClasses.itemContent}>\r\n <Typography className={cartContentClasses.itemTag} variant='caption' sx={{ color: item.PriceColor ?? '#000' }}>\r\n {item.PriceName ?? 'Unknown Price'}\r\n </Typography>\r\n <Typography className={cartContentClasses.itemTitle} noWrap variant='subtitle1'>\r\n {item.ProductName ?? 'Unknown Product'}\r\n </Typography>\r\n <Box sx={{ display: 'flex', alignItems: 'flex-end', gap: '2px', justifyContent: 'flex-end' }}>\r\n <Typography variant='subtitle1'>$ {item.Price ?? 0}</Typography>\r\n <Typography variant='body1' sx={{ fontSize: '14px', mb: '3px', color: '#818181' }}>\r\n x{item.Amount ?? 0} urls\r\n </Typography>\r\n </Box>\r\n </div>\r\n <IconButton size='small' onClick={() => this.props.onRemove?.(item)} sx={{ color: '#818181' }}>\r\n <RemoveIcon />\r\n </IconButton>\r\n </div>\r\n )\r\n }\r\n\r\n onOpen = (target: HTMLElement) => {\r\n this.setState({ anchorEl: target })\r\n }\r\n\r\n onClose = () => {\r\n this.setState({ anchorEl: null })\r\n }\r\n}\r\n\r\nexport const CartWidget: FC<ICartWidgetBaseProps> = (props) => {\r\n const { items } = useCartStore()\r\n const { removeFromCart } = useCartActions<ICartItem>()\r\n\r\n return (\r\n <CartWidgetBase\r\n data={items}\r\n onRemove={(x) => {\r\n removeFromCart(x.ProductId)\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport const createCartWidget = (params: ICartWidgetBaseProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetBaseProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartWidgetBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_jsxs","Fragment","children","_jsx","DarkIconButton","onClick","e","onOpen","currentTarget","Badge","badgeContent","data","length","color","ShoppingCartOutlinedIcon","MenuStyled","disableScrollLock","anchorEl","state","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","renderContent","totalData","getTotalData","CartContentStyled","className","cartContentClasses","header","Typography","variant","sx","flex","amount","price","toFixed","Divider","items","map","x","i","renderItem","NoDataPanel","title","subTitle","height","footer","Button","MfeLink","primaryHref","baseUrl","client","secondaryHref","internal","site","endIcon","ShoppingCartCheckoutIcon","disabled","item","_item$PriceColor","_item$PriceName","_item$ProductName","_item$Price","_item$Amount","src","api","PictureUrl","ImageWithFallback","itemImg","fallbackSrc","alt","itemContent","itemTag","PriceColor","PriceName","itemTitle","noWrap","ProductName","Box","display","alignItems","gap","justifyContent","Price","fontSize","mb","Amount","IconButton","size","_this$props$onRemove","_this$props","onRemove","call","RemoveIcon","target","setState","_inherits","Component","_createClass","CartWidget","useCartStore","removeFromCart","useCartActions","_objectSpread","ProductId","createCartWidget","params","_CartWidget","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as e,defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";import{styled as a,Box as o}from"@mui/material";var r={root:"AppHeader-root",rootFixed:"AppHeader-rootFixed",content:"AppHeader-content",navItem:"AppHeader-navItem",navItems:"AppHeader-navItems",navItemIcon:"AppHeader-navItemIcon",navItemSelected:"AppHeader-navItemSelected",subMenu:"AppHeader-subMenu",subMenuItem:"AppHeader-subMenuItem",subMenuTitle:"AppHeader-subMenuTitle",subNavItem:"AppHeader-subNavItem",subNavItemIcon:"AppHeader-subNavItemIcon",subNavItemText:"AppHeader-subNavItemContent"},i=function(e,t){return"".concat((null==t?void 0:t.prefix)||"",".").concat(r[e]).concat((null==t?void 0:t.suffix)||"")},p=a(function(t){return n(o,e({component:"header"},t))})(function(e){var n=e.theme;return t(t(t({},i("rootFixed",{prefix:"& > "}),{zIndex:n.zIndex.appBar,height:"var(--height-header, 114px)",backgroundColor:"var(--color-header, #1b1b1b)",color:n.palette.common.white,position:"fixed",left:0,top:0,width:"100vw"}),i("content"),{display:"flex",alignItems:"center",justifyContent:"space-between",height:"100%",maxWidth:"var(--max-width, 1688px)"}),"&::before",{content:'""',display:"block",height:"var(--height-header, 114px)",width:"100%"})});p.displayName="HeaderStyled";var m=a(function(t){return n(o,e({component:"nav"},t))})(function(e){var n=e.theme;return t(t(t(t({display:"flex",alignItems:"center"},i("navItems"),{listStyle:"none",display:"flex",gap:n.spacing(.5),margin:0,padding:0}),i("navItem"),{textDecoration:"none","& > button.MuiButtonBase-root .MuiButton-icon":{marginLeft:0},"&:hover":t(t({},i("navItemIcon"),{transform:"rotate(0deg) scale(1.2)"}),i("navItemSelected"),t({},i("navItemIcon"),{transform:"rotate(180deg) scale(1.2)"}))}),i("navItemIcon"),{fontSize:"1.25rem",transition:"transform 0.3s ease"}),i("navItemSelected"),t(t({},i("navItemIcon"),{transform:"rotate(180deg) scale(1.2)"}),"& > button.MuiButtonBase-root",{backgroundColor:"rgba(249, 169, 37, 0.1) !important"}))});m.displayName="NavStyled";export{p as HeaderStyled,m as NavStyled,r as appHeaderClasses};
1
+ import{objectSpread2 as e,defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";import{styled as a,Box as o}from"@mui/material";var r={root:"AppHeader-root",rootFixed:"AppHeader-rootFixed",content:"AppHeader-content",navItem:"AppHeader-navItem",navItems:"AppHeader-navItems",navItemIcon:"AppHeader-navItemIcon",navItemSelected:"AppHeader-navItemSelected",subMenu:"AppHeader-subMenu",subMenuItem:"AppHeader-subMenuItem",subMenuTitle:"AppHeader-subMenuTitle",subNavItem:"AppHeader-subNavItem",subNavItemIcon:"AppHeader-subNavItemIcon",subNavItemText:"AppHeader-subNavItemContent"},i=function(e,t){return"".concat((null==t?void 0:t.prefix)||"",".").concat(r[e]).concat((null==t?void 0:t.suffix)||"")},p=a(function(t){return n(o,e({component:"header"},t))})(function(e){var n=e.theme;return t(t(t({},i("rootFixed",{prefix:"& > "}),{zIndex:1200,height:"var(--height-header, 114px)",backgroundColor:"var(--color-header, #1b1b1b)",color:n.palette.common.white,position:"fixed",left:0,top:0,width:"100vw"}),i("content"),{display:"flex",alignItems:"center",justifyContent:"space-between",height:"100%",maxWidth:"var(--max-width, 1688px)"}),"&::before",{content:'""',display:"block",height:"var(--height-header, 114px)",width:"100%"})});p.displayName="HeaderStyled";var m=a(function(t){return n(o,e({component:"nav"},t))})(function(e){var n=e.theme;return t(t(t(t({display:"flex",alignItems:"center"},i("navItems"),{listStyle:"none",display:"flex",gap:n.spacing(.5),margin:0,padding:0}),i("navItem"),{textDecoration:"none","& > button.MuiButtonBase-root .MuiButton-icon":{marginLeft:0},"&:hover":t(t({},i("navItemIcon"),{transform:"rotate(0deg) scale(1.2)"}),i("navItemSelected"),t({},i("navItemIcon"),{transform:"rotate(180deg) scale(1.2)"}))}),i("navItemIcon"),{fontSize:"1.25rem",transition:"transform 0.3s ease"}),i("navItemSelected"),t(t({},i("navItemIcon"),{transform:"rotate(180deg) scale(1.2)"}),"& > button.MuiButtonBase-root",{backgroundColor:"rgba(249, 169, 37, 0.1) !important"}))});m.displayName="NavStyled";export{p as HeaderStyled,m as NavStyled,r as appHeaderClasses};
2
2
  //# sourceMappingURL=app-header.styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-header.styled.js","sources":["../../src/layout-global/app-header.styled.tsx"],"sourcesContent":["import { Box, BoxProps, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\n\r\nexport const appHeaderClasses = {\r\n root: 'AppHeader-root',\r\n rootFixed: 'AppHeader-rootFixed',\r\n content: 'AppHeader-content',\r\n navItem: 'AppHeader-navItem',\r\n navItems: 'AppHeader-navItems',\r\n navItemIcon: 'AppHeader-navItemIcon',\r\n navItemSelected: 'AppHeader-navItemSelected',\r\n subMenu: 'AppHeader-subMenu',\r\n subMenuItem: 'AppHeader-subMenuItem',\r\n subMenuTitle: 'AppHeader-subMenuTitle',\r\n subNavItem: 'AppHeader-subNavItem',\r\n subNavItemIcon: 'AppHeader-subNavItemIcon',\r\n subNavItemText: 'AppHeader-subNavItemContent'\r\n}\r\n\r\nconst getClasses = (key: keyof typeof appHeaderClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${appHeaderClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const HeaderStyled: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='header' {...p} />)(({ theme }) => ({\r\n [getClasses('rootFixed', { prefix: '& > ' })]: {\r\n zIndex: theme.zIndex.appBar,\r\n height: 'var(--height-header, 114px)',\r\n backgroundColor: 'var(--color-header, #1b1b1b)',\r\n color: theme.palette.common.white,\r\n position: 'fixed',\r\n left: 0,\r\n top: 0,\r\n width: '100vw'\r\n },\r\n [getClasses('content')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n height: '100%',\r\n maxWidth: 'var(--max-width, 1688px)'\r\n },\r\n '&::before': {\r\n content: '\"\"',\r\n display: 'block',\r\n height: 'var(--height-header, 114px)',\r\n width: '100%'\r\n }\r\n}))\r\nexport type HeaderStyledType = typeof HeaderStyled\r\nHeaderStyled.displayName = 'HeaderStyled'\r\n\r\nexport const NavStyled: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='nav' {...p} />)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n [getClasses('navItems')]: {\r\n listStyle: 'none',\r\n display: 'flex',\r\n gap: theme.spacing(0.5),\r\n margin: 0,\r\n padding: 0\r\n },\r\n [getClasses('navItem')]: {\r\n textDecoration: 'none',\r\n '& > button.MuiButtonBase-root .MuiButton-icon': {\r\n marginLeft: 0\r\n },\r\n '&:hover': {\r\n [getClasses('navItemIcon')]: {\r\n transform: 'rotate(0deg) scale(1.2)'\r\n },\r\n [getClasses('navItemSelected')]: {\r\n [getClasses('navItemIcon')]: {\r\n transform: 'rotate(180deg) scale(1.2)'\r\n }\r\n }\r\n }\r\n },\r\n [getClasses('navItemIcon')]: {\r\n fontSize: '1.25rem',\r\n transition: 'transform 0.3s ease'\r\n },\r\n [getClasses('navItemSelected')]: {\r\n [getClasses('navItemIcon')]: {\r\n transform: 'rotate(180deg) scale(1.2)'\r\n },\r\n '& > button.MuiButtonBase-root': {\r\n backgroundColor: 'rgba(249, 169, 37, 0.1) !important'\r\n }\r\n }\r\n}))\r\nNavStyled.displayName = 'NavStyled'\r\n"],"names":["appHeaderClasses","root","rootFixed","content","navItem","navItems","navItemIcon","navItemSelected","subMenu","subMenuItem","subMenuTitle","subNavItem","subNavItemIcon","subNavItemText","getClasses","key","options","concat","prefix","suffix","HeaderStyled","styled","p","_jsx","Box","_objectSpread","component","_ref","theme","_defineProperty","zIndex","appBar","height","backgroundColor","color","palette","common","white","position","left","top","width","display","alignItems","justifyContent","maxWidth","displayName","NavStyled","_ref3","listStyle","gap","spacing","margin","padding","textDecoration","marginLeft","transform","fontSize","transition"],"mappings":"qLAGO,IAAMA,EAAmB,CAC9BC,KAAM,iBACNC,UAAW,sBACXC,QAAS,oBACTC,QAAS,oBACTC,SAAU,qBACVC,YAAa,wBACbC,gBAAiB,4BACjBC,QAAS,oBACTC,YAAa,wBACbC,aAAc,yBACdC,WAAY,uBACZC,eAAgB,2BAChBC,eAAgB,+BAGZC,EAAa,SAACC,EAAoCC,GACtD,MAAA,GAAAC,QAAUD,aAAAA,EAAAA,EAASE,SAAU,QAAED,OAAIjB,EAAiBe,IAAIE,QAAGD,aAAAA,EAAAA,EAASG,SAAU,GAChF,EAEaC,EAAwCC,EAAO,SAACC,GAAW,OAAKC,EAACC,EAAGC,EAAA,CAACC,UAAU,UAAaJ,GAAK,EAAzDD,CAA2D,SAAAM,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAC,EAAAA,EAAAA,EACrHf,CAAAA,EAAAA,EAAW,YAAa,CAAEI,OAAQ,SAAY,CAC7CY,OAAQF,EAAME,OAAOC,OACrBC,OAAQ,8BACRC,gBAAiB,+BACjBC,MAAON,EAAMO,QAAQC,OAAOC,MAC5BC,SAAU,QACVC,KAAM,EACNC,IAAK,EACLC,MAAO,UAER3B,EAAW,WAAa,CACvB4B,QAAS,OACTC,WAAY,SACZC,eAAgB,gBAChBZ,OAAQ,OACRa,SAAU,6BAEZ,YAAa,CACX1C,QAAS,KACTuC,QAAS,QACTV,OAAQ,8BACRS,MAAO,QACR,GAGHrB,EAAa0B,YAAc,mBAEdC,EAAqC1B,EAAO,SAACC,GAAW,OAAKC,EAACC,EAAGC,EAAA,CAACC,UAAU,OAAUJ,GAAK,EAAtDD,CAAwD,SAAA2B,GAAA,IAAGpB,EAAKoB,EAALpB,MAAK,OAAAC,EAAAA,EAAAA,EAAAA,EAAA,CAChHa,QAAS,OACTC,WAAY,UACX7B,EAAW,YAAc,CACxBmC,UAAW,OACXP,QAAS,OACTQ,IAAKtB,EAAMuB,QAAQ,IACnBC,OAAQ,EACRC,QAAS,IAEVvC,EAAW,WAAa,CACvBwC,eAAgB,OAChB,gDAAiD,CAC/CC,WAAY,GAEd,UAAS1B,EAAAA,KACNf,EAAW,eAAiB,CAC3B0C,UAAW,4BAEZ1C,EAAW,mBAAkBe,EAAA,GAC3Bf,EAAW,eAAiB,CAC3B0C,UAAW,iCAKlB1C,EAAW,eAAiB,CAC3B2C,SAAU,UACVC,WAAY,wBAEb5C,EAAW,mBAAkBe,EAAAA,EAC3Bf,CAAAA,EAAAA,EAAW,eAAiB,CAC3B0C,UAAW,8BAEb,gCAAiC,CAC/BvB,gBAAiB,uCAClB,GAGLc,EAAUD,YAAc"}
1
+ {"version":3,"file":"app-header.styled.js","sources":["../../src/layout-global/app-header.styled.tsx"],"sourcesContent":["import { Box, BoxProps, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\n\r\nexport const appHeaderClasses = {\r\n root: 'AppHeader-root',\r\n rootFixed: 'AppHeader-rootFixed',\r\n content: 'AppHeader-content',\r\n navItem: 'AppHeader-navItem',\r\n navItems: 'AppHeader-navItems',\r\n navItemIcon: 'AppHeader-navItemIcon',\r\n navItemSelected: 'AppHeader-navItemSelected',\r\n subMenu: 'AppHeader-subMenu',\r\n subMenuItem: 'AppHeader-subMenuItem',\r\n subMenuTitle: 'AppHeader-subMenuTitle',\r\n subNavItem: 'AppHeader-subNavItem',\r\n subNavItemIcon: 'AppHeader-subNavItemIcon',\r\n subNavItemText: 'AppHeader-subNavItemContent'\r\n}\r\n\r\nconst getClasses = (key: keyof typeof appHeaderClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${appHeaderClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const HeaderStyled: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='header' {...p} />)(({ theme }) => ({\r\n [getClasses('rootFixed', { prefix: '& > ' })]: {\r\n zIndex: 1200, // theme.zIndex.appBar,\r\n height: 'var(--height-header, 114px)',\r\n backgroundColor: 'var(--color-header, #1b1b1b)',\r\n color: theme.palette.common.white,\r\n position: 'fixed',\r\n left: 0,\r\n top: 0,\r\n width: '100vw'\r\n },\r\n [getClasses('content')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n height: '100%',\r\n maxWidth: 'var(--max-width, 1688px)'\r\n },\r\n '&::before': {\r\n content: '\"\"',\r\n display: 'block',\r\n height: 'var(--height-header, 114px)',\r\n width: '100%'\r\n }\r\n}))\r\nexport type HeaderStyledType = typeof HeaderStyled\r\nHeaderStyled.displayName = 'HeaderStyled'\r\n\r\nexport const NavStyled: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='nav' {...p} />)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n [getClasses('navItems')]: {\r\n listStyle: 'none',\r\n display: 'flex',\r\n gap: theme.spacing(0.5),\r\n margin: 0,\r\n padding: 0\r\n },\r\n [getClasses('navItem')]: {\r\n textDecoration: 'none',\r\n '& > button.MuiButtonBase-root .MuiButton-icon': {\r\n marginLeft: 0\r\n },\r\n '&:hover': {\r\n [getClasses('navItemIcon')]: {\r\n transform: 'rotate(0deg) scale(1.2)'\r\n },\r\n [getClasses('navItemSelected')]: {\r\n [getClasses('navItemIcon')]: {\r\n transform: 'rotate(180deg) scale(1.2)'\r\n }\r\n }\r\n }\r\n },\r\n [getClasses('navItemIcon')]: {\r\n fontSize: '1.25rem',\r\n transition: 'transform 0.3s ease'\r\n },\r\n [getClasses('navItemSelected')]: {\r\n [getClasses('navItemIcon')]: {\r\n transform: 'rotate(180deg) scale(1.2)'\r\n },\r\n '& > button.MuiButtonBase-root': {\r\n backgroundColor: 'rgba(249, 169, 37, 0.1) !important'\r\n }\r\n }\r\n}))\r\nNavStyled.displayName = 'NavStyled'\r\n"],"names":["appHeaderClasses","root","rootFixed","content","navItem","navItems","navItemIcon","navItemSelected","subMenu","subMenuItem","subMenuTitle","subNavItem","subNavItemIcon","subNavItemText","getClasses","key","options","concat","prefix","suffix","HeaderStyled","styled","p","_jsx","Box","_objectSpread","component","_ref","theme","_defineProperty","zIndex","height","backgroundColor","color","palette","common","white","position","left","top","width","display","alignItems","justifyContent","maxWidth","displayName","NavStyled","_ref3","listStyle","gap","spacing","margin","padding","textDecoration","marginLeft","transform","fontSize","transition"],"mappings":"qLAGO,IAAMA,EAAmB,CAC9BC,KAAM,iBACNC,UAAW,sBACXC,QAAS,oBACTC,QAAS,oBACTC,SAAU,qBACVC,YAAa,wBACbC,gBAAiB,4BACjBC,QAAS,oBACTC,YAAa,wBACbC,aAAc,yBACdC,WAAY,uBACZC,eAAgB,2BAChBC,eAAgB,+BAGZC,EAAa,SAACC,EAAoCC,GACtD,MAAA,GAAAC,QAAUD,aAAAA,EAAAA,EAASE,SAAU,QAAED,OAAIjB,EAAiBe,IAAIE,QAAGD,aAAAA,EAAAA,EAASG,SAAU,GAChF,EAEaC,EAAwCC,EAAO,SAACC,GAAW,OAAKC,EAACC,EAAGC,EAAA,CAACC,UAAU,UAAaJ,GAAK,EAAzDD,CAA2D,SAAAM,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAC,EAAAA,EAAAA,EACrHf,CAAAA,EAAAA,EAAW,YAAa,CAAEI,OAAQ,SAAY,CAC7CY,OAAQ,KACRC,OAAQ,8BACRC,gBAAiB,+BACjBC,MAAOL,EAAMM,QAAQC,OAAOC,MAC5BC,SAAU,QACVC,KAAM,EACNC,IAAK,EACLC,MAAO,UAER1B,EAAW,WAAa,CACvB2B,QAAS,OACTC,WAAY,SACZC,eAAgB,gBAChBZ,OAAQ,OACRa,SAAU,6BAEZ,YAAa,CACXzC,QAAS,KACTsC,QAAS,QACTV,OAAQ,8BACRS,MAAO,QACR,GAGHpB,EAAayB,YAAc,mBAEdC,EAAqCzB,EAAO,SAACC,GAAW,OAAKC,EAACC,EAAGC,EAAA,CAACC,UAAU,OAAUJ,GAAK,EAAtDD,CAAwD,SAAA0B,GAAA,IAAGnB,EAAKmB,EAALnB,MAAK,OAAAC,EAAAA,EAAAA,EAAAA,EAAA,CAChHY,QAAS,OACTC,WAAY,UACX5B,EAAW,YAAc,CACxBkC,UAAW,OACXP,QAAS,OACTQ,IAAKrB,EAAMsB,QAAQ,IACnBC,OAAQ,EACRC,QAAS,IAEVtC,EAAW,WAAa,CACvBuC,eAAgB,OAChB,gDAAiD,CAC/CC,WAAY,GAEd,UAASzB,EAAAA,KACNf,EAAW,eAAiB,CAC3ByC,UAAW,4BAEZzC,EAAW,mBAAkBe,EAAA,GAC3Bf,EAAW,eAAiB,CAC3ByC,UAAW,iCAKlBzC,EAAW,eAAiB,CAC3B0C,SAAU,UACVC,WAAY,wBAEb3C,EAAW,mBAAkBe,EAAAA,EAC3Bf,CAAAA,EAAAA,EAAW,eAAiB,CAC3ByC,UAAW,8BAEb,gCAAiC,CAC/BvB,gBAAiB,uCAClB,GAGLc,EAAUD,YAAc"}
@@ -0,0 +1,62 @@
1
+ /// <reference types="node" />
2
+ import EventEmitter from 'events';
3
+ export type IIdGetter<T = any> = (item: T) => string;
4
+ type IItem = Record<string, any>;
5
+ interface IEventOptions {
6
+ message?: string;
7
+ }
8
+ export interface ICartEventConfigs {
9
+ stateChange: [{
10
+ items: IItem;
11
+ options?: IEventOptions;
12
+ }];
13
+ requestState: [{
14
+ options?: IEventOptions;
15
+ }];
16
+ add: [{
17
+ item: IItem;
18
+ }];
19
+ update: [{
20
+ id: string;
21
+ updates: Partial<IItem>;
22
+ }];
23
+ remove: [{
24
+ id: string;
25
+ }];
26
+ clear: [];
27
+ setState: [{
28
+ items: IItem;
29
+ }];
30
+ }
31
+ export declare class CartEventStore extends EventEmitter<ICartEventConfigs> {
32
+ constructor();
33
+ /**
34
+ * Subscribe to a specific channel
35
+ * @param channel The channel to subscribe to
36
+ * @param callback Function to call when an event occurs on this channel
37
+ * @returns Unsubscribe function to remove the event listener
38
+ */
39
+ _createWrapListener: (callback: (...payload: any[]) => void) => (...payload: any[]) => void;
40
+ subscribe<K extends keyof ICartEventConfigs>(eventName: K, listener: K extends keyof ICartEventConfigs ? (ICartEventConfigs[K] extends unknown[] ? (...args: ICartEventConfigs[K]) => void : never) : never, isTry?: boolean): () => void;
41
+ }
42
+ export declare function getCartEventStore(): CartEventStore;
43
+ export interface ICartStoreConfigs {
44
+ idGetter: IIdGetter;
45
+ localStorageKey?: string;
46
+ }
47
+ export declare class MfeCartStore {
48
+ private configs;
49
+ constructor(config: ICartStoreConfigs);
50
+ emitStateChange(items: IItem): void;
51
+ add(item: any, overwrite?: boolean): this;
52
+ addMany(items: any[], overwrite?: boolean): this;
53
+ updateOrAdd(id: string, updates: Partial<any>): this;
54
+ remove(id: string): this;
55
+ clear(): this;
56
+ getState(): IItem;
57
+ getItems(): any[];
58
+ private loadFromLocalStorage;
59
+ private saveToLocalStorage;
60
+ }
61
+ export {};
62
+ //# sourceMappingURL=cart-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cart-store.d.ts","sourceRoot":"","sources":["../../../src/cart/cart-store.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;AAEpD,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEhC,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IACxD,YAAY,EAAE,CAAC;QAAE,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IAC3C,GAAG,EAAE,CAAC;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,CAAC,CAAA;IACtB,MAAM,EAAE,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAAE,CAAC,CAAA;IACjD,MAAM,EAAE,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxB,KAAK,EAAE,EAAE,CAAA;IACT,QAAQ,EAAE,CAAC;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAA;CAC7B;AAED,qBAAa,cAAe,SAAQ,YAAY,CAAC,iBAAiB,CAAC;;IAIjE;;;;;OAKG;IACH,mBAAmB,0BAA2B,GAAG,EAAE,KAAK,IAAI,kBACtC,GAAG,EAAE,UAO1B;IACD,SAAS,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACzC,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,SAAS,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,EAChJ,KAAK,GAAE,OAAc;CAQxB;AAED,wBAAgB,iBAAiB,mBAQhC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAmB;gBACtB,MAAM,EAAE,iBAAiB;IAQrC,eAAe,CAAC,KAAK,EAAE,KAAK;IAM5B,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,GAAE,OAAe;IASzC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,GAAE,OAAe;IAWhD,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;IAY7C,MAAM,CAAC,EAAE,EAAE,MAAM;IASjB,KAAK;IAKL,QAAQ,IAAI,KAAK;IAGjB,QAAQ,IAAI,GAAG,EAAE;IAMjB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,kBAAkB;CAO3B"}
@@ -1,5 +1,16 @@
1
- import { ICartItem } from "./types";
1
+ import { ICartItem } from './types';
2
+ /**
3
+ * Convert a string to an array of URLs using improved regex
4
+ * @param text Input string
5
+ * @returns Array of matched URLs
6
+ */
2
7
  export declare const convertStringToLinks: (text: string) => string[];
8
+ /**
9
+ * Calculate total amount and price from an array of cart items
10
+ * Note: If item.Amount is undefined, it will be treated as 0
11
+ * @param data Array of ICartItem
12
+ * @returns Object with total amount and total price
13
+ */
3
14
  export declare const getTotalData: (data: ICartItem[]) => {
4
15
  amount: number;
5
16
  price: number;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cart/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,eAAO,MAAM,oBAAoB,SAAU,MAAM,KAAG,MAAM,EAKzD,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,SAAS,EAAE;;;CAQ7C,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cart/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,SAAU,MAAM,KAAG,MAAM,EAIzD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,SAAU,SAAS,EAAE;;;CAQ7C,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { ICartItem } from './types';
2
+ export declare function useCartStore<T extends ICartItem = ICartItem>(): {
3
+ items: T[];
4
+ };
5
+ export declare function useCartActions<T extends ICartItem = ICartItem>(): {
6
+ addToCart: (item: T) => void;
7
+ updateOrAddCart: (id: string, updates: Partial<T>) => void;
8
+ removeFromCart: (id: string) => void;
9
+ clearCart: () => void;
10
+ idGetter: (item: T) => string;
11
+ };
12
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/cart/hook.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;;EAkB3D;AACD,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;sBAGnC,CAAC;0BAKG,MAAM,WAAW,QAAQ,CAAC,CAAC;yBAK5B,MAAM;;qBAZV,CAAC;EA6B1B"}
@@ -1,5 +1,69 @@
1
- export * from './widget';
1
+ /**
2
+ * MFE Cart System - Simple and focused
3
+ *
4
+ * Storage Key Patterns:
5
+ * - Default: 'mfe_store_cart' (when no storageKey provided)
6
+ * - Custom: your custom key (when storageKey provided)
7
+ *
8
+ * Use different storage keys for different cart instances:
9
+ * - Main cart: useCart() // uses 'mfe_store_cart'
10
+ * - Wishlist: useCart('wishlist') // uses 'wishlist'
11
+ * - Temp cart: useCart('temp_cart') // uses 'temp_cart'
12
+ *
13
+ * Only 3 main parts:
14
+ * 1. Types - Use your existing ICartItem
15
+ * 2. Hooks - Get data and actions
16
+ * 3. Widget - Cart display component
17
+ */
2
18
  export * from './types';
3
- export * from './provider';
4
- export * from './subscriber';
19
+ export { CartWidget, createCartWidget } from './widget';
20
+ export * from './hook';
21
+ /**
22
+ * Simple usage:
23
+ *
24
+ * 1. Get cart data (default storage):
25
+ * const cart = useCart()
26
+ * console.log(cart.items, cart.summary)
27
+ *
28
+ * 2. Get cart data (custom storage):
29
+ * const cart = useCart('my_custom_cart_key')
30
+ * console.log(cart.items, cart.summary)
31
+ *
32
+ * 3. Perform actions:
33
+ * const actions = useCartActions()
34
+ * actions.addToCart({
35
+ * ProductId: '1',
36
+ * PricePackageId: 'pkg1',
37
+ * Amount: 1,
38
+ * ProductName: 'Product',
39
+ * Price: 99.99
40
+ * })
41
+ *
42
+ * 4. Show widget (default storage):
43
+ * Option A: With provider (recommended for standalone use)
44
+ * <CartWidgetWithProvider baseUrl={baseUrl} site="client" />
45
+ *
46
+ * Option B: Without provider (when provider exists at higher level)
47
+ * <CartWidget baseUrl={baseUrl} site="client" />
48
+ *
49
+ * 5. Show widget (custom storage):
50
+ * <CartWidgetWithProvider
51
+ * baseUrl={baseUrl}
52
+ * site="client"
53
+ * storageKey="my_custom_cart_key"
54
+ * />
55
+ *
56
+ * 6. Create preconfigured widgets:
57
+ * Option A: Widget only (needs provider)
58
+ * const MyCartWidget = createCartWidget({ baseUrl, site: "client" })
59
+ * <MyCartWidget />
60
+ *
61
+ * Option B: Widget with provider (standalone)
62
+ * const MyCartWidgetWithProvider = createCartWidgetWithProvider({
63
+ * baseUrl,
64
+ * site: "client",
65
+ * storageKey: "my_custom_cart_key" // optional
66
+ * })
67
+ * <MyCartWidgetWithProvider />
68
+ */
5
69
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,cAAc,SAAS,CAAA;AAEvB,cAAc,YAAY,CAAA;AAE1B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,cAAc,SAAS,CAAA;AAGvB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEvD,cAAc,QAAQ,CAAA;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG"}
@@ -11,6 +11,7 @@ export declare const cartContentClasses: {
11
11
  itemImg: string;
12
12
  itemTitle: string;
13
13
  itemPrice: string;
14
+ itemTag: string;
14
15
  };
15
16
  export declare const CartContentStyled: ComponentType<BoxProps>;
16
17
  //# sourceMappingURL=styled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/cart/styled.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAExD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,SAAS,CAyC7C,CAAA;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;CAU9B,CAAA;AAMD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,QAAQ,CA+DnD,CAAA"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/cart/styled.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAExD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,SAAS,CAyC7C,CAAA;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;CAW9B,CAAA;AAMD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,QAAQ,CAsEnD,CAAA"}
@@ -1,9 +1,11 @@
1
1
  import type { FC } from 'react';
2
- import type { IAppSiteBaseUrl, IAppSiteProps } from '../types';
2
+ import { IAppSiteBaseUrl, IAppSiteProps } from '../types';
3
3
  interface ICartWidgetBaseProps extends IAppSiteProps {
4
4
  baseUrl: IAppSiteBaseUrl;
5
+ /** Optional storage key to differentiate between different cart instances */
6
+ storageKey?: string;
5
7
  }
6
8
  export declare const CartWidget: FC<ICartWidgetBaseProps>;
7
- export default CartWidget;
8
9
  export declare const createCartWidget: (params: ICartWidgetBaseProps) => FC<Partial<ICartWidgetBaseProps>>;
10
+ export {};
9
11
  //# sourceMappingURL=widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/cart/widget.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAQ/B,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAG9D,UAAU,oBAAqB,SAAQ,aAAa;IAClD,OAAO,EAAE,eAAe,CAAA;CACzB;AAkHD,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,oBAAoB,CAe/C,CAAA;AACD,eAAe,UAAU,CAAA;AAEzB,eAAO,MAAM,gBAAgB,WAAY,oBAAoB,sCAI5D,CAAA"}
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/cart/widget.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAQ/B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGzD,UAAU,oBAAqB,SAAQ,aAAa;IAClD,OAAO,EAAE,eAAe,CAAA;IACxB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAqHD,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,oBAAoB,CAa/C,CAAA;AAED,eAAO,MAAM,gBAAgB,WAAY,oBAAoB,sCAI5D,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-shared",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "DinoCollab shared utilities and components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -106,7 +106,7 @@
106
106
  "@mui/icons-material": "5.17.1",
107
107
  "@mui/material": "5.17.1",
108
108
  "@mui/system": "5.17.1",
109
- "dinocollab-core": "2.0.11",
109
+ "dinocollab-core": "2.0.12",
110
110
  "react": "18.3.1",
111
111
  "react-dom": "18.3.1",
112
112
  "react-quill": "2.0.0",
@@ -1,2 +0,0 @@
1
- import{jsx as r,Fragment as e}from"react/jsx-runtime";import{useMemo as t}from"react";import{useMfeCartStore as n}from"dinocollab-core/mfe-shared";var o=function(o){var a=o.children,i=o.storageKey,c=t(function(){return{storageKey:i,idGetter:function(r){return r.ProductId}}},[i]);return n(c),r(e,{children:a})},a=function(e){var t=function(t){var n=t.children,a=t.storageKey;return r(o,{storageKey:a||e,children:n})};return t.displayName="CartProvider",t};export{o as CartProvider,a as createCartProvider,o as default};
2
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sources":["../../src/cart/provider.tsx"],"sourcesContent":["import { useMemo } from 'react'\r\nimport { useMfeCartStore } from 'dinocollab-core/mfe-shared'\r\nimport type { FC, PropsWithChildren } from 'react'\r\nimport type { ICartItem } from './types'\r\n\r\ninterface ICartProviderProps extends PropsWithChildren {\r\n storageKey?: string\r\n}\r\n\r\n/**\r\n * CartProvider - The main provider component that manages cart state\r\n * This component should be placed at a high level in your app to ensure\r\n * cart state is properly managed and synchronized across all components\r\n */\r\nexport const CartProvider = ({ children, storageKey }: ICartProviderProps) => {\r\n // Memoize the cart configuration to prevent re-renders\r\n const cartConfig = useMemo(() => ({ storageKey, idGetter: (item: ICartItem) => item.ProductId }), [storageKey])\r\n\r\n // This hook will act as the primary cart store (isPrimaryStore = true)\r\n // It manages the state and emits STATE_CHANGE events to other hooks\r\n useMfeCartStore<ICartItem>(cartConfig)\r\n\r\n // Provider doesn't render anything itself, just manages the state\r\n return <>{children}</>\r\n}\r\n\r\n/**\r\n * Factory function to create a CartProvider with predefined configuration\r\n */\r\nexport const createCartProvider = (defaultStorageKey?: string) => {\r\n const _CartProvider: FC<Partial<ICartProviderProps>> = ({ children, storageKey }) => (\r\n <CartProvider storageKey={storageKey || defaultStorageKey}>{children}</CartProvider>\r\n )\r\n _CartProvider.displayName = 'CartProvider'\r\n return _CartProvider\r\n}\r\n\r\nexport default CartProvider\r\n"],"names":["CartProvider","_ref","children","storageKey","cartConfig","useMemo","idGetter","item","ProductId","useMfeCartStore","_jsx","_Fragment","createCartProvider","defaultStorageKey","_CartProvider","_ref2","displayName"],"mappings":"uJAcaA,EAAe,SAAHC,GAAoD,IAA9CC,EAAQD,EAARC,SAAUC,EAAUF,EAAVE,WAEjCC,EAAaC,EAAQ,WAAA,MAAO,CAAEF,WAAAA,EAAYG,SAAU,SAACC,GAAe,OAAKA,EAAKC,SAAS,EAAE,EAAG,CAACL,IAOnG,OAHAM,EAA2BL,GAGpBM,EAAAC,EAAA,CAAAT,SAAGA,GACZ,EAKaU,EAAqB,SAACC,GACjC,IAAMC,EAAiD,SAApCC,GAAA,IAAuCb,EAAQa,EAARb,SAAUC,EAAUY,EAAVZ,WAAU,OAC5EO,EAACV,EAAY,CAACG,WAAYA,GAAcU,EAAoBX,SAAAA,GAC7D,EAED,OADAY,EAAcE,YAAc,eACrBF,CACT"}
@@ -1,2 +0,0 @@
1
- import{useEffect as o}from"react";import{useMfeCartData as e}from"dinocollab-core/mfe-shared";var r=function(r){var t=r.storageKey,a=r.onChange,n=e(t).items;return console.log("CartSubscriber items:",n),o(function(){console.log("Cart items changed:",n),a&&a(n)},[n,a]),null};export{r as CartSubscriber,r as default};
2
- //# sourceMappingURL=subscriber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscriber.js","sources":["../../src/cart/subscriber.tsx"],"sourcesContent":["import { useEffect } from 'react'\r\nimport { useMfeCartData } from 'dinocollab-core/mfe-shared'\r\nimport type { FC } from 'react'\r\nimport type { ICartItem } from './types'\r\n\r\nexport interface ICartSubscriberProps {\r\n storageKey?: string\r\n onChange?: (items: ICartItem[]) => void\r\n}\r\n\r\n/** CartSubscriber - Component listening to cart changes */\r\nexport const CartSubscriber: FC<ICartSubscriberProps> = ({ storageKey, onChange }) => {\r\n const { items } = useMfeCartData<ICartItem>(storageKey)\r\n console.log('CartSubscriber items:', items)\r\n\r\n useEffect(() => {\r\n console.log('Cart items changed:', items)\r\n if (onChange) {\r\n onChange(items)\r\n }\r\n }, [items, onChange])\r\n\r\n return null\r\n}\r\nexport default CartSubscriber\r\n"],"names":["CartSubscriber","_ref","storageKey","onChange","items","useMfeCartData","console","log","useEffect"],"mappings":"kGAWaA,EAA2C,SAA7BC,GAA0D,IAA1BC,EAAUD,EAAVC,WAAYC,EAAQF,EAARE,SAC7DC,EAAUC,EAA0BH,GAApCE,MAUR,OATAE,QAAQC,IAAI,wBAAyBH,GAErCI,EAAU,WACRF,QAAQC,IAAI,sBAAuBH,GAC/BD,GACFA,EAASC,EAEb,EAAG,CAACA,EAAOD,IAEJ,IACT"}
@@ -1,16 +0,0 @@
1
- import type { FC, PropsWithChildren } from 'react';
2
- interface ICartProviderProps extends PropsWithChildren {
3
- storageKey?: string;
4
- }
5
- /**
6
- * CartProvider - The main provider component that manages cart state
7
- * This component should be placed at a high level in your app to ensure
8
- * cart state is properly managed and synchronized across all components
9
- */
10
- export declare const CartProvider: ({ children, storageKey }: ICartProviderProps) => import("react/jsx-runtime").JSX.Element;
11
- /**
12
- * Factory function to create a CartProvider with predefined configuration
13
- */
14
- export declare const createCartProvider: (defaultStorageKey?: string) => FC<Partial<ICartProviderProps>>;
15
- export default CartProvider;
16
- //# sourceMappingURL=provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/cart/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAGlD,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,6BAA8B,kBAAkB,4CAUxE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,uBAAwB,MAAM,oCAM5D,CAAA;AAED,eAAe,YAAY,CAAA"}
@@ -1,10 +0,0 @@
1
- import type { FC } from 'react';
2
- import type { ICartItem } from './types';
3
- export interface ICartSubscriberProps {
4
- storageKey?: string;
5
- onChange?: (items: ICartItem[]) => void;
6
- }
7
- /** CartSubscriber - Component listening to cart changes */
8
- export declare const CartSubscriber: FC<ICartSubscriberProps>;
9
- export default CartSubscriber;
10
- //# sourceMappingURL=subscriber.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../../src/cart/subscriber.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;CACxC;AAED,2DAA2D;AAC3D,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,oBAAoB,CAYnD,CAAA;AACD,eAAe,cAAc,CAAA"}