dinocollab-shared 1.0.0 → 1.0.2

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.
@@ -0,0 +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};
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +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,2 +1,2 @@
1
- export{CartWidget,createCartWidget}from"./widget.js";export{CartProvider,createCartProvider}from"./provider.js";
1
+ export{CartWidget,createCartWidget}from"./widget.js";export{CartProvider,createCartProvider}from"./provider.js";export{CartSubscriber}from"./subscriber.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../src/cart/provider.tsx"],"sourcesContent":["import { ReactNode, useMemo } from 'react'\r\nimport type { FC, PropsWithChildren } from 'react'\r\nimport { useMfeCartStore } from 'dinocollab-core/mfe-shared'\r\nimport { 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(\r\n () => ({\r\n storageKey,\r\n idGetter: (item: ICartItem) => item.ProductId\r\n }),\r\n [storageKey]\r\n )\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,EACjB,WAAA,MAAO,CACLF,WAAAA,EACAG,SAAU,SAACC,GAAe,OAAKA,EAAKC,SAAS,EAC9C,EACD,CAACL,IAQH,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
+ {"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"}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
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,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 d}from"dinocollab-core/components";import{Badge as m,Typography as p,Divider as u,Button as h,Box as f,IconButton as v}from"@mui/material";import{useMfeCartData as C,useMfeCartActions as g,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";var I=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(m,{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(){return l(P,{children:[l("div",{className:E.header,children:[l(p,{variant:"h6",component:"span",sx:{flex:1},children:["Your Cart (",n.props.data.length," items)"]}),l(p,{variant:"h6",component:"span",children:["Total: $ ",n.props.data.reduce(function(r,e){return r+(e.Amount||0)},0).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;return l("div",{className:E.item,children:[a(d,{className:E.itemImg,src:n.props.baseUrl.client+(null===(e=r.Options)||void 0===e?void 0:e.PictureUrl),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!==(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!==(o=r.Amount)&&void 0!==o?o:0]}),l(p,{variant:"body1",sx:{fontSize:"14px",mb:"3px",color:"#818181"},children:["x",null!==(i=r.Amount)&&void 0!==i?i: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)}(),O=function(e){var n=C().items,t=g().removeFromCart;return a(I,r({data:n,onRemove:function(r){return t(r.ProductId)}},e))},T=function(e){var n=function(n){return a(O,r(r({},e),n))};return n.displayName="CartWidget",n};export{O as CartWidget,T as createCartWidget,O as default};
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};
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\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 <CartContentStyled>\r\n <div className={cartContentClasses.header}>\r\n <Typography variant='h6' component='span' sx={{ flex: 1 }}>\r\n Your Cart ({this.props.data.length} items)\r\n </Typography>\r\n <Typography variant='h6' component='span'>\r\n Total: $ {this.props.data.reduce((sum, item) => sum + (item.Amount || 0), 0).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 renderItem = (item: ICartItem) => (\r\n <div className={cartContentClasses.item}>\r\n <ImageWithFallback\r\n className={cartContentClasses.itemImg}\r\n src={this.props.baseUrl.client + item.Options?.PictureUrl}\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 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 <CartWidgetBase data={items} onRemove={(x) => removeFromCart(x.ProductId)} {...props} />\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","CartContentStyled","className","cartContentClasses","header","Typography","variant","sx","flex","reduce","sum","item","Amount","toFixed","Divider","items","map","x","i","renderItem","NoDataPanel","title","subTitle","height","footer","Button","MfeLink","primaryHref","baseUrl","client","secondaryHref","internal","site","endIcon","ShoppingCartCheckoutIcon","disabled","_item$Options","_item$ProductName","_item$Amount","_item$Amount2","ImageWithFallback","itemImg","src","Options","PictureUrl","fallbackSrc","alt","itemContent","itemTitle","noWrap","ProductName","Box","display","alignItems","gap","justifyContent","fontSize","mb","IconButton","size","_this$props$onRemove","_this$props","onRemove","call","RemoveIcon","target","setState","_inherits","Component","_createClass","CartWidget","useMfeCartData","removeFromCart","useMfeCartActions","_objectSpread","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 } 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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"}
@@ -0,0 +1,7 @@
1
+ import { ICartItem } from "./types";
2
+ export declare const convertStringToLinks: (text: string) => string[];
3
+ export declare const getTotalData: (data: ICartItem[]) => {
4
+ amount: number;
5
+ price: number;
6
+ };
7
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +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,4 +1,5 @@
1
1
  export * from './widget';
2
2
  export * from './types';
3
3
  export * from './provider';
4
+ export * from './subscriber';
4
5
  //# 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;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA"}
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 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/cart/provider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAIlD,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,6BAA8B,kBAAkB,4CAgBxE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,uBAAwB,MAAM,oCAM5D,CAAA;AAED,eAAe,YAAY,CAAA"}
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"}
@@ -0,0 +1,10 @@
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
@@ -0,0 +1 @@
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"}
@@ -17,5 +17,15 @@ export interface ICartItem<O = any> {
17
17
  /** The name of the product */
18
18
  ProductName?: string;
19
19
  Options?: O;
20
+ /** The picture URL associated with the product */
21
+ PictureUrl?: string;
22
+ /** The price for the product */
23
+ Price?: number;
24
+ /** The name of the price package */
25
+ PriceName?: string;
26
+ /** The color associated with the price, used for display purposes */
27
+ PriceColor?: string;
28
+ /** This will be the ID used to stream video or retrieve audio. */
29
+ MediaId?: string;
20
30
  }
21
31
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cart/types.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cart/types.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,OAAO,CAAC,EAAE,CAAC,CAAA;IAGX,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
@@ -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;AAE9D,UAAU,oBAAqB,SAAQ,aAAa;IAClD,OAAO,EAAE,eAAe,CAAA;CACzB;AA2GD,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,oBAAoB,CAK/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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-shared",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
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.10",
109
+ "dinocollab-core": "2.0.11",
110
110
  "react": "18.3.1",
111
111
  "react-dom": "18.3.1",
112
112
  "react-quill": "2.0.0",